From e419f1ef4dedd4cdc96afa49d3c3bc3eef30e602 Mon Sep 17 00:00:00 2001 From: Andrea Manni Date: Thu, 26 Nov 2015 16:09:43 +0100 Subject: [PATCH] Blinks reorder, all functions before loops --- basic/blinks/blink_0/blink_0.ino | 3 +- .../blink_1_variabili/blink_1_variabili.ino | 5 +- .../blink_2_funzioni/blink_2_funzioni.ino | 24 +++++--- .../blink_3_funzioni_argomenti.ino | 61 +++++++++++++++++++ .../blink_4_ciclo_for.ino | 6 +- .../blink_4_ciclo_while.ino} | 24 +++++--- .../blink_5_funzioni/blink_5_funzioni.ino | 42 ------------- .../blink_5_while_funzione_argomento.ino} | 0 .../blink_6_doppio_leds.ino} | 30 +++++++-- .../blink_6_funzioni_argomenti.ino | 50 --------------- .../loop_array_millis/loop_array_millis.ino | 56 +++++++++++++++++ 11 files changed, 176 insertions(+), 125 deletions(-) create mode 100644 basic/blinks/blink_3_funzioni_argomenti/blink_3_funzioni_argomenti.ino rename basic/blinks/{blink_4_ciclo_for => blink_4_1_ciclo_for}/blink_4_ciclo_for.ino (90%) rename basic/blinks/{blink_3_ciclo_while/blink_3_ciclo_while.ino => blink_4_ciclo_while/blink_4_ciclo_while.ino} (78%) delete mode 100644 basic/blinks/blink_5_funzioni/blink_5_funzioni.ino rename basic/blinks/{blink_3_2_ciclo_while_funzione_argomento/blink_3_2_ciclo_while_funzione_argomento.ino => blink_5_while_funzione_argomento/blink_5_while_funzione_argomento.ino} (100%) rename basic/blinks/{blink_5_2_leds/blink_5_2_leds.ino => blink_6_doppio_leds/blink_6_doppio_leds.ino} (66%) delete mode 100644 basic/blinks/blink_6_funzioni_argomenti/blink_6_funzioni_argomenti.ino create mode 100644 multitasking/millis/loop_array_millis/loop_array_millis.ino 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_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_ciclo_for/blink_4_ciclo_for.ino b/basic/blinks/blink_4_1_ciclo_for/blink_4_ciclo_for.ino similarity index 90% rename from basic/blinks/blink_4_ciclo_for/blink_4_ciclo_for.ino rename to basic/blinks/blink_4_1_ciclo_for/blink_4_ciclo_for.ino index 99a0419..2322b56 100644 --- a/basic/blinks/blink_4_ciclo_for/blink_4_ciclo_for.ino +++ b/basic/blinks/blink_4_1_ciclo_for/blink_4_ciclo_for.ino @@ -3,7 +3,6 @@ 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. @@ -12,16 +11,17 @@ int led = 13; int breve = 200; // Variabile richiambile nel corso dell'esecuzione int lunga = 1000; -// the setup routine runs once when you press reset: +// Setup: eseguita una volta sola all'accensione della scheda void setup() { // initialize the digital pin as an output. pinMode(led, OUTPUT); } -// the loop routine runs over and over again forever: +// 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 } diff --git a/basic/blinks/blink_3_ciclo_while/blink_3_ciclo_while.ino b/basic/blinks/blink_4_ciclo_while/blink_4_ciclo_while.ino similarity index 78% rename from basic/blinks/blink_3_ciclo_while/blink_3_ciclo_while.ino rename to basic/blinks/blink_4_ciclo_while/blink_4_ciclo_while.ino index ceb3cfe..d950a98 100644 --- a/basic/blinks/blink_3_ciclo_while/blink_3_ciclo_while.ino +++ b/basic/blinks/blink_4_ciclo_while/blink_4_ciclo_while.ino @@ -3,25 +3,25 @@ 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 led = 13; +int breve = 200; int lunga = 1000; -// the setup routine runs once when you press reset: + +// ///////////////// +// Setup: eseguita una volta sola all'accensione della scheda void setup() { // initialize the digital pin as an output. pinMode(led, OUTPUT); } -// the loop routine runs over and over again forever: +// /////////////// +// loop: Le istruzioni vengono eseguite all'infinito void loop() { int iterator = 0; // Defniamo un variabile per controllare un ciclo iterativo - while (iterator <10) { + while (iterator < 10) { rapido(); // accende e spegne rapidamente il LED iterator = iterator + 1 ; // incrementa l'iteratore // iterator++ ; // equivalente @@ -30,7 +30,6 @@ void loop() { } // Funzioni create dall'utente: - void rapido() { // Accende e spegne rapidamente il LED @@ -52,5 +51,12 @@ void lento() { } +/* Domande + * + * 1. Creare una funziona lampeggia() che accetti come parametro + * il nuomero di ripetizioni da eseguire. + * + */ + 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_3_2_ciclo_while_funzione_argomento/blink_3_2_ciclo_while_funzione_argomento.ino b/basic/blinks/blink_5_while_funzione_argomento/blink_5_while_funzione_argomento.ino similarity index 100% rename from basic/blinks/blink_3_2_ciclo_while_funzione_argomento/blink_3_2_ciclo_while_funzione_argomento.ino rename to basic/blinks/blink_5_while_funzione_argomento/blink_5_while_funzione_argomento.ino diff --git a/basic/blinks/blink_5_2_leds/blink_5_2_leds.ino b/basic/blinks/blink_6_doppio_leds/blink_6_doppio_leds.ino similarity index 66% rename from basic/blinks/blink_5_2_leds/blink_5_2_leds.ino rename to basic/blinks/blink_6_doppio_leds/blink_6_doppio_leds.ino index 34b0c94..60615a4 100644 --- a/basic/blinks/blink_5_2_leds/blink_5_2_leds.ino +++ b/basic/blinks/blink_6_doppio_leds/blink_6_doppio_leds.ino @@ -17,21 +17,23 @@ 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 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; -// the setup routine runs once when you press reset: +// ///////////////// +// 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); } -// 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 @@ -44,4 +46,20 @@ void loop() { 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); + } + } +} + + + -- 2.39.2