}
// ///////////////
-// 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)
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
// //////////////
// 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
// 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
}
// 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?
+ */
+++ /dev/null
-/*
- 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
- }
-}
-
-
-
-
-
+++ /dev/null
-/*
- 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);
-}
-
-
-
-
--- /dev/null
+
+// ////////////
+// 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
+ */
+
+ */
--- /dev/null
+/*
+ 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);
+}
+
+
+++ /dev/null
-/*
- 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);
-}
-
-
--- /dev/null
+/*
+ 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.
+ *
+ */
+
+
+
+++ /dev/null
-/*
- 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);
-}
-
-
+++ /dev/null
-/*
- 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
-}
-
-
--- /dev/null
+/*
+ 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
+ }
+}
+
+
+
+
+
--- /dev/null
+/*
+ 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!
+ */
+
+
+
+
+
+
+
+++ /dev/null
-/*
- 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?
--- /dev/null
+/*
+ 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);
+ }
+ }
+}
+
+
+