+++ /dev/null
-/* Blink without Delay
-
- Turns on and off a light emitting diode(LED) connected to a digital
- pin, without using the delay() function. This means that other code
- can run at the same time without being interrupted by the LED code.
-
- The circuit:
- * LED attached from pin 13 to ground.
- * Note: on most Arduinos, there is already an LED on the board
- that's attached to pin 13, so no hardware is needed for this example.
-
-
- created 2005
- by David A. Mellis
- modified 8 Feb 2010
- by Paul Stoffregen
- modified by eaman
-
- This example code is in the public domain.
-
-
- http://www.arduino.cc/en/Tutorial/BlinkWithoutDelay
- */
-
-// constants won't change. Used here to
-// set pin numbers:
-const int ledPin = 13;
-
-// Variables will change:
-int ledState = LOW; // ledState used to set the LED
-long previousMillis = 0; // will store last time LED was updated
-
-// the follow variables is a long because the time, measured in miliseconds,
-// will quickly become a bigger number than can be stored in an int.
-const long interval = 1000; // interval at which to blink (milliseconds)
-
-void setup() {
- // set the digital pin as output:
- pinMode(ledPin, OUTPUT);
-}
-
-void loop()
-{
- // here is where you'd put code that needs to be running all the time.
-
- // check to see if it's time to blink the LED; that is, if the
- // difference between the current time and last time you blinked
- // the LED is bigger than the interval at which you want to
- // blink the LED.
-
- if (millis() > previousMillis + interval) {
- // Aggiorniamo il contatore previousMillis
- previousMillis = millis();
-
- // if the LED is off turn it on and vice-versa:
- if (ledState == LOW)
- ledState = HIGH;
- else
- ledState = LOW;
- // e' possibile semplificare questa operazione?
- // Hint: lo stato del LED e' binario: ha solo due stati possibili.
-
- // set the LED with the ledState of the variable:
- digitalWrite(ledPin, ledState);
- }
-}
-
-/* Domande
- 1. Aggioungere un LED che brilli ogni 500ms
- 2. E' ora agevole cambiare gli intervalli dei due LED?
- Modificare gli intervalli dei due led (es 500ms - 320ms)
- */
+++ /dev/null
-/* Blink without Delay - due led
-
- Turns on and off a light emitting diode(LED) connected to a digital
- pin, without using the delay() function. This means that other code
- can run at the same time without being interrupted by the LED code.
-
- The circuit:
- * LED attached from pin 13 to ground.
- * Note: on most Arduinos, there is already an LED on the board
- that's attached to pin 13, so no hardware is needed for this example.
-
-
- created 2005
- by David A. Mellis
- modified 8 Feb 2010
- by Paul Stoffregen
- modified by eaman
-
- This example code is in the public domain.
-
-
- http://www.arduino.cc/en/Tutorial/BlinkWithoutDelay
- */
-
-// constants won't change. Used here to
-// set pin numbers:
-const int ledA = 13; // Primo LED
-const int ledB = 12; // Secondo LED
-
-// Variabbili di stato
-int ledStateA = LOW; // ledState used to set the LED
-int ledStateB = LOW; // ledState used to set the LED
-
-long previousMillisA = 0; // will store last time LED was updated
-long previousMillisB = 0; // will store last time LED was updated
-
-// the follow variables is a long because the time, measured in miliseconds,
-// will quickly become a bigger number than can be stored in an int.
-long intervalA = 1000; // interval at which to blink (milliseconds)
-long intervalB = 500; // interval at which to blink (milliseconds)
-
-void setup() {
- // set the digital pin as output:
- pinMode(ledA, OUTPUT);
- pinMode(ledB, OUTPUT);
-}
-
-void loop()
-{
-// Primo LED
- if (millis() > previousMillisA + intervalA) {
- // save the last time you blinked the LED
- previousMillisA = millis();
-
- // if the LED is off turn it on and vice-versa:
- if (ledStateA == LOW)
- ledStateA = HIGH;
- else
- ledStateA = LOW;
- // set the LED with the ledState of the variable:
- digitalWrite(ledA, ledStateA);
- }
-
-// Secondo LED
- if (millis() > previousMillisB + intervalB) {
- // save the last time you blinked the LED
- previousMillisB = millis();
-
- // if the LED is off turn it on and vice-versa:
- if (ledStateB == LOW)
- ledStateB = HIGH;
- else
- ledStateB = LOW;
- // set the LED with the ledState of the variable:
- digitalWrite(ledB, ledStateB);
- }
-}
-
-/* Domande
- 1. Provare a isolare il codice per accendere ogni singolo led in una funzione:
- - Quali variabili determinano il comportamento del LED?
- - Come cambiano durante il corso dello script?
- - Sono globali o locali?
- - Quali parti vanno eseguite una sola volta e quali a ogni esecuzione?
- */
-
-
-
+++ /dev/null
-/* Blink without Delay
-
- Blink con funzione
-
- Soluzione: Provare a isolare il codice per accendere ogni singolo led in una funzione:
-
- - Quali variabili determinano il comportamento del LED?
- - Come cambiano durante il corso dello script?
- - Sono globali o locali?
-
- */
-
-/////////////
-// First LED
-const int ledA = 13; // the number of the LED pin
-// Variables will change:
-int ledStateA = LOW; // ledState used to set the LED
-long previousMillisA = 0; // will store last time LED was updated
-// the follow variables is a long because the time, measured in miliseconds,
-// will quickly become a bigger number than can be stored in an int.
-long intervalA = 1000; // interval at which to blink (milliseconds)
-void lightLedA () ;
-
-//////////////
-// Second LED
-// Now with less global variables thanks to static (see function body)
-const int ledB = 12; //Secondo LED
- // ledState used to set the LED
-long previousMillisB = 0; // will store last time LED was updated
- // interval at which to blink (milliseconds)
-void lightLedB () ;
-
-
-void setup() {
- // set the digital pin as output:
- pinMode(ledA, OUTPUT);
- pinMode(ledB, OUTPUT);
-}
-
-void loop()
-{
- lightLedA();
- lightLedB();
-}
-
-
-// Funzioni:
-
-void lightLedA () {
- if (millis() > previousMillisA + intervalA) {
- // save the last time you blinked the LED
- previousMillisA = millis();
-
- // if the LED is off turn it on and vice-versa:
- if (ledStateA == LOW)
- ledStateA = HIGH;
- else
- ledStateA = LOW;
- // set the LED with the ledState of the variable:
- digitalWrite(ledA, ledStateA);
- }
-
-}
-
-void lightLedB () {
- long intervalB = 500;
- static int ledStateB ; // https://www.arduino.cc/en/Reference/Static
- if (millis() > previousMillisB + intervalB) {
- // save the last time you blinked the LED
- previousMillisB = millis();
-
- // if the LED is off turn it on and vice-versa:
- if (ledStateB == LOW)
- ledStateB = HIGH;
- else
- ledStateB = LOW;
- // set the LED with the ledState of the variable:
- digitalWrite(ledB, ledStateB);
- }
-}
-
-
-/* Domande
- 1. Modificare le funzioni in modo che accettino come parametro
- l'intervallo di lampeggio.
-
- */
-
-
-
-
-
-
+++ /dev/null
-/* Blink without Delay
- Soluzione
-
- Introdotto un argomento per la funzione che nodifica l'intervallo di lampeggio
-
- */
-
-// First LED
-int ledA = 13; // the number of the LED pin
-// Variables will change:
-int ledStateA = LOW; // ledState used to set the LED
-long previousMillisA = 0; // will store last time LED was updated
-
-// Second LED data
-int ledB = 12; //Secondo LED
-int ledStateB = LOW; // ledState used to set the LED
-long previousMillisB = 0; // will store last time LED was updated
-
-void setup() {
- // set the digital pin as output:
- pinMode(ledA, OUTPUT);
- pinMode(ledB, OUTPUT);
-}
-
-void loop()
-{
- lightLedA(333);
- lightLedB(500);
-}
-
-//////////////
-// Funzioni
-
-void lightLedA (int interval) {
- // Illumina il ledA secondo un intervallo passato come argomento
-
- if (millis() > previousMillisA + interval) {
- // save the last time you blinked the LED
- previousMillisA = millis();
-
- // if the LED is off turn it on and vice-versa:
- if (ledStateA == LOW)
- ledStateA = HIGH;
- else
- ledStateA = LOW;
- // set the LED with the ledState of the variable:
- digitalWrite(ledA, ledStateA);
- }
-
-}
-
-void lightLedB (int interval) {
- // Illumina il ledB secondo un intervallo passato come argomento
-
- if (millis() > previousMillisB + interval) {
- // save the last time you blinked the LED
- previousMillisB = millis();
-
- // if the LED is off turn it on and vice-versa:
- if (ledStateB == LOW)
- ledStateB = HIGH;
- else
- ledStateB = LOW;
- // set the LED with the ledState of the variable:
- digitalWrite(ledB, ledStateB);
- }
-}
-
-/* Approfondimenti
-- Quali similitudini ci sono tra le due funzioni?
-- Distinguere i dati comuni tra le due funzioni che ci servono per
- far lampeggiare i LED
-- Distinguere i dati che caratterizzano un LED rispetto all'altro
-- Provare a integrare le variabili relative ai due LED dentro le
- rispettive funzioni.
-- Sarebbe possibile scrivere una funzione che possa interagire con un LED qualunque?
- ES: Come inpostare il PIN del LED? Come gestire lo stato del LED?
-*/
-
-
-
-
-
-
-
+++ /dev/null
-/* Blink without Delay - Pulizia
-
-Semplificato il ciclo condizionale, la seconda funzione non necessita
-di una variabile di stato per tracciare il LED.
-
- */
-
-// constants won't change. Used here to
-// set pin numbers:
-
-// First LED
-const int ledA = 13; // the number of the LED pin
-// Variables will change:
-int ledStateA = LOW; // ledState used to set the LED
-long previousMillisA = 0; // will store last time LED was updated
-
-// Second LED data
-const int ledB = 12; //Secondo LED
-// int ledStateB = LOW; // Possiamo leggere lo stato del registro del LED
- // con digitalRead()
-long previousMillisB = 0; // will store last time LED was updated
-
-void setup() {
- // set the digital pin as output:
- pinMode(ledA, OUTPUT);
- pinMode(ledB, OUTPUT);
-}
-
-void loop()
-{
- lightLedA(1000);
- lightLedB(500);
-}
-
-////////////////
-// Funzioni
-
-void lightLedA (int interval) {
- // Illumina il ledA secondo un intervallo passato come argomento
-
- if (millis() > previousMillisA + interval) {
- // save the last time you blinked the LED
- previousMillisA = millis();
-
- // if the LED is off turn it on and vice-versa:
- ledStateA = !ledStateA ; // Inverti il LED
- }
- digitalWrite(ledA, ledStateA);
-}
-
-void lightLedB (int interval) {
- // Illumina il ledB secondo un intervallo passato come argomento
-
- if (millis() > previousMillisB + interval) {
- previousMillisB = millis();
- digitalWrite(ledB, !digitalRead(ledB));
- // Leggiamo direttamente il registro di ledB e scriviamo il suo opposto,
- // questo ci permette di non dover avere una variabile per tracciare lo stato.
- }
-}
-/* Domande:
- 1. E' possibile avere una sola funzione che permetta di gestire
- qualunque LED io voglia aggiungere?
-
-/* Approfondimenti
- - integrazione tra funzioni e dati: programmazione a oggetti
- - Uso di pointers per modificare dati esterni allo scope della funzione, static
- - Uso di forme di dati strutturate (array, struct) per scambiare dati tra funzioni e programma
- */
-
-
-
-
-
-
-
-
-
-
-
+++ /dev/null
-/* Blink without Delay
- Class: definizione di una classe LED.
-
- L'oggetto LED integra i dati (proprieta') del led con i metodi (le funzioni).
- */
-
-// Oggetti:
-class Lampeggiatore {
- // Lampeggia un LED utilizzando millis()
- // Variabili
- int ledPin ; // il numero del LED pin
- int ledState ; // stato attuale del LED
- long interval ; // milliseconds di intervallo nel lampeggiare
- long previousMillis ; // precedente cambio di stato
-
- // Constructor: come viene instanziato un oggetto facente parte della classe
-public:
- Lampeggiatore(int pin, long time)
- {
- ledPin = pin;
- pinMode(ledPin, OUTPUT);
- ledState = LOW;
- previousMillis = 0;
- interval = time;
- }
-
-// Una funzione facente parte di una classe prende il nome di "metodo" della stessa:
- void Update () {
- // Illumina il ledB secondo un intervallo passato come argomento
-
- if (millis() > previousMillis + interval) {
- // save the last time you blinked the LED
- previousMillis = millis();
-
- // if the LED is off turn it on and vice-versa:
- ledState = !ledState ; // Inverti il LED
- }
- // set the LED with the ledState of the variable:
- digitalWrite(ledPin, ledState);
- }
-
-};
-
-// Instanziamo i due led dalla classe
-Lampeggiatore ledA(13, 1000);
-Lampeggiatore ledB(12, 500);
-
-void setup() {
-}
-
-void loop()
-{
-ledA.Update();
-ledB.Update();
-}
-
-/* Domande:
- 1. Ogni quante volte viene eseguito il codice del loop per ogni millisecondo?
- 2. Utilizzare un interrupt per richiamare Update()
- Es: https://learn.adafruit.com/multi-tasking-the-arduino-part-2/overview
- */
-
+// 1. ////////////
+// Commento iniziale multi linea
/*
- Blink
- Turns on an LED on for one second, then off for one second, repeatedly.
-
- This example code is in the public domain.
- */
+ Blink
-// Pin 13 has an LED connected on most Arduino boards.
-// give it a name:
-int led = 13;
+ Accensione e spegnimanto di un LED utilizzando variabili
+ per impostare la velocita' del lampeggio.
+
+ */
+
+// 2. //////////////
+// Dichiarazione variabili
+//
+int led = 13; // Il LED onboard corrisponde al PIN 13
+ // Ha una resistenza premontata
-// the setup routine runs once when you press reset:
+// 3. /////////////////
+// Setup: eseguita una volta sola all'accensione della scheda
void setup() {
- // initialize the digital pin as an output.
- pinMode(led, OUTPUT);
+ pinMode(led, OUTPUT); // Abilita il PIN del LED come OUTPUT in modo che
+ // possa essere acceso
}
-// the loop routine runs over and over again forever:
+// 4. ///////////////
+// loop: Le istruzioni vengono eseguite all'infinito
void loop() {
- digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
- delay(1000); // wait for a second
- digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
- delay(1000); // wait for a second
+ 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 spento
+ delay(500); // Aspetta mezzo secondo
}
-
-/* Domande
- 1. Aggiungere un secondo LED e farlo brillare ogni 500ms
- mentre il primo brilla ogni 1000ms
- 2. Cosa succederebbe se dovessi anche leggere un input da un sensore / bottone?
- */
-
+++ /dev/null
-/*
- Blink due LED - Soluzione
-
- Aggiungere un secondo LED e farlo brillare ogni 500ms
- mentre il primo brilla ogni 1000ms
-
- Massimo comun denominatore 1000 MCD 500 = 500ms
- Durata Periodo = 500ms
-
-
- Stati:
-
- a | b Changes
- ======== =========
- 1 | 1 x | x
- 1 | 0 | x
- 0 | 1 x | x
- 0 | 0 | x
-
-
- */
-
-// Pin 13 has an LED connected on most Arduino boards.
-// give it a name:
-const int ledA = 13; //Primo LED
-const int ledB = 12; //Secondo LED, con resistenza
-
-// the setup routine runs once when you press reset:
-void setup() {
- // initialize the digital pin as an output.
- pinMode(ledA, OUTPUT);
- pinMode(ledB, OUTPUT);
-}
-
-// the loop routine runs over and over again forever:
-void loop() {
- // Primo periodo
- digitalWrite(ledA, HIGH); // turn the LED on (HIGH is the voltage level)
- digitalWrite(ledB, HIGH);
- delay(500); // Minimo comun denominatore del periodo
-
- // Secondo periodo
- //digitalWrite(ledA, HIGH); // ledA non cambia
- digitalWrite(ledB, LOW);
- delay(500);
-
- // Terzo periodo
- digitalWrite(ledA, LOW);
- digitalWrite(ledB, HIGH);
- delay(500);
-
- // Quarto periodo
- //digitalWrite(ledA, LOW);
- digitalWrite(ledB, LOW);
- delay(500);
-}
-
-/* Domande
- 1. Altro scenartio: fare brillare un LED ogni 300ms mentre il secondo brilla ogni 400m
- 2. Aggiungere un terzo LED
- */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
--- /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. : ...---...
+ */
+++ /dev/null
-/* Knight Rider 1
- * --------------
- *
- * Basically an extension of Blink_LED.
- *
- *
- * (cleft) 2005 K3, Malmo University
- * @author: David Cuartielles
- * @hardware: David Cuartielles, Aaron Hallborg
- See: https://www.arduino.cc/en/Tutorial/KnightRider
-
- Schema semplificato:
- - http://lab.piffa.net/schemi/8_led_single_res_bb.png
- - http://lab.piffa.net/schemi/8_led_single_res_schem.png
- */
-
-int pin2 = 2;
-int pin3 = 3;
-int pin4 = 4;
-int pin5 = 5;
-int pin6 = 6;
-int pin7 = 7;
-int pin8 = 8;
-int pin9 = 9;
-int timer = 100;
-
-void setup(){
- pinMode(pin2, OUTPUT);
- pinMode(pin3, OUTPUT);
- pinMode(pin4, OUTPUT);
- pinMode(pin5, OUTPUT);
- pinMode(pin6, OUTPUT);
- pinMode(pin7, OUTPUT);
- pinMode(pin8, OUTPUT);
- pinMode(pin9, OUTPUT);
-}
-
-void loop() {
- digitalWrite(pin2, HIGH);
- delay(timer);
- digitalWrite(pin2, LOW);
- delay(timer);
-
- digitalWrite(pin3, HIGH);
- delay(timer);
- digitalWrite(pin3, LOW);
- delay(timer);
-
- digitalWrite(pin4, HIGH);
- delay(timer);
- digitalWrite(pin4, LOW);
- delay(timer);
-
- digitalWrite(pin5, HIGH);
- delay(timer);
- digitalWrite(pin5, LOW);
- delay(timer);
-
- digitalWrite(pin6, HIGH);
- delay(timer);
- digitalWrite(pin6, LOW);
- delay(timer);
-
- digitalWrite(pin7, HIGH);
- delay(timer);
- digitalWrite(pin7, LOW);
- delay(timer);
-
- digitalWrite(pin8, HIGH);
- delay(timer);
- digitalWrite(pin8, LOW);
- delay(timer);
-
- digitalWrite(pin9, HIGH);
- delay(timer);
- digitalWrite(pin9, LOW);
- delay(timer);
-
- // Ding! Mezzo giro
-
- digitalWrite(pin8, HIGH);
- delay(timer);
- digitalWrite(pin8, LOW);
- delay(timer);
-
- digitalWrite(pin7, HIGH);
- delay(timer);
- digitalWrite(pin7, LOW);
- delay(timer);
-
- digitalWrite(pin6, HIGH);
- delay(timer);
- digitalWrite(pin6, LOW);
- delay(timer);
-
- digitalWrite(pin5, HIGH);
- delay(timer);
- digitalWrite(pin5, LOW);
- delay(timer);
-
- digitalWrite(pin4, HIGH);
- delay(timer);
- digitalWrite(pin4, LOW);
- delay(timer);
-
- digitalWrite(pin3, HIGH);
- delay(timer);
- digitalWrite(pin3, LOW);
- delay(timer);
-}
+++ /dev/null
-/* Knight Rider 2
- * --------------
- *
- * Array e uso dei cicli iterativi.
- *
-
-
- Schema semplificato:
- - http://lab.piffa.net/schemi/8_led_single_res_bb.png
- - http://lab.piffa.net/schemi/8_led_single_res_schem.png
- */
-
-int pinArray[8] = {2, 3, 4, 5, 6, 7, 8, 9};
-int timer = 100;
-
-void setup(){
- // we make all the declarations at once
- for (int count=0;count<9;count++) {
- pinMode(pinArray[count], OUTPUT);
- }
-}
-
-void loop() {
- for (int count=0;count<8;count++) { // 8 e' un numero magico
- digitalWrite(pinArray[count], HIGH);
- delay(timer);
- digitalWrite(pinArray[count], LOW);
- delay(timer);
- }
-
-// Ciclo inverso: dall'alto in basso
- for (int count=8;count>=0;count--) {
- digitalWrite(pinArray[count], HIGH);
- delay(timer);
- digitalWrite(pinArray[count], LOW);
- delay(timer);
- }
-}
-
-/* Domande:
-
- 1. Come posso fare per saltare un elemento del loop?
- 2. Come posso fare per uscire completamente dal loop?
- 3. 8 e' un numero magico: come posso evitarlo?
-
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-.
-Soluzioni:
- 1. utilizzare continue
- 2. utilizzare break
- 3. Utilizzare un variabile sarebbe gia' un inizio, ancora meglio estrarre il
- valore tramite la funzione sizeof().
-Links:
-- http://www.tutorialspoint.com/cprogramming/c_continue_statement.htm
-- https://www.arduino.cc/en/Reference/Sizeof
-*/
-
-
+++ /dev/null
-/*
- For Loop Iteration
-
- Demonstrates the use of a for() loop.
- Lights multiple LEDs in sequence, then in reverse.
-
- The circuit:
- * LEDs from pins 2 through 9 to ground
-
- 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[8] = { // Domanda: cosa succede se uso int?
- 2,3,4,5,6,7,8,9}
-; //Array
-int timer = 100; // Pausa per far brillare i LED
-
-void setup() {
- Serial.begin(9600);
- // use a for loop to initialize each pin as an output:
- for (int thisPin = 0; thisPin < sizeof(ledPins); thisPin++) {
- pinMode(ledPins[thisPin], OUTPUT);
- Serial.print("Inizializzato pin n. ");
- Serial.println( thisPin);
- }
-
- Serial.print("Dimesione array: ");
- Serial.println(sizeof(ledPins));
-}
-
-void loop() {
- // loop from the lowest pin to the highest:
- for (int thisPin = 0; thisPin < sizeof(ledPins); thisPin++) {
- Serial.print("Accensione pin n. ");
- Serial.println(thisPin);
- // turn the pin on:
- digitalWrite(ledPins[thisPin], HIGH);
- delay(timer);
- // turn the pin off:
- digitalWrite(ledPins[thisPin], LOW);
- // Debug
-
- }
-
- // loop from the highest pin to the lowest:
- for (int thisPin = sizeof(ledPins) -1 ; thisPin > 0; thisPin--) {
- Serial.print("Accensione pin n. "); // Gli array sono indicizzati da 0
- Serial.println(thisPin);
- digitalWrite(ledPins[thisPin], HIGH);
- delay(timer);
- digitalWrite(ledPins[thisPin], LOW);
-
- }
-}