]> git.piffa.net Git - sketchbook_andrea/blobdiff - multitasking/BlinkWithoutDelay_3_funzione/BlinkWithoutDelay_3_funzione.ino
Clean up multitasking, bottoni con pooling e interrupts
[sketchbook_andrea] / multitasking / BlinkWithoutDelay_3_funzione / BlinkWithoutDelay_3_funzione.ino
index 5f5f2aba16ffdc510edffb190419135ae3f2704e..098b5013035280f6e7195d867107bb1e5cb4a1d0 100644 (file)
@@ -1,4 +1,4 @@
-/* Blink without Delay
+/* Blink without Delay: Refactoring
  
  Blink con funzione
  
@@ -7,25 +7,26 @@
     - Quali variabili determinano il comportamento del LED?
     - Come cambiano durante il corso dello script?
     - Sono globali o locali? 
+
+Variabili: http://www.maffucci.it/2011/12/15/appunti-di-programmazione-su-arduino-variabili/ 
+
  */
 
 /////////////
 // 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
-// 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)
+const int ledA =  13;       // the number of the LED pin
+int ledStateA = LOW;        // ledState used to set the LED
+long previousMillisA = 0;   // will store last time LED was updated
+long intervalA = 1000;      // interval at which to blink (milliseconds)
+void lightLedA () ;
 
 //////////////
-// Second LED
-int ledB = 12; //Secondo LED
-int ledStateB = LOW;             // ledState used to set the LED
-long previousMillisB = 0;        // will store last time LED was updated
-long intervalB = 500;           // interval at which to blink (milliseconds)
+//  Second LED
+// Ora con meno variabili globali utilizzando static (vedi corpo della funzione)
+const int ledB = 12; //Secondo LED
+long previousMillisB = 0;    // will store last time LED was updated
+                             // interval at which to blink (milliseconds)
+void lightLedB () ;
 
 
 void setup() {
@@ -44,15 +45,12 @@ void loop()
 // Funzioni:
 
 void lightLedA () {
-  if(millis() - previousMillisA > intervalA) {
+  if (millis() - previousMillisA >=  intervalA) {
     // save the last time you blinked the LED 
-    previousMillisA = millis();   
+    previousMillisA += intervalA;
 
     // if the LED is off turn it on and vice-versa:
-    if (ledStateA == LOW)
-      ledStateA = HIGH;
-    else
-      ledStateA = LOW;
+      ledStateA = !ledStateA ;
     // set the LED with the ledState of the variable:
     digitalWrite(ledA, ledStateA);
   }
@@ -60,15 +58,14 @@ void lightLedA () {
 }
 
 void lightLedB () {
-  if(millis() - previousMillisB > intervalB) {
+  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();   
+    previousMillisB += intervalB ;
 
     // if the LED is off turn it on and vice-versa:
-    if (ledStateB == LOW)
-      ledStateB = HIGH;
-    else
-      ledStateB = LOW;
+      ledStateB = !ledStateB;
     // set the LED with the ledState of the variable:
     digitalWrite(ledB, ledStateB);
   }