//definimos pines
#define LED_ROJO 6
#define LED_AZUL 7
#define SW1 4
#define SW2 5
bool SistemaActivado = false;
int cuenta=0;
//15 espacios para guardar, guardaremos en un arreglo la secuencia
String secuencia[15];
bool sw1Pressed = false;
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
pinMode(LED_ROJO, OUTPUT);
pinMode(LED_AZUL, OUTPUT);
pinMode(SW1, INPUT_PULLUP);
pinMode(SW2, INPUT_PULLUP);
Serial.println("Sistema en espera");
}
void loop() {
//Verificar si el sistema aun no se ha activado y si se presiona SW1 por primera vez
if (!SistemaActivado && digitalRead(SW1) == LOW && !sw1Pressed) {//
delay(50);
sw1Pressed = true; // Marcar que SW1 fue presionado
}
//verifica si el sistema aun no se ha activado pero ya se presiono el SW1 por pirmera vez
if (!SistemaActivado && sw1Pressed && digitalRead(SW1) == HIGH) {
// Si SW1 fue presionado y luego soltado, activamos el sistema
Serial.println("Sistema activado, ingresar secuencia, máximo 15 accionamientos");
SistemaActivado = true;
sw1Pressed = false;
cuenta = 0;//reiniciamos cuenta
delay(20); //espera un rato para evitar que se encienda el led rojo al entrar muy rapido al siguiente if
}
//verifica si es sistema se ha activado y si la cuenta es menor a 16
if(SistemaActivado && cuenta<16){
if (digitalRead(SW1) == LOW) {//si se presiona el SW1 aumenta la cuenta
while (digitalRead(SW1) == LOW); // Espera a que se suelte el pulsador
delay(50);//debounce
digitalWrite(LED_AZUL, HIGH);
delay(100); // Duración del pulso
digitalWrite(LED_AZUL, LOW);
secuencia[cuenta] = "SW1";//guarda que SW1 se presiono
cuenta++;
}
if (digitalRead(SW2) == LOW) {//si se presiona el SW2 aumenta la cuenta
while (digitalRead(SW2) == LOW); // Espera a que se suelte el pulsador
delay(50); //debounce
digitalWrite(LED_ROJO, HIGH);
delay(100); // Duración del pulso
digitalWrite(LED_ROJO, LOW);
secuencia[cuenta] = "SW2";//guarda que SW2 se presiono
cuenta++;
}
}
//verifica si se ha activado el sistema y si la cuenta supero los 15
if (SistemaActivado && cuenta >= 15) {
Serial.println("Captura de secuencia completada");
Serial.println("Secuencia ingresada: ");
for (int i = 0; i < 15; i++) {
Serial.print(secuencia[i]);//imprime los 15 valores de la secuencia
if (i < 14) Serial.print(" - ");
}
Serial.println();//salto de linea
SistemaActivado = false;//reiniciamos sistema
Serial.println("Sistema en espera");
}
}
Loading
esp32-s3-devkitc-1
esp32-s3-devkitc-1