]> git.piffa.net Git - sketchbook_andrea/commitdiff
Millis
authoreaman <eaman@time.andreamanni.com>
Mon, 20 Jun 2016 15:29:35 +0000 (17:29 +0200)
committereaman <eaman@time.andreamanni.com>
Mon, 20 Jun 2016 15:29:35 +0000 (17:29 +0200)
multitasking/BlinkWithoutDelay_1/BlinkWithoutDelay_1.ino
multitasking/BlinkWithoutDelay_2_led/BlinkWithoutDelay_2_led.ino
multitasking/BlinkWithoutDelay_3_funzione/BlinkWithoutDelay_3_funzione.ino
multitasking/BlinkWithoutDelay_4_argomento/BlinkWithoutDelay_4_argomento.ino
multitasking/BlinkWithoutDelay_5_cleanup/BlinkWithoutDelay_5_cleanup.ino
multitasking/BlinkWithoutDelay_6_class/BlinkWithoutDelay_6_class.ino
multitasking/blink_0_soluzione/blink_0_soluzione.ino

index bdc58029d9a6054310ee29909485b06760f0926e..f7fee43e2b2d63d4f75d69ccc47ae5e54180c4ca 100644 (file)
@@ -24,7 +24,7 @@
 
 // constants won't change. Used here to 
 // set pin numbers:
-const int ledPin =  13;      // the number of the LED pin
+const int ledPin =  13;      
 
 // Variables will change:
 int ledState = LOW;             // ledState used to set the LED
@@ -32,7 +32,7 @@ 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.
-long interval = 1000;           // interval at which to blink (milliseconds)
+const long interval = 1000;           // interval at which to blink (milliseconds)
 
 void setup() {
   // set the digital pin as output:
@@ -49,7 +49,7 @@ void loop()
   // blink the LED.
  
   if(millis() - previousMillis > interval) {
-    // save the last time you blinked the LED 
+    // Aggiorniamo il contatore previousMillis
     previousMillis = millis();   
 
     // if the LED is off turn it on and vice-versa:
@@ -57,7 +57,7 @@ void loop()
       ledState = HIGH;
     else
       ledState = LOW;
-    // e' possibile semplificare queta operazione?
+    // 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:
index 89f579355e0de1b994fb8e1b290e372cf38ac4f1..02833391a3f1d6fdee3a939c0a2a7e32c9a40170 100644 (file)
 
 // constants won't change. Used here to 
 // set pin numbers:
-const int ledA =  13;      // the number of the LED pin
-int ledB = 12; //Secondo LED
+const int ledA = 13;      // Primo LED
+const int ledB = 12;      // Secondo LED
 
-// Variables will change:
+// 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)
+long intervalB = 500;            // interval at which to blink (milliseconds)
 
 void setup() {
   // set the digital pin as output:
@@ -47,14 +47,7 @@ void setup() {
 
 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.
-
-// First LED
+// Primo LED
   if(millis() - previousMillisA > intervalA) {
     // save the last time you blinked the LED 
     previousMillisA = millis();   
@@ -68,7 +61,7 @@ void loop()
     digitalWrite(ledA, ledStateA);
   }
   
-// Second LED
+// Secondo LED
     if(millis() - previousMillisB > intervalB) {
     // save the last time you blinked the LED 
     previousMillisB = millis();   
index a5db67b3cb71611d4bb69ac263eb2358e86070fd..93387bd7d4d174efdad86c442670b01dc1f028bd 100644 (file)
@@ -12,7 +12,7 @@
 
 /////////////
 // First LED
-int ledA =  13;      // the number of the LED pin
+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
@@ -22,8 +22,9 @@ long intervalA = 1000;           // interval at which to blink (milliseconds)
 void lightLedA () ;
 
 //////////////
-// Second LED
-int ledB = 12; //Secondo LED
+//  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)
index 8810f2733641829ae16645ee35c92aabf0c9369f..ae2205af4810eb34e9af2359503cd1bfcef8e3e8 100644 (file)
@@ -24,7 +24,7 @@ void setup() {
 
 void loop()
 {
-  lightLedA(1000);
+  lightLedA(333);
   lightLedB(500);
 }
 
index 17fe931f5eeae757503abbeeee6877e0dcddefd0..2a74c5c6364d1a3e302b629a85cda3763e71c405 100644 (file)
@@ -1,20 +1,23 @@
 /* Blink without Delay - Pulizia
 
-Semplificato il ciclo condizionale
+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
-int ledA =  13;      // the number of the LED pin
+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
-int ledB = 12; //Secondo LED
-int ledStateB = LOW;             // ledState used to set the LED
+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() {
@@ -48,14 +51,12 @@ void lightLedA (int interval) {
 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:
-    ledStateB = !ledStateB ; // Inverti il LED
+  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.
   }
-  digitalWrite(ledB, ledStateB);
 }
 /* Domande:
  1. E' possibile avere una sola funzione che permetta di gestire 
index 2744341276d41b6555a52f65000e779f90e57e39..7a1f27e3363469c4a83b1166032a29d1d4bf2ce7 100644 (file)
@@ -11,7 +11,7 @@ class Lampeggiatore {
   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
+  long previousMillis ;  // precedente cambio di stato
 
   // Constructor: come viene instanziato un oggetto facente parte della classe
 public:
index 25b4afde5c27ba969f65b09544813f3c37075045..53aec5da51ed3b6001edfd1de0ba6938c6103406 100644 (file)
@@ -4,6 +4,12 @@
  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
@@ -11,7 +17,6 @@
  0  |  1    x   |   x
  0  |  0        |   x
  
- Periodo = 500ms
  
  */
 
@@ -73,3 +78,4 @@ void loop() {
 
 
 
+