Wet Water |
|
| Ho arduino da pressapoco cinque giorni, questo è il mio primo lavoro che si discosta dalla guida. Lightmemory è basato su tre luci e tre pulsanti, quando si accende/resetta si accendono le tre luci in sequenza di cinque; dopo questo si dovranno premere i tre bottoni nella stessa sequenza delle luci, in caso di errore si dovrà ricominciare a premere. CODICE int count = 0; int lim = 5; int res[5]; int acc; int accp = 1;
void light(int num = 0) { digitalWrite(3, LOW); digitalWrite(4, LOW); digitalWrite(5, LOW); digitalWrite(num, HIGH); }
void right() { digitalWrite(3, HIGH); digitalWrite(4, HIGH); digitalWrite(5, HIGH); delay(1000); light(); }
void error() { light(3); delay(100); light(4); delay(100); light(5); delay(100); light(); }
void check(int numButton){ if (res[count-6] == numButton-5){ light(numButton-5); count++; } else { error(); count = lim+1; } }
void setup() { //Serial.begin(9600); pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(8, INPUT); pinMode(9, INPUT); pinMode(10, INPUT); randomSeed(analogRead(0)); }
void loop() { if (count < lim) { int acc = random(3, 6); if (acc != accp) { light(acc); res[count] = acc; accp = acc; count++; delay(500); } } else if (count == lim) { light(); delay(500); error(); delay(500); light(); count++; } else if (count < 2*lim+1) { if (digitalRead(8)) { acc = 8; if (acc != accp){ check(8); } } if (digitalRead(9)) { acc = 9; if (acc != accp){ check(9); } } if (digitalRead(10)) { acc = 10; if (acc != accp){ check(10); } } accp = acc; } else { right(); delay(500); light(); delay(500); right(); delay(500); light(); delay(50000); } } Nel tar ho caricato anche il .fzz del circuito, attenzione che le resistenze dei pulsanti non sono da 220, ma sono da 10k.
|
| |