]> git.piffa.net Git - aerei/commitdiff
Cleanup, esempi
authoreaman <andrea@piffa.net>
Mon, 30 Jan 2017 18:13:37 +0000 (19:13 +0100)
committereaman <andrea@piffa.net>
Mon, 30 Jan 2017 18:13:37 +0000 (19:13 +0100)
TODO
aerei/zeta/zeta_5_no_state/zeta_5_no_state.ino
aerei/zeta/zeta_prot/zeta_prot.ino
esempi/base/base.ino [new file with mode: 0644]
esempi/base_th/base_th.ino [new file with mode: 0644]
esempi/base_th_3stati/base_th_3stati.ino [new file with mode: 0644]
esempi/state_throttle/state_throttle.ino

diff --git a/TODO b/TODO
index d203d4ddc955a007a849607619f28532f31dc09f..843791c02a432793e31a7255186907909574f377 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,3 +1,9 @@
+* Esempi:
+    * FSM con gestione degli stati interna (da Zeta)
+    * Sequenza di LED
+    * FSM gerarchica: test iniziale, ON / OFF di tutti lo sketch, fly modes | demo 
+
+
 * Magnetometro: mettere l'attuale bianco / rosso in un oggetto con millis
   e magari farlo andare con una strip binaca + rossa piuttosto che RGB
 * Magnetometro: fare un RGB completo con due colori per il volo laterale
index 14f5d8caa76604071d7be80bccc7f45f58d08cbf..ce7161416df4f2e116743696eadae06f63d6fa32 100644 (file)
@@ -1,6 +1,6 @@
-/* Zeta test
- *  le funzioni finali sono da controllare
-
+/* Zeta senza state machine
+Gestione del Throttle con ciclo condizionale.
 
 */
 
@@ -16,12 +16,6 @@ const byte thrPin = A3;
 byte thr ;
 int thrIn ;
 
-long previousMillisA = 0;
-long previousMillisB = 0;
-
-unsigned long intervalA = 200;
-unsigned long intervalB = 200;
-
 void setup() {
   left.Invert() ; // Parte da stato invertito rispetto al default
   pinMode(rtail, OUTPUT);
@@ -62,33 +56,3 @@ digitalWrite(5, 1);
   Serial.println(thr);
 
 }
