Documentos de Académico
Documentos de Profesional
Documentos de Cultura
6 8-Desafío+Ajedrez
6 8-Desafío+Ajedrez
CURSO DE ARDUINO 2
Desafío Ajedrez
OBJETIVO PROPUESTO
CIRCUITO PROPUESTO
Alarma
Blancas
Negras
SOLUCION DE LA PROGRAMACIÓN
int ajedrez=0;
//0=en espera
//1=resta tiempo de negras
//2=resta tiempo de blancas
//3=fin del juego, alerta
int hora_blancas=1,minuto_blancas=0,segundo_blancas=0;
int hora_negras=1,minuto_negras=0,segundo_negras=0;
void setup()
{
pinMode(pulsador_blancas,INPUT_PULLUP);
pinMode(pulsador_negras,INPUT_PULLUP);
pinMode(led,OUTPUT);
lcd.begin(16,2);
lcd.setCursor(0,0);
lcd.print("BIENVENIDOS");
lcd.setCursor(0,1);
lcd.print("AL JUEGO");
delay(2000);
lcd.clear();
}
void loop()
{
switch(ajedrez)
{
// se queda esperando a que se presione el pulsador
case 0:
lcd.setCursor(0,0);
lcd.print("Jub-B Jug-N");
muestra_reloj();
if (digitalRead(pulsador_blancas)==LOW )
{
ajedrez=1;
}
muestra_reloj();
if (digitalRead(pulsador_blancas)==LOW )
{
ajedrez=1;
}
muestra_reloj();
break;
segundo_negras--;
if (segundo_negras<0)
{
segundo_negras=59;
minuto_negras--;
if (minuto_negras<0)
{
minuto_negras=59;
hora_negras--;
if (hora_negras<0)
{
ajedrez=3;
}
}
}
if (digitalRead(pulsador_negras)==LOW )
{
ajedrez=2;
}
muestra_reloj();
delay (500);
if (digitalRead(pulsador_negras)==LOW )
{
ajedrez=2;
}
muestra_reloj();
delay (500);
break;
segundo_blancas--;
if (segundo_blancas<0)
{
segundo_blancas =59;
minuto_blancas --;
if (minuto_blancas <0)
{
minuto_blancas =59;
hora_blancas --;
if (hora_blancas <0)
{
ajedrez=3;
}
}
}
if (digitalRead(pulsador_blancas)==LOW )
{
ajedrez=1;
}
muestra_reloj();
delay (500);
if (digitalRead(pulsador_blancas)==LOW )
{
ajedrez=1;
}
muestra_reloj();
delay (500);
break;
digitalWrite(led, HIGH);
delay(500);
digitalWrite(led, LOW);
delay(500);
break;
}
}
void muestra_reloj()
{
lcd.setCursor(0, 1);
lcd.print(hora_blancas);
lcd.print(":");
lcd.print(minuto_blancas);
lcd.print(":");
lcd.print(segundo_blancas);
lcd.print("/");
lcd.print(hora_negras);
lcd.print(":");
lcd.print(minuto_negras);
lcd.print(":");
lcd.print(segundo_negras);
lcd.print(" ");
}
int ajedrez=0;
Creamos una variable llamada "ajedrez" que servirá para controlar el flujo
del programa en diferentes estados.
int hora_blancas=1,minuto_blancas=0,segundo_blancas=0;
int hora_negras=1,minuto_negras=0,segundo_negras=0;
Definimos las variables para almacenar el tiempo de juego de los jugadores
blancos y negros (horas, minutos y segundos), iniciando con un tiempo de 1
hora.
void setup()
{
pinMode(pulsador_blancas,INPUT_PULLUP);
pinMode(pulsador_negras,INPUT_PULLUP);
pinMode(led,OUTPUT);
lcd.begin(16,2);
lcd.setCursor(0,0);
lcd.print("BIENVENIDOS");
lcd.setCursor(0,1);
lcd.print("AL JUEGO");
delay(2000);
lcd.clear();
}
En la función setup(), configuramos los pines de los pulsadores y el LED
como entradas o salidas, y configuramos el display LCD para 16 columnas y 2
filas. Luego mostramos un mensaje de bienvenida en el display y lo
limpiamos después de 2 segundos.
void loop()
{
switch(ajedrez)
{
// se queda esperando a que se presione el pulsador
case 0:
lcd.setCursor(0,0);
lcd.print("Jub-B Jug-N");
muestra_reloj();
if (digitalRead(pulsador_blancas)==LOW)
{
ajedrez=1;
}
muestra_reloj();
if (digitalRead(pulsador_blancas)==LOW)
{
ajedrez=1;
}
muestra_reloj();
break;
void muestra_reloj()
{
lcd.setCursor(0, 1);
lcd.print(hora_blancas);
lcd.print(":");
lcd.print(minuto_blancas);
lcd.print(":");
lcd.print(segundo_blancas);
lcd.print("/");
lcd.print(hora_negras);
lcd.print(":");
lcd.print(minuto_negras);
lcd.print(":");
lcd.print(segundo_negras);
lcd.print(" ");
}
La función muestra_reloj() muestra en el display el tiempo actual de ambos
jugadores en formato "hh:mm:ss/hh:mm:ss". Los valores de tiempo son
actualizados en cada caso de la función loop().
//FIN