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