X-Git-Url: http://git.piffa.net/web?a=blobdiff_plain;f=multitasking%2Fmillis%2Floop_array_millis%2Floop_array_millis.ino;fp=multitasking%2Fmillis%2Floop_array_millis%2Floop_array_millis.ino;h=c3b5d8c673e63fc408fe68fe9951329107243369;hb=e419f1ef4dedd4cdc96afa49d3c3bc3eef30e602;hp=0000000000000000000000000000000000000000;hpb=4c79b246ebb28df58dbdbb856528840e9dd6ff8f;p=sketchbook_andrea diff --git a/multitasking/millis/loop_array_millis/loop_array_millis.ino b/multitasking/millis/loop_array_millis/loop_array_millis.ino new file mode 100644 index 0000000..c3b5d8c --- /dev/null +++ b/multitasking/millis/loop_array_millis/loop_array_millis.ino @@ -0,0 +1,56 @@ +/* + For Loop with millis() + +Blink di un array di led in sucessione, +utilizzando millis() per non blocking. +L'array puo' contenere un numero arbitrario di led +(l'ordine in cui compaiono e' l'ordine in cui brillano). + + Schemi: + - http://lab.piffa.net/schemi/8_led_single_res_bb.png + - http://lab.piffa.net/schemi/8_led_single_res_schem.png + + http://www.arduino.cc/en/Tutorial/ForLoop + */ + +byte ledPins[] = { // Domanda: cosa succede se uso int? + 9, 10, 11, 12 +} +; //Array + +long previousMillis ; +long interval = 1000; +byte i = 0; + + +void setup() { + for (int thisPin = 0; thisPin < sizeof(ledPins); thisPin++) { + pinMode(ledPins[thisPin], OUTPUT); + } + previousMillis = millis(); +} + +void loop() { + if (millis() - previousMillis > interval) { + previousMillis = millis(); + + if ( i < sizeof(ledPins) - 1 ) { + // Spegni precedente led + digitalWrite(ledPins[i], LOW); + + // Accendi successivo led + digitalWrite(ledPins[++i], HIGH); + } + + else if (i == sizeof(ledPins) - 1 ) { + // Ultimo caso + i = 0; + previousMillis = millis(); + digitalWrite(ledPins[i], HIGH); + digitalWrite(ledPins[ sizeof(ledPins) - 1 ], LOW); + } + } +} + + +