//Curso: 3A1 //Fecha: 11/03/2023 #include <LiquidCrystal_I2C.h> // Incluyo libreria de la lcd con modulo I2C #include <Keypad.h> // Incluyo la libreria de el teclado LiquidCrystal_I2C lcd(0x27,16,2); // Configuracion de el tamaño de la lcd const byte filas = 4; // Indico filas const byte columnas = 4; // Indico columnas char keys[filas][columnas] = { // Orden de las teclas {'1','2','3','A'}, {'4','5','6','B'}, {'7','8','9','C'}, {'*','0','#','D'}, }; byte pinesFilas[filas] = {12, 8, 7, 6}; // Indico los pines de conexion de las filas byte pinesColumnas[columnas] = {5,4,3,2}; // Indico los pines de conexion de ls columnas Keypad keypad = Keypad(makeKeymap(keys), pinesFilas, pinesColumnas, filas, columnas); // Declaro la configuracion del teclado char key; //se almacena la tecla aplastada const byte CR = 9; //Pin conectado para el color rojo CR const byte CG = 10; //Pin conectado para el color verde CG const byte CB = 11; //Pin conectado para el color azul CB int VR = 0; //Variable para guardar el valor escrito en el teclado para el color rojo int VG = 0; //Variable para guardar el valor escrito en el teclado para el color verde int VB = 0; //Variable para guardar el valor escrito en el teclado para el color azul int A = 0; //variable para guardar el valor de rojo int E = 0; //variable para guardar el valor de verde int I = 0; //variable para guardar el valor de azul int final = 0; //variable para los bucles int dato = 0; //variable para almacenar el numero y guardarlo como centena,decena,unidad void setup() { Serial.begin(9600); // inicia comunicacion serial lcd.init(); //Inicio la lcd lcd.backlight(); //Enciendo luz de fondo //Mensaje acerca del programa, apellido y curso lcd.setCursor(0,0); lcd.print("Manejo teclado y"); lcd.setCursor(0,1); lcd.print("LED RGB"); lcd.setCursor(8,1); lcd.print("Loja 3A1"); delay(3000); lcd.clear(); } Página 1 Insumo practica teclado void loop() { //Se muestra el valor inicial almacenado en el color rojo VR lcd.setCursor(0, 0); lcd.print(VR); //Se muestra el valor inicial almacenado en el color verde VG lcd.setCursor(6, 0); lcd.print(VG); //Se muestra el valor inicial almacenado en el color azul VB lcd.setCursor(12, 0); lcd.print(VB); lcd.setCursor(3,1); lcd.print("Dato:"); //Palabra para indicar donde aparecera el valor de dato while (1) { key = keypad.getKey(); // Obtengo la tecla aplastada if (key >= '0' && key <= '9') { // Condicion para detectar solo si se ingreso un numero dato = dato * 10 + (key - '0'); // Formula para obtener el valor ingresado mediante el teclado lcd.setCursor(8, 1); // Escribir en la posicion 8 de la fila 2 lcd.print(dato); //Imprimo el valor de dato en la lcd final++; } if (final == 3) { //Condicion para que solo me deje ingresar 3 numeros o teclas. break; // Se rompe el bucle } } while (1) { key = keypad.getKey(); // Deteccion de la tecla aplastada if (key == 'A') { // Condicion si se presiona la tecla A(rojo) lcd.clear(); // Borrar lo escrito en la lcd lcd.setCursor(1, 0); lcd.print(VR); //Imprimo en la lcd el valor de dato que se guardo en VR lcd.clear(); // Borrar lo escrito en la lcd A = 0; A = dato; //Guardar el valor de dato en A VR = A; // Guardar en VR el valor de A analogWrite(CR,VR); //Escritura analogica de VR en el pin 9(CR) dato = 0; break; // Se rompe el bucle // return; } else if (key == 'B') { // Condicion si se presiona la tecla B(verde) lcd.clear(); // Borrar lo escrito en la lcd lcd.setCursor(6,0); lcd.print(VG); //Imprimo en la lcd el valor de dato que se guardo en VG lcd.clear(); // Borrar lo escrito en la lcd E = 0; E = dato; //Guardar el valor de dato en E Página 2 Insumo practica teclado VG = E; //Guardar en VG el valor de E analogWrite(CG,VG); //Escritura analogica de VG en el pin 10(CG) dato = 0; break; // Se rompe el bucle // return; } else if (key == 'C') { // Condicion si se presiona la tecla C(azul) lcd.clear(); // Borrar lo escrito en la lcd lcd.setCursor(12,0); lcd.print(VB); //Imprimo en la lcd el valor de dato que se guardo en VB lcd.clear(); // Borrar lo escrito en la lcd I = 0; I = dato; //Guardar el valor de dato en I VB = I; //Guardar en VB el valor de I analogWrite(CB,VB); //Escritura analogica de VB en el pin 11(CB) dato=0; break; // Se rompe el bucle // return; } } dato = 0; //Variables para regresar al inicio del programa final=0; }