// Referencia del lenguaje: https://www.arduino.cc/reference/en/
/* Ejemplo de conexión a WIFI
#include <WiFi.h>
void setup() {
Serial.print("Connecting to WiFi");
WiFi.begin("Wokwi-GUEST", "", 6); // 6 es el canal WiFi. lo puedo omitir
while (WiFi.status() != WL_CONNECTED) {
delay(100);
Serial.print(".");
}
Serial.println(" Connected!");
}
*/
// Define dos array de constantes idicando los pines de los Reles y los Botones.
const byte Rele_Pins[] = {4, 16, 5, 18};
const byte Boton_Pins[] = {12, 14, 27, 26};
// Crea un array booleano donde almacenará el estado de los botones
bool Boton_State[] = {LOW, LOW, LOW, LOW};
void setup() {
byte i;
Serial.begin(115200);
// Inicializa Reles y Botones
for (i = 0; i < 4; i++) {
pinMode(Rele_Pins[i], OUTPUT);
digitalWrite(Rele_Pins[i], LOW);
pinMode(Boton_Pins[i], INPUT_PULLDOWN);
}
Serial.println("--- Setup Finalizado ---");
}
// Verifica cada botón si fue presionado.
// Si algún botón fue presionado, espera a que se libere la presión
// y retorna el indice al botón en cuestión.
// Si ningún botón se presiona, devuelve 255.
byte LeeBotones() {
for (byte i = 0; i < 4; i++) {
if (digitalRead(Boton_Pins[i]) == HIGH) {
while (digitalRead(Boton_Pins[i]) == HIGH) {
delay(100);
}
return i;
}
}
return 255;
}
/**
Get the user's input and compare it with the expected sequence.
*/
/*
bool checkUserSequence() {
for (int i = 0; i < gameIndex; i++) {
byte expectedButton = gameSequence[i];
byte actualButton = readButtons();
lightLedAndPlayTone(actualButton);
if (expectedButton != actualButton) {
return false;
}
}
return true;
}
*/
void loop() {
byte i;
byte BotonPresionado = 255;
BotonPresionado = LeeBotones();
if (BotonPresionado != 255) {
Serial.print("Botón presionado ");
Serial.print(BotonPresionado);
Serial.print(" - Estado Actual: ");
Serial.print(Boton_State[BotonPresionado]);
if(Boton_State[BotonPresionado] == LOW) {
Boton_State[BotonPresionado] = HIGH;
} else {
Boton_State[BotonPresionado] = LOW;
}
Serial.print(" - Nuevo Estado: ");
Serial.println(Boton_State[BotonPresionado]);
for (i = 0; i < 4; i++) {
Serial.print("Pin en estudio [");
Serial.print(i);
Serial.print("] - Estado Actual: ");
Serial.println(Boton_State[i]);
}
Serial.println("-------");
}
delay(10); // this speeds up the simulation
}