3 Nota: rivedere i PWM per come calcolano le pause:
4 non possono schendere sotto a 1ms
8 enum states_available { // Stati della FMS
9 idle, // Throttle a zero
13 states_available state ;
15 // Due LED con lampeggio alternato:
16 Lampeggiatore right = 3; // Lampeggiatori superiori a lato fusoliera
17 Lampeggiatore left = 5;
18 const byte rtail = 6; // Luci del motore posteriore
20 const byte thrPin = A3;
25 Pwm rwhite = 3; // PWM sui lampeggiatori
27 Pwm rtp = 6 ; // PWM sulla coda
30 RGBLed rgb(7,8,4,255);
33 left.Invert() ; // Parte da stato invertito rispetto al default
34 pinMode(rtail, OUTPUT);
35 pinMode(ltail, OUTPUT);
36 pinMode(thrPin, INPUT);
37 // Warning: serial breaks PWM
38 // Serial.begin(9600);
40 randomSeed(analogRead(0));
41 // Test iniziale dei LED per verifica contatti:
53 thrIn = pulseIn(thrPin, HIGH, 25000);
54 thr = constrain(map(thrIn, 983, 2000, 0, 255), 0, 255) ;
55 delay(10); // Se si abilita il serial debug
61 } else if ( thr > 245 ) {
71 rwhite.UD(2000); // Utilizza il coseno
72 lwhite.UD(2000); // Bisognerebbe evitare di calcolarli 4 volte uguale
80 // Due LED con lampeggio alternato:
81 right.Blink(1120 - 4 * thr );
82 left.Blink(1120 - 4 * thr );
83 analogWrite(rtail, lum(thr));
84 analogWrite(ltail, lum(thr));
89 pausa = random(30, 125);
90 // Due LED con lampeggio alternato:
91 right.Blink(1120 - 4 * thr );
92 digitalWrite(ltail, !digitalRead(ltail));
93 digitalWrite(3, !digitalRead(3));
96 left.Blink(1120 - 4 * thr );
97 digitalWrite(rtail, !digitalRead(rtail));
98 digitalWrite(5, !digitalRead(5));
104 // Serial.println(thrIn);
105 // Serial.print("\t thr:");
106 // Serial.print(thr);
107 // Serial.print("\t state:");
108 // Serial.println(state);