]> git.piffa.net Git - aerei/blob - zeta/zeta.ino
libraries ande pragmatica
[aerei] / zeta / zeta.ino
1 /* Zeta test
2
3 Nota: rovedere i PWM per come calcolano le pause:
4 non possono schendere sotto a 1ms
5 */
6
7 #include <common.h>
8 enum states_available { // Stati della FMS
9   idle,    // Throttle a zero
10   normal,  // Th normale
11   full,    // Th massimo
12 };
13 states_available state  ;
14
15 // Due LED con lampeggio alternato:
16 Lampeggiatore right = 3;
17 Lampeggiatore left = 5;
18 const byte rtail = 6;
19 const byte ltail = 9;
20 const byte thrPin = A3;
21 byte pausa ;
22 byte thr ;
23 int thrIn ;
24
25 Pwm rwhite = 3;
26 Pwm lwhite = 5;
27 Pwm rtp = 6 ;
28 Pwm ltp = 9 ;
29
30
31 void setup() {
32   left.Invert() ; // Parte da stato invertito rispetto al default
33   pinMode(rtail, OUTPUT);
34   pinMode(ltail, OUTPUT);
35   pinMode(thrPin, INPUT);
36   // Warning: serial breaks PWM
37   // Serial.begin(9600);
38
39   randomSeed(analogRead(0));
40 }
41
42 void loop() {
43
44   thrIn = pulseIn(thrPin, HIGH, 25000);
45   thr = constrain(map(thrIn, 983, 2000, 0, 255), 0, 255) ;
46   // Inserire necro delay
47   delay(10); // Se si abilita il serial debug
48   // togliere il delay
49
50   // FMS dispatcher
51   if ( thr < 10 ) {
52     state = idle ;
53   } else if ( thr > 245 ) {
54     state = full ;
55   } else {
56     state = normal ;
57   }
58
59   switch (state) {
60     case idle:
61       rwhite.UD(2000);  // Utilizza il coseno
62       lwhite.UD(2000);  // Bisognerebbe evitare di calcolarlo 4 volte uguale
63       ltp.UD(2000);
64       rtp.UD(2000);
65       break;
66
67     case normal:
68       // Due LED con lampeggio alternato:
69       right.Blink(1120 - 4 * thr );
70       left.Blink(1120 - 4 * thr );
71       analogWrite(rtail, lum(thr));
72       analogWrite(ltail, lum(thr));
73       break;
74
75     case full:
76       pausa = random(30, 125);
77       // Due LED con lampeggio alternato:
78       right.Blink(1120 - 4 * thr );
79       digitalWrite(ltail, !digitalRead(ltail));
80       digitalWrite(3, !digitalRead(3));
81   
82
83       left.Blink(1120 - 4 * thr );
84       digitalWrite(rtail, !digitalRead(rtail));
85       digitalWrite(5, !digitalRead(5));
86       delay(pausa);
87       break;
88   }
89
90
91   //  Serial.println(thrIn);
92   //  Serial.print("\t thr:");
93   //  Serial.print(thr);
94   //  Serial.print("\t state:");
95   //  Serial.println(state);
96
97 }