From: Andrea Manni Date: Thu, 26 Nov 2015 15:09:43 +0000 (+0100) Subject: Blinks reorder, all functions before loops X-Git-Url: http://git.piffa.net/web?a=commitdiff_plain;h=e419f1ef4dedd4cdc96afa49d3c3bc3eef30e602;p=sketchbook_andrea Blinks reorder, all functions before loops --- diff --git a/basic/blinks/blink_0/blink_0.ino b/basic/blinks/blink_0/blink_0.ino index 6c26071..9253d58 100644 --- a/basic/blinks/blink_0/blink_0.ino +++ b/basic/blinks/blink_0/blink_0.ino @@ -22,8 +22,7 @@ void setup() { } // /////////////// -// loop -// Le istruzioni vengono eseguite all'infinito +// loop: Le istruzioni vengono eseguite all'infinito void loop() { digitalWrite(led, HIGH); // Mette il PIN del LED in stato acceso delay(1000); // Aspetta un secondo (mille millisecondi) diff --git a/basic/blinks/blink_1_variabili/blink_1_variabili.ino b/basic/blinks/blink_1_variabili/blink_1_variabili.ino index 975d59a..dc03e53 100644 --- a/basic/blinks/blink_1_variabili/blink_1_variabili.ino +++ b/basic/blinks/blink_1_variabili/blink_1_variabili.ino @@ -18,15 +18,14 @@ int breve = 200; // Variabile richiambile nel corso dell'esecuzione int lunga = 1000; // ///////////////// -// Setup: eseguita una volta sola +// Setup: eseguita una volta sola all'accensione della scheda void setup() { // initialize the digital pin as an output. pinMode(led, OUTPUT); } // /////////////// -// loop -// the loop routine runs over and over again forever: +// loop: Le istruzioni vengono eseguite all'infinito void loop() { digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level) delay(breve); // wait for a second diff --git a/basic/blinks/blink_2_funzioni/blink_2_funzioni.ino b/basic/blinks/blink_2_funzioni/blink_2_funzioni.ino index e1a6066..d01b759 100644 --- a/basic/blinks/blink_2_funzioni/blink_2_funzioni.ino +++ b/basic/blinks/blink_2_funzioni/blink_2_funzioni.ino @@ -12,21 +12,19 @@ // ////////////// // Dichiarazione variabili -// Pin 13 has an LED connected on most Arduino boards. -// give it a name: -int led = 13; +int led = 13; // LED onboard sulla scheda int breve = 200; // Variabile richiambile nel corso dell'esecuzione int lunga = 1000; // ///////////////// -// Setup +// Setup: eseguita una volta sola all'accensione della scheda void setup() { // initialize the digital pin as an output. pinMode(led, OUTPUT); } // /////////////// -// loop +// loop: Le istruzioni vengono eseguite all'infinito void loop() { rapido(); // accende e spegne rapidamente il LED rapido(); // accende e spegne rapidamente il LED @@ -40,9 +38,9 @@ void rapido() { // Accende e spegne rapidamente il LED // sequenze di istruzione: accendere e spegnere il LED - digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level) + digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level) delay(breve); // wait for a second - digitalWrite(led, LOW); // turn the LED off by making the voltage LOW + digitalWrite(led, LOW); // turn the LED off by making the voltage LOW delay(breve); // wait for a second } @@ -50,10 +48,16 @@ void lento() { // Accende e spegne lentamente il LED // sequenze di istruzione: accendere e spegnere il LED - digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level) + digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level) delay(lunga); // wait for a second - digitalWrite(led, LOW); // turn the LED off by making the voltage LOW + digitalWrite(led, LOW); // turn the LED off by making the voltage LOW delay(lunga); } - +/* Domande: + * 1. I valori delle variabili led, breve, lunga cambiano durante + * l'esecuzione del programma? Sono variabili? + * + * 2. Le dichiarazioni delle variabili breve e lunga possono essere + * accorpate nelle rispettive funzioni? + */ diff --git a/basic/blinks/blink_3_2_ciclo_while_funzione_argomento/blink_3_2_ciclo_while_funzione_argomento.ino b/basic/blinks/blink_3_2_ciclo_while_funzione_argomento/blink_3_2_ciclo_while_funzione_argomento.ino deleted file mode 100644 index 1f43d12..0000000 --- a/basic/blinks/blink_3_2_ciclo_while_funzione_argomento/blink_3_2_ciclo_while_funzione_argomento.ino +++ /dev/null @@ -1,67 +0,0 @@ -/* - Blink v3 - Accensione e spegnimanto di un LED utilizzando un ciclo - iterativo while per comandare il lampeggio. - Questa volta il ciclo while() e' relegato in una funzione - che accetta come argomento il numero di ripetizionei da effettuare. - - This example code is in the public domain. - */ - -// Pin 13 has an LED connected on most Arduino boards. -// give it a name: -int led = 13; -int breve = 200; // Variabile richiambile nel corso dell'esecuzione -int lunga = 1000; - -// the setup routine runs once when you press reset: -void setup() { - // initialize the digital pin as an output. - pinMode(led, OUTPUT); -} - -// the loop routine runs over and over again forever: -void loop() { - lampeggia(8); - lento(); // accende e spegne lentamente il LED - // Domanda: a quanto equivale iterator ora? -} - -// Funzioni create dall'utente: - -void rapido() { - // Accende e spegne rapidamente il LED - - // sequenze di istruzione: accendere e spegnere il LED - digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level) - delay(breve); // wait for a second - digitalWrite(led, LOW); // turn the LED off by making the voltage LOW - delay(breve); // wait for a second -} - -void lento() { - // Accende e spegne lentamente il LED - - // sequenze di istruzione: accendere e spegnere il LED - digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level) - delay(lunga); // wait for a second - digitalWrite(led, LOW); // turn the LED off by making the voltage LOW - delay(lunga); -} - -void lampeggia(int ripetizioni) { - // Accende un LED per un numero stabilito di volte - - // Questa funziona accetta un parametro: ripetizioni - int i = 0; - while (i < ripetizioni) { - rapido(); // accende e spegne rapidamente il LED - i = i + 1 ; // incrementa l'iteratore - // i++ ; // equivalente - } -} - - - - - diff --git a/basic/blinks/blink_3_ciclo_while/blink_3_ciclo_while.ino b/basic/blinks/blink_3_ciclo_while/blink_3_ciclo_while.ino deleted file mode 100644 index ceb3cfe..0000000 --- a/basic/blinks/blink_3_ciclo_while/blink_3_ciclo_while.ino +++ /dev/null @@ -1,56 +0,0 @@ -/* - Blink v3 - Accensione e spegnimanto di un LED utilizzando un ciclo - iterativo while per comandare il lampeggio. - - This example code is in the public domain. - */ - -// Pin 13 has an LED connected on most Arduino boards. -// give it a name: -int led = 13; -int breve = 200; // Variabile richiambile nel corso dell'esecuzione -int lunga = 1000; - -// the setup routine runs once when you press reset: -void setup() { - // initialize the digital pin as an output. - pinMode(led, OUTPUT); -} - -// the loop routine runs over and over again forever: -void loop() { - int iterator = 0; // Defniamo un variabile per controllare un ciclo iterativo - while (iterator <10) { - rapido(); // accende e spegne rapidamente il LED - iterator = iterator + 1 ; // incrementa l'iteratore - // iterator++ ; // equivalente - } - lento(); // accende e spegne lentamente il LED -} - -// Funzioni create dall'utente: - -void rapido() { - // Accende e spegne rapidamente il LED - - // sequenze di istruzione: accendere e spegnere il LED - digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level) - delay(breve); // wait for a second - digitalWrite(led, LOW); // turn the LED off by making the voltage LOW - delay(breve); // wait for a second -} - -void lento() { - // Accende e spegne lentamente il LED - - // sequenze di istruzione: accendere e spegnere il LED - digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level) - delay(lunga); // wait for a second - digitalWrite(led, LOW); // turn the LED off by making the voltage LOW - delay(lunga); -} - - - - diff --git a/basic/blinks/blink_3_funzioni_argomenti/blink_3_funzioni_argomenti.ino b/basic/blinks/blink_3_funzioni_argomenti/blink_3_funzioni_argomenti.ino new file mode 100644 index 0000000..f4b603b --- /dev/null +++ b/basic/blinks/blink_3_funzioni_argomenti/blink_3_funzioni_argomenti.ino @@ -0,0 +1,61 @@ + +// //////////// +// Commento iniziale +/* + Blink v2 + + Accensione e spegnimanto di un LED utilizzando funzioni + per comandare il lampeggio. + + This example code is in the public domain. + */ +// ////////////// +// Dichiarazione variabili + +// Pin 13 has an LED connected on most Arduino boards. +// give it a name: +int led = 13; +// Le variabili lunga e breve non sono piu' necessarie + +// ///////////////// +// Setup +void setup() { + // initialize the digital pin as an output. + pinMode(led, OUTPUT); +} + +// /////////////// +// loop +void loop() { + brilla(300); + brilla(300); + brilla(600); +} + +// /////////////// +// Funzioni create dall'utente: + +void brilla(int velocita) { + // Accende e spegne il LED accetando un argomento + // per impostare la velocita'. + + // sequenze di istruzione: accendere e spegnere il LED + digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level) + delay(velocita); // wait for a second + digitalWrite(led, LOW); // turn the LED off by making the voltage LOW + delay(velocita); // wait for a second +} + + + +/* Domande: + * 1. Come si potrebbe fare per poter utilizzare la funzione brilla + * con PIN diversi rispetto a LED? + * + * 2. Le dichiarazioni delle variabili breve e lunga possono essere + * accorpate nelle rispettive funzioni? + * + * Esercizi sucessivi sulle funzioni: blink_5 e 6 + */ + + */ diff --git a/basic/blinks/blink_4_1_ciclo_for/blink_4_ciclo_for.ino b/basic/blinks/blink_4_1_ciclo_for/blink_4_ciclo_for.ino new file mode 100644 index 0000000..2322b56 --- /dev/null +++ b/basic/blinks/blink_4_1_ciclo_for/blink_4_ciclo_for.ino @@ -0,0 +1,54 @@ +/* + Blink v4 + Accensione e spegnimanto di un LED utilizzando un ciclo + iterativo for per comandare il lampeggio. + + */ + +// Pin 13 has an LED connected on most Arduino boards. +// give it a name: +int led = 13; +int breve = 200; // Variabile richiambile nel corso dell'esecuzione +int lunga = 1000; + +// Setup: eseguita una volta sola all'accensione della scheda +void setup() { + // initialize the digital pin as an output. + pinMode(led, OUTPUT); +} + +// loop: Le istruzioni vengono eseguite all'infinito +void loop() { + for (int i = 0, i <10, i++) { +// (Definizione iteratore, condizione di verifica, gestione dell'iteratore) +// Operatore ternario (3 elementi) + rapido(); // accende e spegne rapidamente il LED + } + + lento(); // accende e spegne lentamente il LED + // Domanda: dobbiamo preoccuparci dell'iteratore? +} + +// Funzioni create dall'utente: + +void rapido() { + // Accende e spegne rapidamente il LED + + // sequenze di istruzione: accendere e spegnere il LED + digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level) + delay(breve); // wait for a second + digitalWrite(led, LOW); // turn the LED off by making the voltage LOW + delay(breve); // wait for a second +} + +void lento() { + // Accende e spegne lentamente il LED + + // sequenze di istruzione: accendere e spegnere il LED + digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level) + delay(lunga); // wait for a second + digitalWrite(led, LOW); // turn the LED off by making the voltage LOW + delay(lunga); +} + + diff --git a/basic/blinks/blink_4_ciclo_for/blink_4_ciclo_for.ino b/basic/blinks/blink_4_ciclo_for/blink_4_ciclo_for.ino deleted file mode 100644 index 99a0419..0000000 --- a/basic/blinks/blink_4_ciclo_for/blink_4_ciclo_for.ino +++ /dev/null @@ -1,54 +0,0 @@ -/* - Blink v4 - Accensione e spegnimanto di un LED utilizzando un ciclo - iterativo for per comandare il lampeggio. - - This example code is in the public domain. - */ - -// Pin 13 has an LED connected on most Arduino boards. -// give it a name: -int led = 13; -int breve = 200; // Variabile richiambile nel corso dell'esecuzione -int lunga = 1000; - -// the setup routine runs once when you press reset: -void setup() { - // initialize the digital pin as an output. - pinMode(led, OUTPUT); -} - -// the loop routine runs over and over again forever: -void loop() { - for (int i = 0, i <10, i++) { -// (Definizione iteratore, condizione di verifica, gestione dell'iteratore) - rapido(); // accende e spegne rapidamente il LED - } - - lento(); // accende e spegne lentamente il LED - // Domanda: dobbiamo preoccuparci dell'iteratore? -} - -// Funzioni create dall'utente: - -void rapido() { - // Accende e spegne rapidamente il LED - - // sequenze di istruzione: accendere e spegnere il LED - digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level) - delay(breve); // wait for a second - digitalWrite(led, LOW); // turn the LED off by making the voltage LOW - delay(breve); // wait for a second -} - -void lento() { - // Accende e spegne lentamente il LED - - // sequenze di istruzione: accendere e spegnere il LED - digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level) - delay(lunga); // wait for a second - digitalWrite(led, LOW); // turn the LED off by making the voltage LOW - delay(lunga); -} - - diff --git a/basic/blinks/blink_4_ciclo_while/blink_4_ciclo_while.ino b/basic/blinks/blink_4_ciclo_while/blink_4_ciclo_while.ino new file mode 100644 index 0000000..d950a98 --- /dev/null +++ b/basic/blinks/blink_4_ciclo_while/blink_4_ciclo_while.ino @@ -0,0 +1,62 @@ +/* + Blink v3 + Accensione e spegnimanto di un LED utilizzando un ciclo + iterativo while per comandare il lampeggio. + + */ + +int led = 13; +int breve = 200; +int lunga = 1000; + + +// ///////////////// +// Setup: eseguita una volta sola all'accensione della scheda +void setup() { + // initialize the digital pin as an output. + pinMode(led, OUTPUT); +} + +// /////////////// +// loop: Le istruzioni vengono eseguite all'infinito +void loop() { + int iterator = 0; // Defniamo un variabile per controllare un ciclo iterativo + while (iterator < 10) { + rapido(); // accende e spegne rapidamente il LED + iterator = iterator + 1 ; // incrementa l'iteratore + // iterator++ ; // equivalente + } + lento(); // accende e spegne lentamente il LED +} + +// Funzioni create dall'utente: +void rapido() { + // Accende e spegne rapidamente il LED + + // sequenze di istruzione: accendere e spegnere il LED + digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level) + delay(breve); // wait for a second + digitalWrite(led, LOW); // turn the LED off by making the voltage LOW + delay(breve); // wait for a second +} + +void lento() { + // Accende e spegne lentamente il LED + + // sequenze di istruzione: accendere e spegnere il LED + digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level) + delay(lunga); // wait for a second + digitalWrite(led, LOW); // turn the LED off by making the voltage LOW + delay(lunga); +} + + +/* Domande + * + * 1. Creare una funziona lampeggia() che accetti come parametro + * il nuomero di ripetizioni da eseguire. + * + */ + + + diff --git a/basic/blinks/blink_5_2_leds/blink_5_2_leds.ino b/basic/blinks/blink_5_2_leds/blink_5_2_leds.ino deleted file mode 100644 index 34b0c94..0000000 --- a/basic/blinks/blink_5_2_leds/blink_5_2_leds.ino +++ /dev/null @@ -1,47 +0,0 @@ -/* - Blink v5 - - Accensione e spegnimanto di 2 LED. - Nel circuito oltre al LED montato direttamente sul pin 13 - viene aggiunto un altro LED pilotato dal PIN 12. - - Ricordarsi di usare una resistenza da ~320ohms per il secondo LED. - Resistenza = (Voltaggio_Arduino - Forward_voltage_LED) / (ampere utilizzati) - R = (5v-1.8v) / 0.010a - R =320ohms - - - Schema: http://lab.piffa.net/schemi/led_single_bb.png - - http://lab.piffa.net/schemi/led_single_schem.png - - This example code is in the public domain. - */ - -// Pin 13 has an LED connected on most Arduino boards. -// give it a name: -int led = 13; -int red = 12; // Definiamo un altro led -int breve = 200; // Variabile richiambile nel corso dell'esecuzione -int lunga = 1000; - -// the setup routine runs once when you press reset: -void setup() { - // initialize the digital pin as an output. - pinMode(led, OUTPUT); // Abilitaiamo entrambi i LED - pinMode(red, OUTPUT); -} - -// the loop routine runs over and over again forever: -void loop() { - digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level) - delay(breve); // wait for a second - digitalWrite(led, LOW); // turn the LED off by making the voltage LOW - delay(breve); // wait for a second - - digitalWrite(red, HIGH); // turn the LED on (HIGH is the voltage level) - delay(lunga); // wait for a second - digitalWrite(red, LOW); // turn the LED off by making the voltage LOW - delay(lunga); -} - - diff --git a/basic/blinks/blink_5_funzioni/blink_5_funzioni.ino b/basic/blinks/blink_5_funzioni/blink_5_funzioni.ino deleted file mode 100644 index 1308bec..0000000 --- a/basic/blinks/blink_5_funzioni/blink_5_funzioni.ino +++ /dev/null @@ -1,42 +0,0 @@ -/* - Blink v6 - - Due LEDs con funzioni. - - */ - -// Pin 13 has an LED connected on most Arduino boards. -// give it a name: -int led = 13; -int red = 12; -int breve = 200; -int lunga = 1000; - -// the setup routine runs once when you press reset: -void setup() { - // initialize the digital pin as an output. - pinMode(led, OUTPUT); - pinMode(red, OUTPUT); -} - -// the loop routine runs over and over again forever: -void loop() { - lightRed(); - lightGreen(); -} - -void lightRed() { - digitalWrite(red, HIGH); // turn the LED on (HIGH is the voltage level) - delay(lunga); // wait for a second - digitalWrite(red, LOW); // turn the LED off by making the voltage LOW - delay(lunga); -} - -void lightGreen() { - digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level) - delay(breve); // wait for a second - digitalWrite(led, LOW); // turn the LED off by making the voltage LOW - delay(breve); // wait for a second -} - - diff --git a/basic/blinks/blink_5_while_funzione_argomento/blink_5_while_funzione_argomento.ino b/basic/blinks/blink_5_while_funzione_argomento/blink_5_while_funzione_argomento.ino new file mode 100644 index 0000000..1f43d12 --- /dev/null +++ b/basic/blinks/blink_5_while_funzione_argomento/blink_5_while_funzione_argomento.ino @@ -0,0 +1,67 @@ +/* + Blink v3 + Accensione e spegnimanto di un LED utilizzando un ciclo + iterativo while per comandare il lampeggio. + Questa volta il ciclo while() e' relegato in una funzione + che accetta come argomento il numero di ripetizionei da effettuare. + + This example code is in the public domain. + */ + +// Pin 13 has an LED connected on most Arduino boards. +// give it a name: +int led = 13; +int breve = 200; // Variabile richiambile nel corso dell'esecuzione +int lunga = 1000; + +// the setup routine runs once when you press reset: +void setup() { + // initialize the digital pin as an output. + pinMode(led, OUTPUT); +} + +// the loop routine runs over and over again forever: +void loop() { + lampeggia(8); + lento(); // accende e spegne lentamente il LED + // Domanda: a quanto equivale iterator ora? +} + +// Funzioni create dall'utente: + +void rapido() { + // Accende e spegne rapidamente il LED + + // sequenze di istruzione: accendere e spegnere il LED + digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level) + delay(breve); // wait for a second + digitalWrite(led, LOW); // turn the LED off by making the voltage LOW + delay(breve); // wait for a second +} + +void lento() { + // Accende e spegne lentamente il LED + + // sequenze di istruzione: accendere e spegnere il LED + digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level) + delay(lunga); // wait for a second + digitalWrite(led, LOW); // turn the LED off by making the voltage LOW + delay(lunga); +} + +void lampeggia(int ripetizioni) { + // Accende un LED per un numero stabilito di volte + + // Questa funziona accetta un parametro: ripetizioni + int i = 0; + while (i < ripetizioni) { + rapido(); // accende e spegne rapidamente il LED + i = i + 1 ; // incrementa l'iteratore + // i++ ; // equivalente + } +} + + + + + diff --git a/basic/blinks/blink_6_doppio_leds/blink_6_doppio_leds.ino b/basic/blinks/blink_6_doppio_leds/blink_6_doppio_leds.ino new file mode 100644 index 0000000..60615a4 --- /dev/null +++ b/basic/blinks/blink_6_doppio_leds/blink_6_doppio_leds.ino @@ -0,0 +1,65 @@ +/* + Blink v5 + + Accensione e spegnimanto di 2 LED. + Nel circuito oltre al LED montato direttamente sul pin 13 + viene aggiunto un altro LED pilotato dal PIN 12. + + Ricordarsi di usare una resistenza da ~320ohms per il secondo LED. + Resistenza = (Voltaggio_Arduino - Forward_voltage_LED) / (ampere utilizzati) + R = (5v-1.8v) / 0.010a + R =320ohms + + + Schema: http://lab.piffa.net/schemi/led_single_bb.png + - http://lab.piffa.net/schemi/led_single_schem.png + + This example code is in the public domain. + */ + + +int led = 13; // Il LED onboard corrisponde al PIN 13 + // Ha una resistenza premontata +int red = 12; // Definiamo un altro led +int breve = 200; // Variabile richiambile nel corso dell'esecuzione +int lunga = 1000; + +// ///////////////// +// Setup: eseguita una volta sola all'accensione della scheda +void setup() { + // initialize the digital pin as an output. + pinMode(led, OUTPUT); // Abilitaiamo entrambi i LED + pinMode(red, OUTPUT); +} + +// /////////////// +// loop: Le istruzioni vengono eseguite all'infinito +void loop() { + digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level) + delay(breve); // wait for a second + digitalWrite(led, LOW); // turn the LED off by making the voltage LOW + delay(breve); // wait for a second + + digitalWrite(red, HIGH); // turn the LED on (HIGH is the voltage level) + delay(lunga); // wait for a second + digitalWrite(red, LOW); // turn the LED off by making the voltage LOW + delay(lunga); +} + +/* Domande + * + * 1. Creare una funzione che sia slegata dal PIN con cui interagisce. + * + * 2. Come procede il flusso delle istruzioni per far brillare i LED? + * E' possibile far brillare i LED indipendentemente l'uno dall'altro? + * + * + * Nota: la risposta alla domanda 2 arrivera' a fine corso! + */ + + + + + + + diff --git a/basic/blinks/blink_6_funzioni_argomenti/blink_6_funzioni_argomenti.ino b/basic/blinks/blink_6_funzioni_argomenti/blink_6_funzioni_argomenti.ino deleted file mode 100644 index 270d3ca..0000000 --- a/basic/blinks/blink_6_funzioni_argomenti/blink_6_funzioni_argomenti.ino +++ /dev/null @@ -1,50 +0,0 @@ -/* - Blink v6 - - Due LEDs con funzioni che accettano argomenti: - gli argomenti permettono di modificar il comportamento - delle funzioni. - - */ - -// Pin 13 has an LED connected on most Arduino boards. -// give it a name: -int led = 13; -int red = 12; -int breve = 200; -int lunga = 1000; - -// the setup routine runs once when you press reset: -void setup() { - // initialize the digital pin as an output. - pinMode(led, OUTPUT); - pinMode(red, OUTPUT); -} - -// the loop routine runs over and over again forever: -void loop() { -lightRed(lunga); -lightRed(breve); - -lightGreen(breve); -lightGreen(lunga); -} - -void lightRed(int length) { // Argomento - digitalWrite(red, HIGH); // turn the LED on (HIGH is the voltage level) - delay(length); // wait for a second - digitalWrite(red, LOW); // turn the LED off by making the voltage LOW - delay(length); -} - -void lightGreen(int length) { - digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level) - delay(length); // wait for a second - digitalWrite(led, LOW); // turn the LED off by making the voltage LOW - delay(length); // wait for a second -} - - // Test: creare una funzione generica che permetta di accendere - // qualunque LED per un periodo di tempo impostabile - - // Suggerimento: quanti parametri deve accettare? 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); + } + } +} + + +