Buenos días, quiero hacer un juego donde haya tres leds de tres colores distintos (rojo, amarillo y verde). Los leds deben encenderse cada vez más rapido y de forma aleatoria. Hay dos jugadores y tres botones para cada jugador (uno por cada color). La idea es que cuando el led rojo se encienda, los jugadores deberán pulsar su respetivo botón rojo para sumar puntos. Si pulsan el botón correcto, el led debe apagarse. Si mientras está encendido el led rojo (por ejemplo), el jugador 1 pulsa el boton verde, sus puntuación baja. El tiempo del juego irá indicado en un LCD de 16x2, así como la puntuación de cada jugador. También habrá un botón para pausar y activar el tiempo. Me gustaría, por último, que cuando el tiempo llegue a 00:00, los tres leds se enciendan a la vez.
De momento llevo este programa, pero voy un poco perdido:
#include <LiquidCrystal.h>
LiquidCrystal lcd(0, 1, 2, 3, 4, 5);
int ledrojo=6;
int ledverde=7;
int ledamarillo=8;
int botonrojo1=9;
int botonrojo2=10;
int botonverde1=11;
int botonverde2=12;
int botonamarillo1=13;
int botonamarillo2=14;
int botontiempo=15;
int i=0;
unsigned long treal=0;
unsigned long tactualizado=0;
#include "Countimer_h" // ARDUINO NO LO RECONOCE
Countimer tDown
void setup()
{
pinMode(ledverde,OUTPUT);
pinMode(ledrojo,OUTPUT);
pinMode(ledamarillo,OUTPUT);
pinMode(botonrojo1,INPUT);
pinMode(botonrojo2,INPUT);
pinMode(botonverde1,INPUT);
pinMode(botonverde2,INPUT);
pinMode(botonamarillo1,INPUT);
pinMode(botonamarillo2,INPUT);
pinMode(botontiempo,INPUT);
lcd.begin(16, 2);
lcd.setCursor(5,0);
lcd.print("TIEMPO");
lcd.setCursor ( 6, 1 );
lcd.print("03:00");
delay(1000);
randomSeed(analogRead(0));
i= random(6,8);
tDown.setCounter(0,0,20, tDown, refreshClock, onComplete);
tDown.setInterval(refreshClock,1000);
}
void loop()
{
tiempo();
puntos();
}
void tiempo()
{
if(digitalRead(botontiempo)==LOW);
{tDown.stop();}
if(digitalRead(botontiempo)==HIGH);
{tDown.run();}
}
void refreshClock()
{
lcd.setCursor(6,1);
lcd.print(tDown.getCurrentTime());
}
void onComplete(){
lcd.setCursor(6,1);
lcd.print("00:00");
digitalWrite(ledrojo=HIGH);
digitalWrite(ledverde=HIGH);
digitalWrite(ledamarillo=HIGH);
}
void puntos(){
lcd.setCursor(0,1);
lcd.print(puntosj1);
lcd.setCursor(0,0);
lcd.print("J1");
lcd.setCursor(14,1);
lcd.print(puntosj2);
lcd.setCursor(14,0);
lcd.print("J2");
if(digitalWrite(ledrojo)==HIGH)
{if(digitalRead(botonrojo1)==HIGH;{
(digitalWrite(ledrojo)==LOW);
puntosj1++;
lcd.setCursor(0,1);
lcd.print(puntosj1);}
else
{if(digitalRead(botonrojo2)==HIGH;{
(digitalWrite(ledrojo)==LOW);
puntosj2++;
lcd.setCursor(14,1);
lcd.print(puntosj2);}
if(digitalWrite(ledverde)==HIGH)
{if(digitalRead(botonverde1)==HIGH;{
(digitalWrite(ledverde)==LOW);
puntosj1++;
lcd.setCursor(0,1);
lcd.print(puntosj1);}
else
{if(digitalRead(botonverde2)==HIGH;{
(digitalWrite(ledverde)==LOW);
puntosj2++;
lcd.setCursor(14,1);
lcd.print(puntosj2);}
if(digitalWrite(ledamarillo)==HIGH)
{if(digitalRead(botonamarillo1)==HIGH;{
(digitalWrite(ledamarillo)==LOW);
puntosj1++;
lcd.setCursor(0,1);
lcd.print(puntosj1);}
else
{if(digitalRead(botonamarillo2)==HIGH;{
(digitalWrite(ledamarillo)==LOW);
puntosj2++;
lcd.setCursor(14,1);
lcd.print(puntosj2);}
if(digitalWrite(ledrojo)or(ledverde==HIGH)
{if(digitalRead(botonamarillo1)==HIGH;{
(digitalWrite(ledrojo)or(ledverde)==LOW);
puntosj1--;
lcd.setCursor(0,1);
lcd.print(puntosj1);}
else
{if(digitalRead(botonamarillo2)==HIGH;{
(digitalWrite(ledrojo)or(ledverde)==LOW);
puntosj2--;
lcd.setCursor(14,1);
lcd.print(puntosj2);}
if(digitalWrite(ledamarillo)or(ledverde==HIGH)
{if(digitalRead(botonrojo1)==HIGH;{
(digitalWrite(ledamarillo)or(ledverde)==LOW);
puntosj1--;
lcd.setCursor(0,1);
lcd.print(puntosj1);}
else
{if(digitalRead(botonrojo2)==HIGH;{
(digitalWrite(ledamarillo)or(ledverde)==LOW);
puntosj2--;
lcd.setCursor(14,1);
lcd.print(puntosj2);}
if(digitalWrite(ledamarillo)or(ledrojo==HIGH)
{if(digitalRead(botonverde1)==HIGH;{
(digitalWrite(ledamarillo)or(ledrojo)==LOW);
puntosj1--;
lcd.setCursor(0,1);
lcd.print(puntosj1);}
else
{if(digitalRead(botonverde2)==HIGH;{
(digitalWrite(ledamarillo)or(ledrojo)==LOW);
puntosj2--;
lcd.setCursor(14,1);
lcd.print(puntosj2);}
}
[code]