]> git.piffa.net Git - sketchbook_andrea/commitdiff
Multitasking
authoreaman <eaman@pad.piffa.net>
Mon, 6 Feb 2017 02:39:56 +0000 (03:39 +0100)
committereaman <eaman@pad.piffa.net>
Mon, 6 Feb 2017 02:39:56 +0000 (03:39 +0100)
12 files changed:
basic/blinks/blink_0/blink_0.ino
basic/blinks/blink_1_variabili/blink_1_variabili.ino
multitasking/BlinkWithoutDelay_1/BlinkWithoutDelay_1.ino
multitasking/BlinkWithoutDelay_2_led/BlinkWithoutDelay_2_led.ino
multitasking/BlinkWithoutDelay_2_led_cleanup/BlinkWithoutDelay_2_led_cleanup.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_1_interrupt/BlinkWithoutDelay_6_1_interrupt.ino
multitasking/BlinkWithoutDelay_6_class/BlinkWithoutDelay_6_class.ino
multitasking/BlinkWithoutDelay_7_struct/BlinkWithoutDelay_7_struct.ino
multitasking/BlinkWithoutDelay_8_struct_pointer/BlinkWithoutDelay_8_struct_pointer.ino

index f26f96d7fa5255e6740cce52b38ae15ad3f8fc34..3998d68a2b88bf1cf6e9af08312656bc12bcb2dc 100644 (file)
@@ -25,7 +25,7 @@ void setup() {
 // 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)
+  delay(200);              // Aspetta un secondo (mille millisecondi)
   digitalWrite(led, LOW);   // Mette il PIN del LED in stato spento
   delay(500);               // Aspetta mezzo secondo
 }
index 86a1171fcc9fbb45fa53ef26c1ed485431025ce4..9a4ed5bf17d8ea6ba18415453a039d2322f2a6b6 100644 (file)
@@ -13,8 +13,8 @@
 
 // Pin 13 ha un LED preconfigurato su molte schede Arduino
 int led = 13;
-int breve = 200;  // Variabile richiambile nel corso dell'esecuzione
-int lunga = 1000;
+int breve = 100;  // Variabile richiambile nel corso dell'esecuzione
+int lunga = 400;
 
 // /////////////////
 // Setup: eseguita una volta sola all'accensione della scheda
