//Generar un algoritmo para encender un led con la tecla 1 y apagarlo de manera continua
//con la tecla 2. Emplear un teclado matricial de 4x4 (Membrana simple filas, columnas)
#include <Wire.h>
#include <Keypad.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4);
const uint8_t filas = 4; //Asignar cuatro filas
const uint8_t columnas = 4; //Asignar cuatro columnas
int led1 = 12; //pin de la ESP led
int led2 = 13; //pin de la ESP led
int led3 = 14; //pin de la ESP led
int led4 = 27; //pin de la ESP led
int led5 = 26; //pin de la ESP led
int led6 = 25; //pin de la ESP led
int led7 = 33; //pin de la ESP led
int led8 = 32; //pin de la ESP led
int led9 = 0; //pin de la ESP led
int leds[] = {led1, led2, led3, led6, led5, led4, led7, led8, led9};
char Keys [filas] [columnas] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
uint8_t filaspin [filas] = {19, 18, 5, 17}; //TX
uint8_t columnaspin [columnas] = {16, 4, 2, 15}; //16 RX2
Keypad teclado = Keypad(makeKeymap(Keys), filaspin, columnaspin, filas, columnas);
void apagar() {
digitalWrite(led2, LOW);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
digitalWrite(led6, LOW);
digitalWrite(led7, LOW);
digitalWrite(led9, LOW);
digitalWrite(led1, LOW);
digitalWrite(led8, LOW);
digitalWrite(led3, LOW);
}
void setup() {
Serial.begin(115200);
// Configurar todos los LEDs como salida
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
pinMode(led6, OUTPUT);
pinMode(led7, OUTPUT);
pinMode(led8, OUTPUT);
pinMode(led9, OUTPUT);
digitalWrite(led2, LOW);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
digitalWrite(led6, LOW);
digitalWrite(led7, LOW);
digitalWrite(led9, LOW);
digitalWrite(led1, LOW);
digitalWrite(led8, LOW);
digitalWrite(led3, LOW);
lcd.init();
lcd.backlight(); // Encender la retroiluminación de la pantalla
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("ESPERANDO SECUENCIA");
}
void loop() {
char key = teclado.getKey();
if (key) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Tecla presionada: ");
// lcd.setCursor(0, 1);
lcd.print(key);
if (key == '#') {
lcd.setCursor(3, 2);
lcd.print("SECUENCIA 4");
for (int j = 0; j < 9; j++) {
digitalWrite(leds[j], HIGH);
delay(300);
digitalWrite(leds[j], LOW);
delay(200);
digitalWrite(leds[j], HIGH);
if ( j == 9) {
delay(10);
break;
}
}
}
if ( key == '0') {
apagar();
}
if (key == 'B') {
for (int j = 9; j > 0; j--) {
digitalWrite(leds[j], HIGH);
delay(300);
digitalWrite(leds[j], LOW);
delay(200);
digitalWrite(leds[j], HIGH);
if ( j == 0) {
delay(10);
break;
}
}
}
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("ESPERANDO SECUENCIA");
lcd.setCursor(4, 2);
lcd.print("OPRIMA OTRA");
lcd.setCursor(4, 3);
lcd.print("++OPCION++");
}
}