From: Andrea Manni Date: Mon, 7 Mar 2016 17:49:44 +0000 (+0100) Subject: Blinks with iterators, reorder X-Git-Url: http://git.piffa.net/web?p=sketchbook_andrea;a=commitdiff_plain;h=50a120342c3713a4a6ec39dd757c86647a8e3511 Blinks with iterators, reorder --- diff --git a/basic/blinks/blink_0/blink_0.ino b/basic/blinks/blink_0/blink_0.ino index 09efff8..f26f96d 100644 --- a/basic/blinks/blink_0/blink_0.ino +++ b/basic/blinks/blink_0/blink_0.ino @@ -26,6 +26,6 @@ void setup() { void loop() { digitalWrite(led, HIGH); // Mette il PIN del LED in stato acceso delay(1000); // Aspetta un secondo (mille millisecondi) - digitalWrite(led, LOW); // Mette il PIN del LED in stato acceso + digitalWrite(led, LOW); // Mette il PIN del LED in stato spento delay(500); // Aspetta mezzo secondo } diff --git a/basic/blinks/blink_2_1_sos/blink_2_1_sos.ino b/basic/blinks/blink_2_1_sos/blink_2_1_sos.ino new file mode 100644 index 0000000..aa53006 --- /dev/null +++ b/basic/blinks/blink_2_1_sos/blink_2_1_sos.ino @@ -0,0 +1,159 @@ + +// //////////// +// 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 + +int led = 13; // LED onboard sulla scheda + + +// ///////////////// +// 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() { + // S + rapido(); // accende e spegne rapidamente il LED + rapido(); + rapido(); + + // O + lento(); // accende e spegne lentamente il LED + lento(); + lento(); + + // S + rapido(); // accende e spegne rapidamente il LED + rapido(); + rapido(); + + + //Funzione apposita: + esse(); + ooo(); + esse(); +} + + + // /////////////// + // Funzioni create dall'utente: + +void rapido() { + // Accende e spegne rapidamente il LED + int breve = 200; + // sequenze di istruzione: accendere e spegnere il LED + digitalWrite(led, HIGH); // Mette il PIN del LED in stato acceso + delay(breve); // Pausa + digitalWrite(led, LOW); // Mette il PIN del LED in stato spento + delay(breve); // Pausa +} + +void lento() { + // Accende e spegne lentamente il LED + int lunga = 1000; + // sequenze di istruzione: accendere e spegnere il LED + digitalWrite(led, HIGH); // Mette il PIN del LED in stato spento) + delay(lunga); // Pausa + digitalWrite(led, LOW); // Mette il PIN del LED in stato spento + delay(lunga); // Pausa +} + +void esse() { + // Emette una lettera S in Morse + + int breve = 200; + + // sequenze di istruzione: accendere e spegnere il LED + digitalWrite(led, HIGH); // Mette il PIN del LED in stato acceso + delay(breve); // Pausa + digitalWrite(led, LOW); // Mette il PIN del LED in stato spento + delay(breve); // Pausa + + digitalWrite(led, HIGH); // Mette il PIN del LED in stato acceso + delay(breve); // Pausa + digitalWrite(led, LOW); // Mette il PIN del LED in stato spento + delay(breve); // Pausa + + digitalWrite(led, HIGH); // Mette il PIN del LED in stato acceso + delay(breve); // Pausa + digitalWrite(led, LOW); // Mette il PIN del LED in stato spento + delay(breve); // Pausa +} + +void ooo() { + // Emette una lettera o in Morse + + int lunga = 1000; + // sequenze di istruzione: accendere e spegnere il LED + digitalWrite(led, HIGH); // Mette il PIN del LED in stato spento) + delay(lunga); // Pausa + digitalWrite(led, LOW); // Mette il PIN del LED in stato spento + delay(lunga); // Pausa + + digitalWrite(led, HIGH); // Mette il PIN del LED in stato spento) + delay(lunga); // Pausa + digitalWrite(led, LOW); // Mette il PIN del LED in stato spento + delay(lunga); // Pausa + + digitalWrite(led, HIGH); // Mette il PIN del LED in stato spento) + delay(lunga); // Pausa + digitalWrite(led, LOW); // Mette il PIN del LED in stato spento + delay(lunga); // Pausa + +} + +void sos() { + // Emette un segnale di S.O.S + +} + +////////////////// +/* Domande: + 1. Che differenza c'e' tra le funzioni esse() e sos()? + + 2. Esercizio: creare uno sketch per far brillare un led 10 volte lentamente + e dieci volte rapidamente. + + Soluzioni a fondo pagina. + + + + + + + + + + + + + + + + + + + + + + + Risposta: + + 1. esse() e' una funzione autonoma, puo' essere copiata/incollata in qualunque + sketch e funzionera' autonomamente. + sos() invece e' composta da altre funzioni: anche queste dovranno essere disponibili. + + */ diff --git a/basic/blinks/blink_2_2_funzioni_argomenti/blink_2_2_funzioni_argomenti.ino b/basic/blinks/blink_2_2_funzioni_argomenti/blink_2_2_funzioni_argomenti.ino new file mode 100644 index 0000000..aa9074e --- /dev/null +++ b/basic/blinks/blink_2_2_funzioni_argomenti/blink_2_2_funzioni_argomenti.ino @@ -0,0 +1,54 @@ + +/* + 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. velocita' ora e' una variabile o una costante ? + * + * Esercizi sucessivi sulle funzioni: blink_5 e 6 + */ diff --git a/basic/blinks/blink_3_1_while_veloce/blink_3_1_while_veloce.ino b/basic/blinks/blink_3_1_while_veloce/blink_3_1_while_veloce.ino new file mode 100644 index 0000000..4e86c4d --- /dev/null +++ b/basic/blinks/blink_3_1_while_veloce/blink_3_1_while_veloce.ino @@ -0,0 +1,44 @@ +/* + Blink v4: while loop + + Accensione e spegnimanto di un LED utilizzando un ciclo + iterativo while per comandare il lampeggio. + + Iterazione modificata da una variabile. + + */ + +const int led = 13; // Il valore non cambia + // durante l'esecuzione del programm + + +// ///////////////// +// 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 una variabile per controllare il ciclo iterativo + while (iterator < 10) { // Condizione del ciclo + iterator = iterator + 1 ; // incrementa l'iteratore + brilla(30 * iterator); // accende e spegne rapidamente il LED + // la pausa e' in funzione della variabile iteratore + } +} + +// 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); // Mette il PIN del LED in stato acceso) + delay(velocita); // Pausa + digitalWrite(led, LOW); // Mette il PIN del LED in stato spento + delay(velocita); // Pausa +} + 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 new file mode 100644 index 0000000..ad4bb60 --- /dev/null +++ b/basic/blinks/blink_3_ciclo_while/blink_3_ciclo_while.ino @@ -0,0 +1,53 @@ +/* + Blink v4: while loop + + Accensione e spegnimanto di un LED utilizzando un ciclo + iterativo while per comandare il lampeggio. + + */ + +const int led = 13; // LED OnBoard + + + +// ///////////////// +// 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 una variabile per controllare il ciclo iterativo + while (iterator < 10) { // Condizione del ciclo + + rapido(); + iterator = iterator + 1 ; // incrementa l'iteratore + } + +lento(); +} + +// Funzioni create dall'utente: +void rapido() { + // Accende e spegne rapidamente il LED + int breve = 200; + // sequenze di istruzione: accendere e spegnere il LED + digitalWrite(led, HIGH); // Mette il PIN del LED in stato acceso + delay(breve); // Pausa + digitalWrite(led, LOW); // Mette il PIN del LED in stato spento + delay(breve); // Pausa +} + + +void lento() { + // Accende e spegne lentamente il LED + int lunga = 1000; + // sequenze di istruzione: accendere e spegnere il LED + digitalWrite(led, HIGH); // Mette il PIN del LED in stato spento) + delay(lunga); // Pausa + digitalWrite(led, LOW); // Mette il PIN del LED in stato spento + delay(lunga); // Pausa +} 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 deleted file mode 100644 index cfa0210..0000000 --- a/basic/blinks/blink_3_funzioni_argomenti/blink_3_funzioni_argomenti.ino +++ /dev/null @@ -1,53 +0,0 @@ - -/* - 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? - * - * - * Esercizi sucessivi sulle funzioni: blink_5 e 6 - */ diff --git a/basic/blinks/blink_4_1_ciclo_for/blink_4_1_ciclo_for.ino b/basic/blinks/blink_4_1_ciclo_for/blink_4_1_ciclo_for.ino deleted file mode 100644 index a330935..0000000 --- a/basic/blinks/blink_4_1_ciclo_for/blink_4_1_ciclo_for.ino +++ /dev/null @@ -1,85 +0,0 @@ -/* - Blink v4: for loop - - Accensione e spegnimanto di un LED utilizzando un ciclo - iterativo while per comandare il lampeggio. - - Reference: http://arduino.cc/en/Reference/for - Altri esempi: sketchbook_andrea/programming/loops/ - - */ - -const int led = 13; // Il valore non cambia - // durante l'esecuzione del programma - - -// ///////////////// -// 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) -// i++ incrementa di uno la variabile - brilla(30 * i); // accende e spegne rapidamente il LED - // la pausa e' in funzione della variabile iteratore -} -} - -// 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. Che differenza c'e' nella gestione dell'iteratore tra un ciclo - while e for ? -2. In quali casi si usa un ciclo for piuttosto che uno while? - -. -. -. -. -. -. -. -. -. -. -. -. -. -. -. -. -. -. -. - Soluzioni -1. Nel ciclo for l'iteratore e tutta la sua gestione avviene al di fuori - del corpo della struttura del ciclo. Questa viene esplicitamente definita. -2. Un ciclo for e' indicato per casi in cui si conosce e si vuole controllare - il numero delle iterazioni. - Un ciclo while quando basta controllare - il perdurare di una situazione di durata indefinita ad es. lo stato - di un bottone. Es: - - while (stato_bottone = HIGH) { - digitalWrite(LED, HI); -} -*/ diff --git a/basic/blinks/blink_4_1_ciclo_for_veloce/blink_4_1_ciclo_for_veloce.ino b/basic/blinks/blink_4_1_ciclo_for_veloce/blink_4_1_ciclo_for_veloce.ino new file mode 100644 index 0000000..a330935 --- /dev/null +++ b/basic/blinks/blink_4_1_ciclo_for_veloce/blink_4_1_ciclo_for_veloce.ino @@ -0,0 +1,85 @@ +/* + Blink v4: for loop + + Accensione e spegnimanto di un LED utilizzando un ciclo + iterativo while per comandare il lampeggio. + + Reference: http://arduino.cc/en/Reference/for + Altri esempi: sketchbook_andrea/programming/loops/ + + */ + +const int led = 13; // Il valore non cambia + // durante l'esecuzione del programma + + +// ///////////////// +// 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) +// i++ incrementa di uno la variabile + brilla(30 * i); // accende e spegne rapidamente il LED + // la pausa e' in funzione della variabile iteratore +} +} + +// 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. Che differenza c'e' nella gestione dell'iteratore tra un ciclo + while e for ? +2. In quali casi si usa un ciclo for piuttosto che uno while? + +. +. +. +. +. +. +. +. +. +. +. +. +. +. +. +. +. +. +. + Soluzioni +1. Nel ciclo for l'iteratore e tutta la sua gestione avviene al di fuori + del corpo della struttura del ciclo. Questa viene esplicitamente definita. +2. Un ciclo for e' indicato per casi in cui si conosce e si vuole controllare + il numero delle iterazioni. + Un ciclo while quando basta controllare + il perdurare di una situazione di durata indefinita ad es. lo stato + di un bottone. Es: + + while (stato_bottone = HIGH) { + digitalWrite(LED, HI); +} +*/ 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 new file mode 100644 index 0000000..70e4ef2 --- /dev/null +++ b/basic/blinks/blink_4_ciclo_for/blink_4_ciclo_for.ino @@ -0,0 +1,53 @@ +/* + Blink v4: while loop + + Accensione e spegnimanto di un LED utilizzando un ciclo + iterativo while per comandare il lampeggio. + + */ + +const int led = 13; // LED OnBoard + + + +// ///////////////// +// 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(); // Unica istruzione + } + +lento(); +} + +// Funzioni create dall'utente: +void rapido() { + // Accende e spegne rapidamente il LED + int breve = 200; + // sequenze di istruzione: accendere e spegnere il LED + digitalWrite(led, HIGH); // Mette il PIN del LED in stato acceso + delay(breve); // Pausa + digitalWrite(led, LOW); // Mette il PIN del LED in stato spento + delay(breve); // Pausa +} + + +void lento() { + // Accende e spegne lentamente il LED + int lunga = 1000; + // sequenze di istruzione: accendere e spegnere il LED + digitalWrite(led, HIGH); // Mette il PIN del LED in stato spento) + delay(lunga); // Pausa + digitalWrite(led, LOW); // Mette il PIN del LED in stato spento + delay(lunga); // Pausa +} 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 deleted file mode 100644 index e647bfd..0000000 --- a/basic/blinks/blink_4_ciclo_while/blink_4_ciclo_while.ino +++ /dev/null @@ -1,42 +0,0 @@ -/* - Blink v4: while loop - - Accensione e spegnimanto di un LED utilizzando un ciclo - iterativo while per comandare il lampeggio. - - */ - -const int led = 13; // Il valore non cambia - // durante l'esecuzione del programm - - -// ///////////////// -// 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 una variabile per controllare il ciclo iterativo - while (iterator < 10) { // Condizione del ciclo - iterator = iterator + 1 ; // incrementa l'iteratore - brilla(30 * iterator); // accende e spegne rapidamente il LED - // la pausa e' in funzione della variabile iteratore - } -} - -// 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 -} -