]> git.piffa.net Git - aerei/blobdiff - aerei/cirso/trigger_on/trigger_on.ino
Stati / RGB
[aerei] / aerei / cirso / trigger_on / trigger_on.ino
diff --git a/aerei/cirso/trigger_on/trigger_on.ino b/aerei/cirso/trigger_on/trigger_on.ino
new file mode 100644 (file)
index 0000000..32c7052
--- /dev/null
@@ -0,0 +1,54 @@
+/* Aereo di Cirso
+
+Output:
+   2 LED ai lati con lampeggio alternato
+   1 LED in coda lampeggio a freq doppia
+
+Input:
+   1 interruttore su interrupt 0 per accensione / spegnimento luci
+*/
+
+#include <common.h>
+
+// Variabili per interrupt 0
+volatile unsigned int chValue = 1500; // Valore computato
+volatile unsigned int chStart = 1500; // Inizio rilevamento
+
+// Instanziamo un LED fuori dal loop
+Lampeggiatore left = 5;
+Lampeggiatore right = 6;
+Lampeggiatore coda = 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() {
+
+    if (chValue > 1400) {
+        left.Blink();   // Lampeggia con un default di 1sec (0.5 HI 0.5 LOW)
+        right.Blink();
+        coda.Blink(1000); // Lampeggio in 1000ms = 1 secondo
+    } else {
+// sarebbe carino mettere una transizione da on -> off con un fade down...
+        left.Low();
+        right.Low();
+        coda.Low();
+    } ;
+}
+
+// Functions
+void chRise() {
+    attachInterrupt(0, chFall, FALLING);
+    chStart = micros();
+};
+
+void chFall() {
+    attachInterrupt(0, chRise, RISING);
+    chValue = micros() - chStart;
+};