X-Git-Url: http://git.piffa.net/web?a=blobdiff_plain;f=programming%2Floops%2Floop_3_multi_led_random%2Floop_3_multi_led_random.ino;fp=programming%2Floops%2Floop_3_multi_led_random%2Floop_3_multi_led_random.ino;h=70cfc625b573c00f0f9cea39764544351f5f0f7e;hb=81ae6f5410398f1f3a59b671aa400338a8748284;hp=0000000000000000000000000000000000000000;hpb=0ef9dc22a6c180ef5470b5dd1389ba297a7d1e39;p=sketchbook_andrea diff --git a/programming/loops/loop_3_multi_led_random/loop_3_multi_led_random.ino b/programming/loops/loop_3_multi_led_random/loop_3_multi_led_random.ino new file mode 100644 index 0000000..70cfc62 --- /dev/null +++ b/programming/loops/loop_3_multi_led_random/loop_3_multi_led_random.ino @@ -0,0 +1,86 @@ +/* + Random Rainbow + + Generazione di un numero casuale per modificare il flusso del programma. + + + + + The circuit: + * LEDs from pins 2 through 9 to ground + + 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[8] = { // Domanda: cosa succede se uso int? + 2,3,4,5,6,7,8,9} +; //Array +int timer = 100; // Pausa per far brillare i LED +int randNumber ; + +void setup() { + Serial.begin(9600); + // use a for loop to initialize each pin as an output: + for (int thisPin = 0; thisPin < sizeof(ledPins); thisPin++) { + pinMode(ledPins[thisPin], OUTPUT); + Serial.print("Inizializzato pin n. "); + Serial.println( thisPin); + } + + Serial.print("Dimesione array: "); + Serial.println(sizeof(ledPins)); + randomSeed(analogRead(0)); // Rilevazione di un valore esterno + // per scegliere il primo elemento del pseudorandom generators +} + +void loop() { + // print a random number from 0 to 8 + randNumber = random(8); + // turn the pin on: + Serial.print("Accensione pin n. "); + Serial.println(randNumber); + digitalWrite(ledPins[randNumber], HIGH); + delay(timer); + // turn the pin off: + digitalWrite(ledPins[randNumber], LOW); + + if (randNumber == 0) { + rainbow() ; + } +} + +//////////////// +// Funzioni + +void rainbow() { + // Esegue un pattern con i led + + Serial.println(">>> Rainbow! <<<"); + for (int thisPin = 0; thisPin < sizeof(ledPins); thisPin++) { + // turn the pin on: + digitalWrite(ledPins[thisPin], HIGH); + delay(timer / 2); + // turn the pin off: + digitalWrite(ledPins[thisPin], LOW); + // Debug + + } + + // loop from the highest pin to the lowest: + for (int thisPin = sizeof(ledPins) -1 ; thisPin > 0; thisPin--) { + // ><