]> git.piffa.net Git - sketchbook_andrea/commitdiff
multitasking
authorAndrea Manni <andrea@piffa.net>
Mon, 4 May 2015 16:47:46 +0000 (18:47 +0200)
committerAndrea Manni <andrea@piffa.net>
Mon, 4 May 2015 16:47:46 +0000 (18:47 +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/BlinkWithoutDelay_7_struct/BlinkWithoutDelay_7_struct.ino
multitasking/blink_0_soluzione/blink_0_soluzione.ino
programming/functions/scope_1/scope_1.ino

index 605947dfb7441be6d076c445f1709f39355dec0c..509673950eea0e0bf4f9551543ff9c098072d7ff 100644 (file)
@@ -65,5 +65,6 @@ void loop()
 
 /* Domande
    1. Aggioungere un LED che brilli ogni 500ms
-   2. E' ora agevole cambiare gli intervalli dei due LED?
+   2. E' ora agevole cambiare gli intervalli dei due LED? 
+      Modificare gli intervalli dei due led (es 500ms - 320ms)
    */
index 293e2172a7319c2d573631f57644ee38747341ea..6bad7cd3bd535279974dc2cd0fa44e08c2f1a2ec 100644 (file)
@@ -83,8 +83,10 @@ void loop()
 
 /* Domande
  1. Provare a isolare il codice per accendere ogni singolo led in una funzione:
-    Quali variabili determinano il comportamento del LED?
-    Sono globali o locali? 
+    - 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?
  */
 
 
index 886dd5e98142f2af7055dd4f252f2def385e8b52..5f5f2aba16ffdc510edffb190419135ae3f2704e 100644 (file)
@@ -1,16 +1,15 @@
 /* Blink without Delay
  
- Soluzione
+ 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? 
  
-  3. Provare a isolare il codice per accendere ogni singolo led in una funzione:
-    Quali variabili determinano il comportamento del LED?
-    Sono globali o locali?
-    
  */
 
-// constants won't change. Used here to 
-// set pin numbers:
-
 /////////////
 // First LED
 int ledA =  13;      // the number of the LED pin
@@ -42,7 +41,7 @@ void loop()
 }
 
 
-// Funzioni
+// Funzioni:
 
 void lightLedA () {
   if(millis() - previousMillisA > intervalA) {
@@ -78,11 +77,12 @@ void lightLedB () {
 
 /* Domande
  1. Modificare le funzioni in modo che accettino come parametro
   l'intervallo di lampeggio.
-
+ l'intervallo di lampeggio.
  */
 
 
 
 
 
+
index a6ecbaf9cc55034ce08a2720da8c2c99ac9a3c54..8810f2733641829ae16645ee35c92aabf0c9369f 100644 (file)
@@ -68,11 +68,13 @@ void lightLedB (int interval) {
 
 /* Approfondimenti
 - Quali similitudini ci sono tra le due funzioni?
-- Come si dovrebbe fare per semplificare il codice
-  evitando di ripetere larti del codice simile tra loro?
 - 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?
 */
 
 
index cc3d0e094781de0923900b8f805ddbf46968fed0..70e9162162bf92ea8f40b4a83454cc7e5f2842f5 100644 (file)
@@ -57,10 +57,13 @@ void lightLedB (int interval) {
   }
   digitalWrite(ledB, ledStateB);
 }
-
+/* Domande:
+ 1. E' possibile avere una sola funzione che permetta di gestire 
+    qualunque LED io voglia aggiungere?
+    
 /* Approfondimenti
- - integrazione tra funzioni e dati
- - Rapporto tra global scope e uso di pointers
+ - integrazione tra funzioni e dati: programmazione a oggetti
+ - Uso di pointers per modificare dati esterni allo scope della funzione
  - Uso di forme di dati strutturate (array, struct) per scambiare dati tra funzioni e programma
  */
 
index 6734b14080af01747bc3f13c3220144032e309d8..2744341276d41b6555a52f65000e779f90e57e39 100644 (file)
@@ -1,9 +1,10 @@
 /* Blink without Delay
- Soluzione
+ Class: definizione di una classe LED.
  
- Introdotto un argomento per la funzione che nodifica l'intervallo di lampeggio 
+ L'oggetto LED integra i dati (proprieta') del led con i metodi (le funzioni).
  */
 
+// Oggetti:
 class Lampeggiatore {
   // Lampeggia un LED utilizzando millis()
   // Variabili
@@ -53,4 +54,9 @@ 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
+ */
 
index 621083ede47f4896e2b9d56789892295fb34ccbf..61a53b5b587dfa93160f11f616e5d62f89d93745 100644 (file)
@@ -21,13 +21,13 @@ blinkLed ledB = {
   12, LOW, 500, 0};
 
 void setup() {
-  pinMode(ledA.ledPin, OUTPUT);
+  pinMode(ledA.ledPin, OUTPUT); // Domanda: integrare l'impostazione del LED nel codice della funzione.
   pinMode(ledB.ledPin, OUTPUT);
 }
 
 void loop()
 {
- ledA = lightLed(ledA );
+ ledA = lightLed(ledA ); // Aggiorna lo stato del LED in base all'esecuzione della funzione
  ledB = lightLed(ledB );
 }
 
index 265390e15b8d1cdd202963422dd295babbf4963a..3a3751a298d57e4ab1496a9281611f8f3014b2bf 100644 (file)
@@ -1,12 +1,24 @@
 /*
   Blink due LED - Soluzione
-
+ Aggiungere un secondo LED e farlo brillare ogni 500ms
+ mentre il primo brilla ogni 1000ms
+ a  |  b
+ ========
+ 1  |  1
+ 1  |  0
+ 0  |  1 
+ 0  |  0
+ Periodo = 500ms
  */
 
 // Pin 13 has an LED connected on most Arduino boards.
 // give it a name:
 int ledA = 13; //Primo LED
-int ledB = 12; //Secondo LED
+int ledB = 12; //Secondo LED, con resistenza
 
 // the setup routine runs once when you press reset:
 void setup() {                
@@ -20,17 +32,20 @@ void loop() {
   digitalWrite(ledA, HIGH);   // turn the LED on (HIGH is the voltage level)
   digitalWrite(ledB, HIGH);
 
-  delay(500);               
+  delay(500);               // Minimo comun denominatore del periodo
+  //digitalWrite(ledA, HIGH); // ledA non cambia
   digitalWrite(ledB, LOW);
 
+
   delay(500);
   digitalWrite(ledA, LOW);
   digitalWrite(ledB, HIGH);
 
-
-  delay(500);               
+  delay(500);          
+  //digitalWrite(ledA, LOW);  
   digitalWrite(ledB, LOW);
 
+
   delay(500);
   digitalWrite(ledA, LOW);
   digitalWrite(ledB, LOW);
@@ -52,3 +67,5 @@ void loop() {
 
 
 
+
+
index 966228355f7f35f6be34a68a160e4e1018519a4b..8e524301b2de8db3bac1fd3ea77e639d53d63e1f 100644 (file)
@@ -10,7 +10,7 @@
   */
 
 
-boolean sposato = 1 ;
+boolean sposato = 1 ; // Variabile globale
 void setup(){
   Serial.begin(9600);
 }