// las constantes no cambiarán. Se utilizan aquí para// establecer números de PIN: const byte buttonPin1 = 6; // el número del pin del pulsadorconst byte buttonPin2 = 5;const byte ResetPin = 3; bloqueo de bytes constanteLED = 13; byte constante ledRED = 12; byte constante ledAZUL = 10; byte constante ledVERDE = 8; // el número del zumbador de bytes constante del pin LED = 4; índice int = 2; // para indicar qué led debe encenderseint index2 = 0; // las variables cambiarán:// variable para leer el byte de estado del botón pulsador buttonState1 = 0;byte lastButtonState1 = 0; byte botónState2 = 0; byte últimoButtonState2 = 0; byte buttonStateReset = 0; byte lastResetState = 0; interruptor largo sin firmarMillis;bloqueo largo sin firmarMillis; //************************************************ *********************Configuración vacía(){ pinMode(LED de bloqueo, SALIDA); pinMode(ledROJO, SALIDA); // inicializa el pin LEDRED como salida digitalWrite(ledRED, HIGH); // Al iniciar el LED 1, en pinMode(ledBLUE, OUTPUT); escritura digital (ledAZUL, BAJO); pinMode(ledVERDE, SALIDA); escritura digital (ledVERDE, BAJO); pinMode(zumbador, SALIDA); // Establece el zumbador – pin 4 como salida pinMode(buttonPin1, INPUT); // inicializa el pin del pulsador como entrada: lastButtonState1 = digitalRead(buttonPin1); pinMode(botónPin2, ENTRADA); lastButtonState2 = digitalRead(buttonPin2); pinMode(ResetPin, ENTRADA); lastResetState = digitalRead(ResetPin); ningún tono (zumbador); // Detener sonido… }//cerrando la configuración vacía() //********************************* ***********************************bucle vacío(){ //****** ***************************** //Verifique si hay un código de bloqueo, el LED de bloqueo normalmente parpadeará a 1 Hz si (millis( ) – bloqueandoMillis >= 500) { bloqueandoMillis = milis(); escritura digital (LED de bloqueo,! DigitalRead (LED de bloqueo)); } //************************************ //para evitar rebotes, verifique los interruptores cada 50 milisegundos si (millis() – cambiarMillis >= 50) { cambiarMillis = milis(); // restablecer el tiempo // comprobar los interruptores checkSwitches(); } //************************************ //el código sin bloqueo va aquí //*** ******************************** }//cerrando el bucle vacío() //******* ************************************************** ***********void checkSwitches(){ //********************************* **** // lee el estado del valor del botón pulsador: buttonState1 = digitalRead(buttonPin1); if (últimoEstadoBotón1! = EstadoBotón1) { últimoEstadoBotón1 = EstadoBotón1; //actualizar al nuevo estado // si es así, el estado del botón está ALTO/presionado: if (estadodelbotón1 == ALTO) // el botón es 1 { index++; if (índice > 2) { índice = 0; } cambiar (índice) { caso 0: digitalWrite(ledBLUE, HIGH); // enciende el LED (ALTO es el nivel de voltaje) digitalWrite(ledRED, LOW); escritura digital (ledVERDE, BAJO); escritura digital (zumbador, 0); // Interruptor presionado, timbre activado (timbre, 100); // Enviar señal de sonido de 1KHz… delay(100); // …durante 1 segundo noTone(zumbador); // Detener sonido… romper; caso 1: escritura digital (ledAZUL, BAJO); escritura digital (ledROJO, BAJO); escritura digital (ledVERDE, ALTO); escritura digital (zumbador, 0); // Interruptor presionado, timbre activado (timbre, 100); // Enviar señal de sonido de 1KHz… delay(100); // …durante 1 segundo noTone(buzzer); // Detener sonido… romper; caso 2: escritura digital (ledAZUL, BAJO); escritura digital (ledRED, ALTA); escritura digital (ledVERDE, BAJO); tono(zumbador, 100); // Enviar señal de sonido de 1KHz… delay(100); // …durante 1 segundo noTone(buzzer); // Detener sonido… romper; }//Índice del interruptor de cierre }//Botón de cierre1 }//FIN de if (lastButtonState!= ButtonState) //************************* ********** // lee el estado del valor del botón pulsador: buttonState2 = digitalRead(buttonPin2); if (últimoEstadoBotón2! = EstadoBotón2) { últimoEstadoBotón2 = EstadoBotón2; //actualizar al nuevo estado // si es así, el botónState2 está ALTO/presionado: if (buttonState2 == ALTO) // el botón es 2 { index–; si (índice < 0) { índice = 2; } cambiar (índice) { caso 0: digitalWrite(ledBLUE, HIGH); // enciende el LED (ALTO es el nivel de voltaje) digitalWrite(ledRED, LOW); escritura digital (ledVERDE, BAJO); escritura digital (zumbador, 0); // Interruptor presionado, timbre activado (timbre, 100); // Enviar señal de sonido de 1KHz... delay(100); // ...durante 1 segundo noTone(zumbador); // Detener sonido... romper; caso 1: escritura digital (ledAZUL, BAJO); escritura digital (ledROJO, BAJO); escritura digital (ledVERDE, ALTO); escritura digital (zumbador, 0); // Interruptor presionado, timbre activado (timbre, 100); // Enviar señal de sonido de 1KHz... delay(100); // ...durante 1 segundo noTone(zumbador); // Detener sonido... romper; caso 2: escritura digital (ledAZUL, BAJO); escritura digital (ledRED, ALTA); escritura digital (ledVERDE, BAJO); tono(zumbador, 100); // Enviar señal de sonido de 1KHz... delay(100); // ...durante 1 segundo noTone(buzzer); // Detener sonido... romper; }//cerrando el índice del interruptor }//FIN de if (buttonState2 == HIGH) }//FIN de if (lastButtonState2 != buttonState2) //****************** ***************** // lee el estado del valor del botón pulsador: buttonStateReset = digitalRead(ResetPin); if (lastResetState! = buttonStateReset) { lastResetState = buttonStateReset; //actualizar al nuevo estado if (buttonStateReset == HIGH) { digitalWrite(buzzer, 0); // Interruptor presionado, timbre activado (timbre, 100); // Enviar señal de sonido de 1KHz... delay(200); // ...durante 1 segundo noTone(buzzer); }// cerrando buttonStateReset }//END de if (lastResetState != buttonStateReset) }// cerrando void checkSwitches() //*********************** **********************************************// crédito: https://forum.arduino.cc/t/playing-with-push-button-inputs-and-output-led-s/584213/12// publicado con fines de aprendizaje