]> git.piffa.net Git - aerei/blob - aerei/cirso/trigger_on/trigger_on.ino
732d03d1a90ee7fe49a2f5056a42d02938827db8
[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     attachInterrupt(0, chRise, RISING); // PIN 2 su 328p / 168
27     right.Invert() ;  // Opzionale: inverte l'ordine del lampeggio da
28     // HI -> LOW --> LOW -> HI
29     // per avere 2 LED che lampeggiano alternativamente
30 }
31
32 void loop() {
33
34     if (chValue > 1500) {
35         left.Blink();   // Lampeggia con un default di 1sec (0.5 HI 0.5 LOW)
36         right.Blink();
37         coda.Blink(1000); // Lampeggio in 1000ms = 1 secondo
38     } else {
39 // sarebbe carino mettere una transizione da on -> off con un fade down...
40         left.Low();
41         right.Low();
42         coda.Low();
43     } ;
44 }
45
46 // Functions
47 void chRise() {
48     attachInterrupt(0, chFall, FALLING);
49     chStart = micros();
50 };
51
52 void chFall() {
53     attachInterrupt(0, chRise, RISING);
54     chValue = micros() - chStart;
55 };