byte niveau = 1;
byte leds[]={0,1,2,4,8};
byte case_tableau_leds=0;
boolean memoStart=false;
unsigned long temps =0;
unsigned long temps_max=1500;
void setup() {
Serial.begin(115200);
DDRB = 0b00001111;//EEEESSSS
PORTB = 0b00001111;
DDRC = 0b00000000;//xxxxEEEE
PORTC = 0b00001111;
DDRD & 0b01111111;//Exxxxxxx
PORTD = 0b10000000;
while(PIND>=128){
chenillard();
}
Serial.print("PIND = ");Serial.println(PIND);
memoStart=true;
decompte();
Serial.print(F("niveau "));Serial.println(niveau);
}
void loop()
{
//Serial.print(PIND);
if(PIND<=127){memoStart=!memoStart;niveau++;
Serial.print("memostart=");Serial.print(memoStart);delay(1000);}
if(memoStart){
for (int f=1;f<=niveau;f++){//if(!niveau%3){temps_max*=0.8;}
Serial.print ("f = ");Serial.print(f);Serial.print('\t');
case_tableau_leds=random(1,5);
//Serial.print(" case tableau = ");Serial.print(case_tableau_leds);
PORTB=leds[case_tableau_leds];
//Serial.print( " port B = ");Serial.print(PORTB);
unsigned long deb=millis();
//temps[PINC][niveau]=(millis()-deb);
do{
if (PORTB==((~PINC&0b00001111))){Serial.print("ok");temps =(millis()-deb);if((!niveau%3)&&(f+1==niveau)){temps_max*=0.8;}if(f==niveau){f=0;niveau++;}Serial.print(niveau%3);break;}
//else{while(1);}
} while(millis()<=deb+temps_max);
Serial.print(" ");
Serial.print("temps = ");
Serial.print(temps);Serial.print('\t');
if((f==niveau)&&(!niveau%3)){temps_max*=0.8;}
Serial.print(F("temps max = "));Serial.print(temps_max);Serial.print('\t');
Serial.print(" ");
Serial.print(PORTB);
Serial.print(" et ");
Serial.print((~PINC&0b00001111));
Serial.print ("niveau = ");Serial.print(niveau);Serial.print('\t');
Serial.print ("f = ");Serial.print(f);Serial.println('\t');
//Serial.print("**");
//Serial.print((PIND&0b10000000));
//Serial.print("__");
//Serial.print ((~PINC&0b00001111));
//delay(1000);
}
}
//delay(1000);
}
//***********************************************************
void chenillard() {
for (byte f = 1; f <= 4; f++) {
if (PIND < 128) {
break;
}
PORTB = leds[f]; delay(250);
}
for (byte f = 4; f >= 1; f--) {
if (PIND < 128) {
break;
}
PORTB = leds[f]; delay(250);
}
}
void comptage_binaire() {
for (byte f = 0; f < 16; f++)
{
PORTB = f; delay(100);
if (PIND < 128) {
break;
}
}
}
void decompte() {
Serial.print(F("le jeu va demarrer "));
for (byte f = 5; f >= 1; f--) {
Serial.print(f);
delay(500);
}
Serial.println (F(" GO"));
}