Paso 8: Concepto: libro de cocina de RGB
Si recuerdas la escena de indiana jones donde él roba y antiguo artefacto y reemplaza con arena, este juego se basa en el mismo principio. El jugador debe robar un objeto de un color específico y sustituirla por un objeto del mismo valor RGB. Si no consigues dentro de 500ms el LED rojo de alarma se apagará.
Este código se basa en la búsqueda de lo que es un específico valor RGB de un objeto, y luego asegurarse de que si el valor es diferente de este valor, entonces el LED se enciende.
Conceptualmente es así:
LEER COLORES
Si {el color no es el mismo como objeto) {}
encender LED;}
Else {}
Apagar LED;}
Código real:
int s0 = 3, s1 = 4, s2 = 5, s3 = 6;
int bandera = 0;
int contador = 0;
País de int = 0, countG = 0, countB = 0;
void setup()
{
Serial.Begin(9600);
pinMode(s0,OUTPUT);
pinMode(s1,OUTPUT);
pinMode(s2,OUTPUT);
pinMode(s3,OUTPUT);
pinMode(8,OUTPUT);
}
void TCS()
{
digitalWrite(s1,HIGH);
digitalWrite(s0,LOW);
Bandera = 0;
attachInterrupt (0, ISR_INTO, cambio);
timer2_init();
}
void ISR_INTO()
{
contador ++;
}
void timer2_init(void)
{
TCCR2A = 0 X 00;
TCCR2B = 0X07; la fuente de frecuencia de reloj 1024 puntos
TCNT2 = 100; nuevo desbordamiento de 10 ms
TIMSK2 = 0 X 01; permite la interrupción
}
int i = 0;
ISR (TIMER2_OVF_vect) //the contador de tiempo 2, desbordamiento de 10ms interrupción otra vez. Función ejecutiva de la interrupción de desbordamiento interno
{
TCNT2 = 100;
Bandera ++;
if(flag==1)
{
Contador = 0;
}
if(flag==2) más
{
digitalWrite(s2,LOW);
digitalWrite(s3,LOW);
País = contador/1.051;
Serial.Print("red=");
Serial.Print(countR,DEC);
Serial.Print ("l");
digitalWrite(s2,HIGH);
digitalWrite(s3,HIGH);
}
if(flag==3) más
{
countG = contador/1.0157;
Serial.Print("Green=");
Serial.Print(countG,DEC);
Serial.Print ("l");
digitalWrite(s2,LOW);
digitalWrite(s3,HIGH);
}
if(flag==4) más
{
countB = contador/1.114;
Serial.Print("Blue=");
Serial.println(countB,DEC);
digitalWrite(s2,LOW);
digitalWrite(s3,LOW);
}
otra cosa
{
Bandera = 0;
TIMSK2 = 0 X 00;
}
Contador = 0;
Delay(2);
}
void loop()
{
Delay(10);
TCS();
Si ((countR>10) || (countG > 10) || (countB>10))
{
Si ((countR>countG) & &(countR>countB))
{
Serial.Print("red");
Delay(500);
}
else if ((countG > = país) & &(countG>countB))
{
Serial.Print("Green");
Delay(500);
}
else if ((countB>countG) & &(countB>countR))
{
Serial.Print("Blue");
Delay(500);
}
}
otra cosa
{
Delay(500);
}
Si (countG > 3) {}
digitalWrite(8,HIGH);
}
Else {}
digitalWrite(8,LOW);
}
}