-
-
-// Functions
-// TODO: non funzionano :(
-
-
-void lampA () {
-  // Illumina la coda r a un tempo random
-  if (millis() - previousMillisA > intervalA) {
-    previousMillisA = millis();
-    intervalA = random(50, 255);
-    digitalWrite(rtail, !digitalRead(rtail));
-    // Leggiamo direttamente il registro di ledB e scriviamo il suo opposto,
-    // questo ci permette di non dover avere una variabile per tracciare lo stato.
-
-  }
-}
-
-void lampB () {
-  // Illumina la coda l a un tempo random
-
-  if (millis() - previousMillisB > intervalB) {
-    previousMillisB = millis();
-    intervalB = random(50, 255);
-    digitalWrite(ltail, !digitalRead(ltail));
-    // 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 600d69c94a4511ce767a711f7e73e3bb70641a84..98194a0ecf31db6fe8db7901af267a47f61c52e1 100644 (file)
@@ -1,6 +1,6 @@
-/* Zeta test
- *  le funzioni finali sono da controllare
+/* Zeta prototipo
 
+   Sketch da breadboard, il throttle e' simulato con un potenziometro.
 
 */
 
diff --git a/esempi/base/base.ino b/esempi/base/base.ino
new file mode 100644 (file)
index 0000000..e93c743
--- /dev/null
@@ -0,0 +1,28 @@
+/* Esempio
+
+   Esempio base:
+   2 LED / Strisce laterali che lampeggiano alternativamente
+   1 LED / Striscia sotto in FADE
+*/
+
+#include <common.h>
+
+// Instanziamo un LED fuori dal loop
+Lampeggiatore left = 12;
+Lampeggiatore right = 11;
+Pwm sotto = 9;
+
+void setup() {
+  // I PINs vengono impostati dal constructor al momento
+  // della dichiarazione dell'ogetto.
+
+  right.Invert() ;  // Opzionale: inverte l'ordine del lampeggio da
+  // HI -> LOW --> LOW -> HI
+  // per avere 2 LED che lampeggiano alternativamente
+}
+
+void loop() {
+  left.Blink();   // Lampeggia con un default di 1sec (0.5 HI 0.5 LOW)
+  right.Blink();
+  sotto.UD(2000);   // Fade completo in 2 secondi
+}
diff --git a/esempi/base_th/base_th.ino b/esempi/base_th/base_th.ino
new file mode 100644 (file)
index 0000000..430c94d
--- /dev/null
@@ -0,0 +1,43 @@
+/* Esempio
+
+   Esempio base:
+   2 LED / Strisce laterali che lampeggiano alternativamente
+   1 LED / Striscia sotto in FADE
+
+   Lettura del canale Throttle (3) con la funzione Pulsein
+*/
+
+#include <common.h>
+
+// LED disponibili
+Lampeggiatore left = 12;
+Lampeggiatore right = 11;
+Pwm sotto = 9;
+
+// Variabili
+const byte thrPin = 3; // PIN collegato al CH3
+byte thr ; // Throttle
+int thrIn ;
+
+void setup() {
+  // I PINs vengono impostati dal constructor al momento
+  // della dichiarazione dell'ogetto.
+
+  right.Invert() ;  // Opzionale: inverte l'ordine del lampeggio da
+  // HI -> LOW --> LOW -> HI
+  // per avere 2 LED che lampeggiano alternativamente
+}
+
+void loop() {
+// Lettura CH3
+  thrIn = pulseIn(thrPin, HIGH, 25000);
+  thr = constrain(map(thrIn, 983, 2000, 0, 255), 0, 255) ;
+
+
+
+// Attivazione LEDs
+  left.Blink(1120 - 4 * thr);   
+  right.Blink(1120 - 4 * thr);
+  sotto.lSet(thr);   // Luminosita' proporzionale al throttle
+  delay(10); // Opzionale 
+}
diff --git a/esempi/base_th_3stati/base_th_3stati.ino b/esempi/base_th_3stati/base_th_3stati.ino
new file mode 100644 (file)
index 0000000..21656ae
--- /dev/null
@@ -0,0 +1,66 @@
+/* Esempio
+
+   Esempio base:
+   2 LED / Strisce laterali che lampeggiano alternativamente
+   1 LED / Striscia sotto in FADE
+
+   Lettura del canale Throttle (3) con la funzione Pulsein
+*/
+
+#include <common.h>
+
+// LED disponibili
+Lampeggiatore left = 10;
+Lampeggiatore right = 11;
+Pwm sotto = 9;
+
+// Quando il Throttle e' in IDE facciamo un PWM anche sui laterali
+Pwm lpwm = 10 ;
+Pwm rpwm = 11;
+
+// Variabili
+const byte thrPin = 3; // PIN collegato al CH3
+byte thr ; // Throttle
+int thrIn ;
+byte caso;
+
+void setup() {
+  // I PINs vengono impostati dal constructor al momento
+  // della dichiarazione dell'ogetto.
+
+  right.Invert() ;  // Opzionale: inverte l'ordine del lampeggio da
+  // HI -> LOW --> LOW -> HI
+  // per avere 2 LED che lampeggiano alternativamente
+
+  randomSeed(analogRead(0));
+}
+
+void loop() {
+  // Lettura CH3
+  thrIn = pulseIn(thrPin, HIGH, 25000);
+  thr = constrain(map(thrIn, 983, 2000, 0, 255), 0, 255) ;
+
+// Gestione throttle
+  if (thr > 0 && thr < 15) {
+    // IDLE
+
+    rpwm.UD(2000);
+    lpwm.UD(2000);
+    sotto.lDown(1500);
+  } else if (thr < 245) {
+    // Throttle medio
+
+    right.Blink(1120 - 4 * thr );
+    left.Blink(1120 - 4 * thr );
+    sotto.lSet(thr);   // Luminosita' proporzionale al throttle
+  } else {
+    // Throttle al massimo: LED laterali lampeggiano a caso,
+    // Sotto luminosita' a caso
+
+    caso = random(20, 240) ;
+    right.Swap();
+    left.Swap();
+    sotto.lSet(caso);
+    delay(caso);
+  }
+}
index c2636427a2d2b3fefdd76e51db89e7a2275f3dcd..23e3a2d0fafbc948a2b1f2d0b6d53f04dc33dc62 100644 (file)
@@ -2,6 +2,8 @@
 
 Idle, throttle e averburner effect basati sono sul canale throttle.   
 
+FSM con dispatcher esterno.
+
 
 */