From 52a20eed39eaa7c330283acced880f5a90b5d550 Mon Sep 17 00:00:00 2001 From: eaman Date: Fri, 23 Sep 2016 16:22:18 +0200 Subject: [PATCH] Blink senza variabili, inizio corso --- basic/pwm/pwm_0_stati/pwm_0_stati.ino | 11 +- .../loop_array_millis/loop_array_millis.ino | 4 +- multitasking/millis/pwm_millis/pwm_millis.ino | 40 +++++ oggi/blink_0/blink_0.ino | 31 ++++ oggi/blink_1_variabili/blink_1_variabili.ino | 39 +++++ oggi/blink_2_1_sos/blink_2_1_sos.ino | 159 ++++++++++++++++++ .../blink_2_2_funzioni_argomenti.ino | 54 ++++++ oggi/blink_2_funzioni/blink_2_funzioni.ino | 65 +++++++ 8 files changed, 396 insertions(+), 7 deletions(-) create mode 100644 multitasking/millis/pwm_millis/pwm_millis.ino create mode 100644 oggi/blink_0/blink_0.ino create mode 100644 oggi/blink_1_variabili/blink_1_variabili.ino create mode 100644 oggi/blink_2_1_sos/blink_2_1_sos.ino create mode 100644 oggi/blink_2_2_funzioni_argomenti/blink_2_2_funzioni_argomenti.ino create mode 100644 oggi/blink_2_funzioni/blink_2_funzioni.ino diff --git a/basic/pwm/pwm_0_stati/pwm_0_stati.ino b/basic/pwm/pwm_0_stati/pwm_0_stati.ino index 567d431..3863c4a 100644 --- a/basic/pwm/pwm_0_stati/pwm_0_stati.ino +++ b/basic/pwm/pwm_0_stati/pwm_0_stati.ino @@ -15,22 +15,23 @@ void setup() { } void loop() { - // Ledd al 100% : 255 + // OUTPUT al 100% : 255 analogWrite(led, brightness) ; delay(pausa); - // Ledd al 75% : 191 + // OUTPUT al 75% : 191 analogWrite(led, brightness * 0.75) ; delay(pausa); - // Ledd al 50% : 127 + // OUTPUT al 50% : 127 analogWrite(led, brightness * 0.5) ; delay(pausa); - // Ledd al 25%: 63 + // OUTPUT al 25%: 63 analogWrite(led, brightness * 0.25 ) ; delay(pausa); - // Ledd al 0% + // OUTPUT al 0% analogWrite(led, brightness * 0) ; + delay(pausa); } diff --git a/multitasking/millis/loop_array_millis/loop_array_millis.ino b/multitasking/millis/loop_array_millis/loop_array_millis.ino index c3b5d8c..f366f65 100644 --- a/multitasking/millis/loop_array_millis/loop_array_millis.ino +++ b/multitasking/millis/loop_array_millis/loop_array_millis.ino @@ -14,12 +14,12 @@ L'array puo' contenere un numero arbitrario di led */ byte ledPins[] = { // Domanda: cosa succede se uso int? - 9, 10, 11, 12 + 2, 3, 4, 5, 6, 7, 8, 9 } ; //Array long previousMillis ; -long interval = 1000; +long interval = 200; byte i = 0; diff --git a/multitasking/millis/pwm_millis/pwm_millis.ino b/multitasking/millis/pwm_millis/pwm_millis.ino new file mode 100644 index 0000000..4a1d117 --- /dev/null +++ b/multitasking/millis/pwm_millis/pwm_millis.ino @@ -0,0 +1,40 @@ +/* + Fade + + PWM per un LED: aumentare progressivamente la luminosita'. + Utilizza la funzione millis() invece che un delay() + in modo da non blocare il processore. + + */ + + +// the setup routine runs once when you press reset: +void setup() { + pinMode(9, OUTPUT); // Il PIN nove va dichiarato come un OUTPUT +} + +void loop() { + +pwmUp(9, 3000); + +} + +// Funzioni: + +void pwmUp(byte led, int speed) { + // Aumenta progressivamente la luminosita' usanndo millis() + // quindi senza bloccare il processore + + static byte brightness = 0; // Valore iniziale per il PWM del LED + static long previousMillis = 0; + + analogWrite(led, brightness); // La funziona analogWrite utilizza il PWM + // a 8 bit integrato nel MCU: simula un serie di valori intermedi + // nell'intervallo discreto con minimo 0 (spento) e massimo 255 (acceso). + + if ((millis() - previousMillis) > speed / 256) { + brightness = brightness + 1; // Incrementiamo la luminosita' + previousMillis = millis(); + }; +} + diff --git a/oggi/blink_0/blink_0.ino b/oggi/blink_0/blink_0.ino new file mode 100644 index 0000000..9cd59f5 --- /dev/null +++ b/oggi/blink_0/blink_0.ino @@ -0,0 +1,31 @@ +// 1. //////////// +// Commento iniziale multi linea +/* + Blink + + Accensione e spegnimanto di un LED utilizzando variabili + per impostare la velocita' del lampeggio. + + */ + +// 2. ////////////// +// Dichiarazione variabili +// + // Il LED onboard corrisponde al PIN 13 + // Ha una resistenza premontata + +// 3. ///////////////// +// Setup: eseguita una volta sola all'accensione della scheda +void setup() { + pinMode(13, OUTPUT); // Abilita il PIN del LED come OUTPUT in modo che + // possa essere acceso +} + +// 4. /////////////// +// loop: Le istruzioni vengono eseguite all'infinito +void loop() { + digitalWrite(13, HIGH); // Mette il PIN del LED in stato acceso + delay(500); // Aspetta un secondo (mille millisecondi) + digitalWrite(13, LOW); // Mette il PIN del LED in stato spento + delay(500); // Aspetta mezzo secondo +} diff --git a/oggi/blink_1_variabili/blink_1_variabili.ino b/oggi/blink_1_variabili/blink_1_variabili.ino new file mode 100644 index 0000000..ec6c3c0 --- /dev/null +++ b/oggi/blink_1_variabili/blink_1_variabili.ino @@ -0,0 +1,39 @@ +// //////////// +// Commento iniziale +/* + Blink v1 + + Accensione e spegnimanto di un LED utilizzando variabili + per impostare la velocita' del lampeggio. + + */ + +// ////////////// +// Dichiarazione variabili + +// 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() { + 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(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/oggi/blink_2_1_sos/blink_2_1_sos.ino b/oggi/blink_2_1_sos/blink_2_1_sos.ino new file mode 100644 index 0000000..aa53006 --- /dev/null +++ b/oggi/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/oggi/blink_2_2_funzioni_argomenti/blink_2_2_funzioni_argomenti.ino b/oggi/blink_2_2_funzioni_argomenti/blink_2_2_funzioni_argomenti.ino new file mode 100644 index 0000000..aa9074e --- /dev/null +++ b/oggi/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/oggi/blink_2_funzioni/blink_2_funzioni.ino b/oggi/blink_2_funzioni/blink_2_funzioni.ino new file mode 100644 index 0000000..92db22b --- /dev/null +++ b/oggi/blink_2_funzioni/blink_2_funzioni.ino @@ -0,0 +1,65 @@ + +// //////////// +// 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 +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() { + rapido(); // accende e spegne rapidamente il LED + rapido(); // accende e spegne rapidamente il LED + 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. 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? + + 3. Esercizio: creare una funzione per effettuare un S.O.S. : ...---... + */ -- 2.39.2