]> git.piffa.net Git - aerei/blob - aerei/cirso/trigger_on/trigger_on.ino
Stati / RGB
[aerei] / aerei / cirso / trigger_on / trigger_on.ino
1 /* Aereo di Cirso
2
3 Output:
4    2 LED ai lati con lampeggio alternato
5    1 LED in coda lampeggio a freq doppia
6
7 Input:
8    1 interruttore su interrupt 0 per accensione / spegnimento luci
9 */
10
11 #include <common.h>
12
13 // Variabili per interrupt 0
14 volatile unsigned int chValue = 1500; // Valore computato
15 volatile unsigned int chStart = 1500; // Inizio rilevamento
16
17 // Instanziamo un LED fuori dal loop
18 Lampeggiatore left = 5;
19 Lampeggiatore right = 6;
20 Lampeggiatore coda = 9;
21
22 void setup() {
23     // I PINs vengono impostati dal constructor al momento
24     // della dichiarazione dell'ogetto.
25
26     right.Invert() ;  // Opzionale: inverte l'ordine del lampeggio da
27     // HI -> LOW --> LOW -> HI
28     // per avere 2 LED che lampeggiano alternativamente
29 }
30
31 void loop() {
32
33     if (chValue > 1400) {
34         left.Blink();   // Lampeggia con un default di 1sec (0.5 HI 0.5 LOW)
35         right.Blink();
36         coda.Blink(1000); // Lampeggio in 1000ms = 1 secondo
37     } else {
38 // sarebbe carino mettere una transizione da on -> off con un fade down...
39         left.Low();
40         right.Low();
41         coda.Low();
42     } ;
43 }
44
45 // Functions
46 void chRise() {
47     attachInterrupt(0, chFall, FALLING);
48     chStart = micros();
49 };
50
51 void chFall() {
52     attachInterrupt(0, chRise, RISING);
53     chValue = micros() - chStart;
54 };