Arduino en español
Circuitos con Arduino - Juan Antonio Villalpando
-- Tutorial de iniciación a Arduino --
Volver al índice del tutorial
____________________________
11A.- Juego de luces (II).
- El siguiente código utiliza 4 LED situados en los pines 2, 3, 4 y 5
- Y 3 Pulsadores situados en 10, 11 y 12.
- El dibujo siguiente no corresponde a este código, debemos poner otro Pulsador y cambiar de sitio los dos que ya están puestos.
__________________________________________
- Código 2.
- Este tipo de código tiene el inconveniente que debe realizar una pasada de la función void, antes de comprobar si se ha vuelto a pulsar otro Pulsador.
- En caso de pulsar varios Pulsadores, se tomará la función correspondiente al último número.
Código |
/*
Juan A. Villalpando
kio4.com
agosto 2018
*/
int LED2 = 2;
int LED3 = 3;
int LED4 = 4;
int LED5 = 5;
int Pulsa10 = 10;
int Pulsa11 = 11;
int Pulsa12 = 12;
int valor10;
int valor11;
int valor12;
int juego = 0;
void setup(){
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(LED4, OUTPUT);
pinMode(LED5, OUTPUT);
pinMode(Pulsa10, INPUT);
pinMode(Pulsa11, INPUT);
pinMode(Pulsa12, INPUT);
}
void loop() {
valor10 = digitalRead(Pulsa10);
valor11 = digitalRead(Pulsa11);
valor12 = digitalRead(Pulsa12);
if(valor10 == HIGH) {juego = 1;}
if(valor11 == HIGH) {juego = 2;}
if(valor12 == HIGH) {juego = 3;}
if (juego == 1) {juego1();}
if (juego == 2) {juego2();}
if (juego == 3) {juego3();}
}
void juego1() {
digitalWrite(LED2, HIGH);
delay(500);
digitalWrite(LED3, HIGH);
delay(500);
digitalWrite(LED4, HIGH);
delay(500);
digitalWrite(LED5, HIGH);
delay(500);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
digitalWrite(LED4, LOW);
digitalWrite(LED5, LOW);
}
void juego2() {
digitalWrite(LED2, HIGH);
digitalWrite(LED3, HIGH);
digitalWrite(LED4, HIGH);
digitalWrite(LED5, HIGH);
delay(500);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
digitalWrite(LED4, LOW);
digitalWrite(LED5, LOW);
delay(500);
}
void juego3() {
digitalWrite(LED2, HIGH);
digitalWrite(LED3, LOW);
digitalWrite(LED4, LOW);
digitalWrite(LED5, HIGH);
delay(500);
digitalWrite(LED2, LOW);
digitalWrite(LED3, HIGH);
digitalWrite(LED4, HIGH);
digitalWrite(LED5, LOW);
delay(500);
}
|
__________________________________________
- Código 2.
- En este otro código antes de cada delay se comprueba si se ha pulsado algún Pulsador.
- No es una buena técnica, pero podemos probarla.
- La técnica más eficiente sería utilizar lo que se denomina INTERRUPCIONES, Arduino UNO, tiene dos terminales de interrupciones, el terminal 2 y el 3.
Código |
/*
Juan A. Villalpando
kio4.com
agosto 2018
*/
int LED2 = 2;
int LED3 = 3;
int LED4 = 4;
int LED5 = 5;
int Pulsa10 = 10;
int Pulsa11 = 11;
int Pulsa12 = 12;
int valor10;
int valor11;
int valor12;
int juego = 0;
void setup(){
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(LED4, OUTPUT);
pinMode(LED5, OUTPUT);
pinMode(Pulsa10, INPUT);
pinMode(Pulsa11, INPUT);
pinMode(Pulsa12, INPUT);
}
void loop() {
comprobar();
}
void comprobar (){
valor10 = digitalRead(Pulsa10);
valor11 = digitalRead(Pulsa11);
valor12 = digitalRead(Pulsa12);
if(valor10 == HIGH) {juego = 1;}
if(valor11 == HIGH) {juego = 2;}
if(valor12 == HIGH) {juego = 3;}
if (juego == 1) {juego1();}
if (juego == 2) {juego2();}
if (juego == 3) {juego3();}
}
void juego1() {
digitalWrite(LED2, HIGH);
comprobar();
delay(500);
digitalWrite(LED3, HIGH);
comprobar();
delay(500);
digitalWrite(LED4, HIGH);
comprobar();
delay(500);
digitalWrite(LED5, HIGH);
comprobar();
delay(500);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
digitalWrite(LED4, LOW);
digitalWrite(LED5, LOW);
}
void juego2() {
digitalWrite(LED2, HIGH);
digitalWrite(LED3, HIGH);
digitalWrite(LED4, HIGH);
digitalWrite(LED5, HIGH);
comprobar();
delay(500);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
digitalWrite(LED4, LOW);
digitalWrite(LED5, LOW);
comprobar();
delay(500);
}
void juego3() {
digitalWrite(LED2, HIGH);
digitalWrite(LED3, LOW);
digitalWrite(LED4, LOW);
digitalWrite(LED5, HIGH);
comprobar();
delay(500);
digitalWrite(LED2, LOW);
digitalWrite(LED3, HIGH);
digitalWrite(LED4, HIGH);
digitalWrite(LED5, LOW);
comprobar();
delay(500);
} |
_________________
- Propuestas.
- Diseña otros juego de luces. Utiliza más pulsadores.
________________________________
|