Étape 6: Concept : Indiana Jones jeu
Si vous vous rappelez la scène dans indiana jones, où il vole et les artefact antique et les remplace avec le sable, ce jeu est basé sur le même principe. Le joueur doit voler un objet de couleur spécifique et le remplacer par un objet de même valeur RVB. Si vous n’arrivez pas cela au sein de 500ms le voyant d’alarme rouge s’éteint.
Copiez le code suivant est basé sur la recherche de ce qui est une valeur RVB spécifique d’un objet, et puis faire en sorte que si la valeur est différente de cette valeur, puis la LED s’allume.
Vidéo 07.10.14 16 10 43.la mov alfred sur Vimeo.
Sur le plan conceptuel, c’est comme ça :
LIRE LES COULEURS
Si {couleur n’est pas même en tant qu’objet) {}
allumer LED;}
else {}
éteint LED;}
Véritable Code :
int s0 = 3, s1 = 4, s2 = 5, s3 = 6 ;
drapeau de l’int = 0 ;
int compteur = 0 ;
countR 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) ;
}
Sub TCS()
{
digitalWrite(s1,HIGH) ;
digitalWrite(s0,LOW) ;
drapeau = 0 ;
attachInterrupt (0, ISR_INTO, changement) ;
timer2_init() ;
}
Sub ISR_INTO()
{
compteur ++ ;
}
Sub timer2_init(void)
{
TCCR2A = 0 X 00 ;
TCCR2B = 0 X 07 ; la source de fréquence d’horloge 1024 points
TCNT2 = 100 ; débordement de 10 ms à nouveau
TIMSK2 = 0 X 01 ; permettre l’interruption
}
int i = 0 ;
Minuterie de //the ISR (TIMER2_OVF_vect) 2, interruption de 10ms débordent à nouveau. Fonction exécutive de débordement interne interruption
{
TCNT2 = 100 ;
drapeau ++ ;
if(flag==1)
{
compteur = 0 ;
}
d’autre if(flag==2)
{
digitalWrite(s2,LOW) ;
digitalWrite(s3,LOW) ;
countR = compteur/1.051 ;
Serial.Print("Red=") ;
Serial.Print(countR,DEC) ;
Serial.Print ("l") ;
digitalWrite(s2,HIGH) ;
digitalWrite(s3,HIGH) ;
}
d’autre if(flag==3)
{
countG = compteur/1.0157 ;
Serial.Print("Green=") ;
Serial.Print(countG,DEC) ;
Serial.Print ("l") ;
digitalWrite(s2,LOW) ;
digitalWrite(s3,HIGH) ;
}
d’autre if(flag==4)
{
countB = compteur/1.114 ;
Serial.Print("Blue=") ;
Serial.println(countB,DEC) ;
digitalWrite(s2,LOW) ;
digitalWrite(s3,LOW) ;
}
d’autre
{
drapeau = 0 ;
TIMSK2 = 0 X 00 ;
}
compteur = 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 > = countR) & &(countG>countB))
{
Serial.Print("Green") ;
Delay(500) ;
}
sinon si ((countB>countG) & &(countB>countR))
{
Serial.Print("Blue") ;
Delay(500) ;
}
}
d’autre
{
Delay(500) ;
}
Si (countG > 3) {}
digitalWrite(8,HIGH) ;
}
else {}
digitalWrite(8,LOW) ;
}
}