]> git.piffa.net Git - aerei/blob - esempi/snippets/lettura_switch_pulse/lettura_switch_pulse.ino
Aero, toggle on/off
[aerei] / esempi / snippets / lettura_switch_pulse / lettura_switch_pulse.ino
1 /* Toggle con transizioni tra On | OFF con pulseIn
2
3
4 Sketch di esempio per accensione spegnimento di tutto l'impianto luci
5 tramite un interruttore a due posizioni della radio utilizzando pulseIn.
6
7 Output esempio: 
8    1 Lampeggiatore in coda in PWM
9
10 Input:
11    1 interruttore su interrupt 0 per accensione / spegnimento luci
12
13
14    Il codice e' blocking fin tanto che il segnale passa da RISE a FALL
15    quindi blocca per 1-2ms a ogni esecuzione. Con la variabile freq
16    si imposta ogni quanto fare una lettura.
17
18
19 */
20
21 #define DEBUG
22 #include <common.h>
23
24 unsigned long currentMillis; // timestamp reference per millis per tutto il loop
25
26 // Variabili Toggle
27 const byte chToggle = A0; // PIN su cui e' collegato il canale
28 long unsigned toggleTime = 0; // Timestamp per switch
29 int toggleValue = 1500; // Valore catturato
30 int toggleIn = 1500; // Valore filtrato
31 const int soglia = 1400; // soglia per scatto toggle a 2 posizioni
32 const unsigned int freq = 200 ; // Ogni quanti millisecondi leggere il valore
33 // Attenzione che pulsein e' blocking
34
35 void setup() {
36
37 #ifdef DEBUG
38 Serial.begin(9600); 
39 #endif
40 } ;
41
42 void loop() {
43     currentMillis = millis(); // Timestamp per tutto il loop
44
45 // Lettura ailerons channel ogni 200ms
46     if (currentMillis - toggleTime > freq) {
47
48         toggleIn = pulseIn(chToggle, HIGH, 25000);
49         if (toggleIn != 0 && toggleIn > 1000 && toggleIn <2000)  {
50             // get only resonable values
51             toggleValue = toggleIn;
52             toggleTime = currentMillis ;
53         } ;
54     };
55
56 if (toggleValue > soglia) {
57     // Luci accese
58 #ifdef DEBUG
59     Serial.print("Luci On ");
60 #endif
61
62 } else {
63     // luci spente
64 #ifdef DEBUG
65     Serial.print("Luci Off ");
66 #endif
67 } ;
68
69 #ifdef DEBUG
70     Serial.print(toggleIn);
71     Serial.print(" - Filtrato: ");
72     Serial.println(toggleValue);
73     //delay(200);
74 #endif
75
76 }