int ledJ = 1; int ledV = 0; int ledR = 2; int ledB = 3; int BJ = 5; int BV = 4; int BR = 6; int BB = 7; int bruit = 8; int potar = A0; int tableauJEU[150]; int score = 0; int niveau; int NDo1 = 523; int NRe1 = 587; int NMi1 = 659; int NFa1 = 698; int NSo1 = 784; int NLa1 = 880; int NSi1b = 932; int NSi1 = 988; int NDo2 = 1046; int NRe2 = 1175; int NMi2 = 1319; int NFa2 = 1397; int NFa2d = 1480; int NSo2 = 1568; int NLa2 = 1760; int NSi2 = 1976; int NDo3 = 2093; int NRe3 = 2349; int DDouble = 75; int DCroche = 150; int DCrocheP = 225; int DNoire = 300; int DBlanche = 600; int DTrioletC = 100; int led3=9; int led6=10; int led9=11; int led12=12; int led15=13; void jouerNote(int frequence, int duree) { tone(bruit, frequence); delay(duree-20); noTone(bruit); delay(20); } void melodieallume() { jouerNote(NLa1,DTrioletC); jouerNote(NLa1,DTrioletC); jouerNote(NLa1,DTrioletC); jouerNote(NRe2,DBlanche); jouerNote(NLa2,DBlanche); jouerNote(NSo2,DTrioletC); jouerNote(NFa2d,DTrioletC); jouerNote(NMi2,DTrioletC); jouerNote(NRe3,DBlanche); jouerNote(NLa2,DNoire); jouerNote(NSo2,DTrioletC); jouerNote(NFa2d,DTrioletC); jouerNote(NMi2,DTrioletC); jouerNote(NRe3,DBlanche); jouerNote(NLa2,DNoire); jouerNote(NSo2,DTrioletC); jouerNote(NFa2d,DTrioletC); jouerNote(NSo2,DTrioletC); jouerNote(NMi2,DBlanche); } void melodieperdu() { jouerNote(NRe2,DNoire); jouerNote(NRe2,DNoire); jouerNote(NRe2,DNoire); jouerNote(NSi1b,DCrocheP); jouerNote(NFa2,DDouble); jouerNote(NRe2,DNoire); jouerNote(NSi1b,DCrocheP); jouerNote(NFa2,DDouble); jouerNote(NRe2,DBlanche); } void flashLED(int numled, int duree) { digitalWrite(numled, HIGH); tone(bruit, 500+(numled*250)); delay(duree); digitalWrite(numled, LOW); noTone(bruit); delay(100); } void chenillard() { flashLED(0,50); flashLED(1,50); flashLED(2,50); flashLED(3,50); flashLED(2,50); flashLED(1,50); flashLED(0,50); flashLED(1,50); flashLED(2,50); flashLED(3,50); flashLED(2,50); flashLED(1,50); flashLED(0,50); } void setup() { pinMode(led3, OUTPUT); pinMode(led6, OUTPUT); pinMode(led9, OUTPUT); pinMode(led12, OUTPUT); pinMode(led15, OUTPUT); pinMode(ledJ, OUTPUT); pinMode(ledV, OUTPUT); pinMode(ledR, OUTPUT); pinMode(ledB, OUTPUT); pinMode(BJ, INPUT_PULLUP); pinMode(BV, INPUT_PULLUP); pinMode(BR, INPUT_PULLUP); pinMode(BB, INPUT_PULLUP); randomSeed(analogRead(0)); melodieallume(); delay(2000); chenillard(); delay(2000); } void loop() { int i; bool reponse=true; // bonne réponse du joueur int bouton=5; // un bouton a été appuyé niveau=analogRead(potar); // lecture du niveau sur le potentiometre score = score + 1; // 0 = vert, 1 = jaune, 2 = rouge, 3 = bleu tableauJEU[score] = random(0, 4); // jouer la séquence for (i = 1; i <= score; i++) { flashLED(tableauJEU[i],niveau); } // reponse du joueur i=1; while (i <= score) { int valeurBV = digitalRead(BV); if (valeurBV==0) { bouton=0; } int valeurBJ = digitalRead(BJ); if (valeurBJ==0) { bouton=1; } int valeurBR = digitalRead(BR); if (valeurBR==0) { bouton=2; } int valeurBB = digitalRead(BB); if (valeurBB==0) { bouton=3; } if (bouton!=5) { flashLED(bouton,niveau); if (bouton==tableauJEU[i]) { // le joueur a appuyé le bon bouton i=i+1; bouton=5; } else { // le joueur s'est trompé de bouton reponse=false; i=score+1; } } } if (reponse==false) { // le joueur s'est trompé dans la séquence // bip grave jouerNote(100,2000); delay(1000); // flash des LEDS du score if ((score>=3)&&(score<6)) { for (i = 1; i <= 10; i++) { digitalWrite(led3,LOW); tone(bruit,200); delay (100); noTone(bruit); digitalWrite(led3,HIGH); delay(100); } } if ((score>=6)&&(score<9)) { for (i = 1; i <= 10; i++) { digitalWrite(led3,LOW); digitalWrite(led6,LOW); tone(bruit,200); delay (100); noTone(bruit); digitalWrite(led3,HIGH); digitalWrite(led6,HIGH); delay(100); } } if ((score>=9)&&(score<12)) { for (i = 1; i <= 10; i++) { digitalWrite(led3,LOW); digitalWrite(led6,LOW); digitalWrite(led9,LOW); tone(bruit,200); delay (100); noTone(bruit); digitalWrite(led3,HIGH); digitalWrite(led6,HIGH); digitalWrite(led9,HIGH); delay(100); } } if ((score>=12)&&(score<15)) { for (i = 1; i <= 10; i++) { digitalWrite(led3,LOW); digitalWrite(led6,LOW); digitalWrite(led9,LOW); digitalWrite(led12,LOW); tone(bruit,200); delay (100); noTone(bruit); digitalWrite(led3,HIGH); digitalWrite(led6,HIGH); digitalWrite(led9,HIGH); digitalWrite(led12,HIGH); delay(100); } } if (score>=15) { for (i = 1; i <= 10; i++) { digitalWrite(led3,LOW); digitalWrite(led6,LOW); digitalWrite(led9,LOW); digitalWrite(led12,LOW); digitalWrite(led15,LOW); tone(bruit,200); delay (100); noTone(bruit); digitalWrite(led3,HIGH); digitalWrite(led6,HIGH); digitalWrite(led9,HIGH); digitalWrite(led12,HIGH); digitalWrite(led15,HIGH); delay(100); } } melodieperdu(); digitalWrite(led3,LOW); digitalWrite(led6,LOW); digitalWrite(led9,LOW); digitalWrite(led12,LOW); digitalWrite(led15,LOW); chenillard(); score=0; delay(3000); } // Allumage des LEDS score au franchissement des seuils if (score==3) { digitalWrite(led3,HIGH); } if (score==6) { digitalWrite(led6,HIGH); } if (score==9) { digitalWrite(led9,HIGH); } if (score==12) { digitalWrite(led12,HIGH); } if (score==15) { digitalWrite(led15,HIGH); } delay(500); }