@@ -27,10 +27,21 @@ void setup() {
 // loop: Le istruzioni vengono eseguite all'infinito
 void loop() {
   digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
+  delay(breve +40);               // wait for a second
+  digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
+  delay(breve +40);               // wait for a second
+
+   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(breve -40) 
+  ;               // wait for a second
+  digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
+  delay(breve -40);               // 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
index b7a04a9641948e0a960721d9dbcabc8125fe5e79..408fd16b7ec1d672b193c551478e7deb714afec4 100644 (file)
@@ -56,9 +56,11 @@ void loop()
   // the LED is bigger than the interval at which you want to 
   // blink the LED.
  
-  if (millis() > previousMillis + interval) {
+  if (millis() >= previousMillis + interval) {
     // Aggiorniamo il contatore previousMillis
-    previousMillis = millis();   
+    previousMillis += interval ; 
+    // previousMillis = millis(); // 3) Cosa succederebbe se fosse
+    // passato piu' di 1ms dall'evento all'azione?
 
     // if the LED is off turn it on and vice-versa:
     if (ledState == LOW)
@@ -79,4 +81,10 @@ void loop()
       dovranno aggiungere.
    2. E' ora agevole cambiare gli intervalli dei due LED? 
       Modificare gli intervalli dei due led (es 500ms - 320ms)
+
+
+
+   Risposta
+   3. Si sarebbe introdotto uno slip (ritardo) nei tempi dello sketch
+
  */
index 2100ead96aaba26397c4f252881e6c134b79eac6..fb411e9aea6e0ee0687812c307d794124da7f625 100644 (file)
@@ -14,7 +14,7 @@
  by David A. Mellis
  modified 8 Feb 2010
  by Paul Stoffregen
- modified by eaman
+ modified by Andrea Manni
  
  This example code is in the public domain.
  
@@ -48,9 +48,9 @@ void setup() {
 void loop()
 {
 // Primo LED
-  if (millis() > previousMillisA + intervalA) {
-    // save the last time you blinked the LED 
-    previousMillisA = millis();   
+  if (millis() >= previousMillisA + intervalA) {
+    // Aggiornimo il riferimento temporale
+    previousMillisA += intervalA;
 
     // if the LED is off turn it on and vice-versa:
     if (ledStateA == LOW)
@@ -62,9 +62,9 @@ void loop()
   }
   
 // Secondo LED
-    if (millis() > previousMillisB + intervalB) {
+    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)
index 21c26eb05a20801b864cba50765bc314e25e9e86..7f338a93e9763f3de03997d17ac21135e2a2d109 100644 (file)
@@ -14,7 +14,7 @@
  by David A. Mellis
  modified 8 Feb 2010
  by Paul Stoffregen
- modified by eaman
+ modified by Andrea Manni
  
  This example code is in the public domain.
  
@@ -48,9 +48,9 @@ void setup() {
 void loop()
 {
 // Primo LED
-  if (millis() - previousMillisA > intervalA) {
-    // save the last time you blinked the LED 
-    previousMillisA = millis();   
+  if (millis() - previousMillisA >= intervalA) {
+    // Timestamp + timestamp = delta temporale
+    previousMillisA += intervalA ;
 
     // if the LED is off turn it on and vice-versa:
      ledStateA = !ledStateA;
@@ -59,9 +59,9 @@ void loop()
   }
   
 // Secondo LED: contratta
-    if (millis() - previousMillisB > intervalB) {
+    if (millis() - previousMillisB >= intervalB) {
     digitalWrite(ledB, !digitalRead(ledB));
-    previousMillisB = millis();   
+    previousMillisB += intervalB ;
   }
 }
 
index a77facafd1dd0069b8cd7eec38e1ea66b141d6a1..db0ed89e2c2ba043b3e395a795bc836cc52e742a 100644 (file)
@@ -49,15 +49,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);
   }
@@ -67,15 +64,12 @@ void lightLedA () {
 void lightLedB () {
   long intervalB = 500;
    static int ledStateB ;  // https://www.arduino.cc/en/Reference/Static
-  if (millis() > previousMillisB + intervalB) {
+  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);
   }
index e2b28a94d3523ad83f078074dddbc0e7ab50f797..11c733875a65267fcce87e188157ff3c77d86a8f 100644 (file)
@@ -34,15 +34,12 @@ void loop()
 void lightLedA (int interval) {
   // Illumina il ledA secondo un intervallo passato come argomento
 
-  if (millis() > previousMillisA + interval) {
+  if (millis() - previousMillisA >= interval) {
     // save the last time you blinked the LED 
-    previousMillisA = millis();   
+    previousMillisA += interval;
 
     // 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);
   }
@@ -52,15 +49,12 @@ void lightLedA (int interval) {
 void lightLedB (int interval) {
   // Illumina il ledB secondo un intervallo passato come argomento
 
-  if (millis() > previousMillisB + interval) {
+  if (millis() - previousMillisB >= interval) {
     // save the last time you blinked the LED 
-    previousMillisB = millis();   
+    previousMillisB += interval;
 
     // 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);
   }
index bce667de1a3015e2aee024cbe6f07f23656ba20e..b0ba86efe7a817dc204f288aa052eedc44d62f2b 100644 (file)
@@ -38,9 +38,9 @@ void loop()
 void lightLedA (int interval) {
   // Illumina il ledA secondo un intervallo passato come argomento
 
-  if (millis() > previousMillisA + interval) {
+  if (millis() >= previousMillisA + interval) {
     // save the last time you blinked the LED 
-    previousMillisA = millis();   
+    previousMillisA += interval;
 
     // if the LED is off turn it on and vice-versa:
     ledStateA = !ledStateA ; // Inverti il LED
@@ -51,8 +51,8 @@ void lightLedA (int interval) {
 void lightLedB (int interval) {
   // Illumina il ledB secondo un intervallo passato come argomento
 
-  if (millis() - previousMillisB > interval) {   
-    previousMillisB = millis(); 
+  if (millis() - previousMillisB >= interval) {   
+    previousMillisB += interval;
   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.
index 175f70567a420a94be0253115318a7f037ba100e..fd77d6c00a9f0b7a9fe7da2da6ff7afb8b4c3433 100644 (file)
@@ -28,9 +28,9 @@ public:
   void Update () {
     // Illumina il ledB secondo un intervallo passato come argomento
 
-    if (millis() > previousMillis + interval) {
+    if (millis() - previousMillis >= interval) {
       // save the last time you blinked the LED 
-      previousMillis = millis();   
+      previousMillis += interval;
 
       // if the LED is off turn it on and vice-versa:
       ledState = !ledState ; // Inverti il LED
index 9ce5e9bf01e24b380a6cc01d4e7f63b296c36e71..628d1125cff01ebd43ba7513d94f8d16e46f31e1 100644 (file)
@@ -28,9 +28,9 @@ public:
   void Update () {
     // Illumina il ledB secondo un intervallo passato come argomento
 
-    if (millis() > previousMillis + interval) {
+    if (millis() - previousMillis >= interval) {
       // save the last time you blinked the LED 
-      previousMillis = millis();   
+      previousMillis += interval;
 
       // if the LED is off turn it on and vice-versa:
       ledState = !ledState ; // Inverti il LED
index e72666285569423af9762ee8e6c6b2cc2966c32c..8b555279498cbca4d3b33fef1d0f6ebcb5ad9992 100644 (file)
@@ -37,9 +37,9 @@ void loop()
 struct blinkLed lightLed(struct blinkLed temp) { // dataType tipo_di_struct nome_funzione(argomenti)
   // Illumina il ledA secondo un intervallo passato come argomento
 
-  if (millis() > temp.previousMillis + temp.interval) { // gli elementi dello struct sono accessibili tramite l'operatore [punto]
+  if (millis() - temp.previousMillis >= temp.interval) { // gli elementi dello struct sono accessibili tramite l'operatore [punto]
     // save the last time you blinked the LED 
-    temp.previousMillis = millis();   
+    temp.previousMillis += temp.interval ;
 
     // if the LED is off turn it on and vice-versa:
     temp.ledState = !temp.ledState ; // Inverti il LED
index f038199e6d1743ff516441a5bc56ac83209e6f96..d5cd783706e526241d90a7f03aa4901f8c15db9b 100644 (file)
@@ -43,8 +43,8 @@ void loop()
 void lightLed(struct blinkLed *temp) { // temp ora e' un pointer e non una struttura autonoma: pass by reference (not by value)
   // Illumina il ledA secondo un intervallo passato come argomento
 
-  if(millis() - (*temp).previousMillis > (*temp).interval) { // l'operatore punto ha priorita' maggiore rispetto al pointer asterisco
-    (*temp).previousMillis = millis();   
+  if(millis() - (*temp).previousMillis >= (*temp).interval) { // l'operatore punto ha priorita' maggiore rispetto al pointer asterisco
+    (*temp).previousMillis += (*temp).interval ;
 
     // if the LED is off turn it on and vice-versa:
     temp->ledState = !temp->ledState ; // Forma contratta, deference operator: temp->ledState == (*temp).ledState