]> git.piffa.net Git - aerei/blob - aerei/antonino/bugatti/bugatti.ino
Antonino
[aerei] / aerei / antonino / bugatti / bugatti.ino
1 /* Bugatti di Antonino
2
3    2 LED / Strisce laterali che lampeggiano alternativamente
4    1 LED in PWM per il motore 
5    1 Striscia RGB sotto per tutta la lunghezza delle ali
6
7    Lettura del canale Throttle (3) con la funzione Pulsein
8 */
9
10 #include <common.h>
11
12 // LED disponibili
13 Lampeggiatore left = 7;
14 Lampeggiatore right = 8;
15 RGBLed sotto(6,5,9);
16 Pwm motore = 3;
17
18 // RGB
19 Pwm rsotto = 6;
20 Pwm gsotto = 5;
21 Pwm bsotto = 3;
22
23
24 // Variabili
25 const byte thrPin = A3; // PIN collegato al CH3
26 byte thr ;  // Throttle a 8bit
27 int thrIn ; // Valore del th in ingresso dal servo
28 byte caso ; // Valore random 
29
30 void setup() {
31   // I PINs vengono impostati dal constructor al momento
32   // della dichiarazione dell'ogetto.
33   pinMode(A3,INPUT);
34   right.Invert() ;  // Opzionale: inverte l'ordine del lampeggio da
35   // HI -> LOW --> LOW -> HI
36   // per avere 2 LED che lampeggiano alternativamente
37
38   randomSeed(analogRead(0));
39 }
40
41 void loop() {
42   // Lettura CH3
43   thrIn = pulseIn(thrPin, HIGH, 25000);
44   // Hint: thrIn andrebbe calibrato son un Serial.write
45   thr = map(thrIn, 983, 2000, 0, 255);
46     
47 // Gestione throttle
48   if (thr > 0 && thr < 15) {
49     // IDLE
50
51     right.Blink();
52     left.Blink();
53     gsotto.UD(2000);
54     motore.UD(2000);
55   } else if (thr < 245) {
56     // Throttle medio
57       
58     right.Blink(1120 - 4 * thr );
59     left.Blink(1120 - 4 * thr );
60     bsotto.UD(500 + thr * 4);
61     motore.lSet(thr);   // Luminosita' proporzionale al throttle
62   } else {
63     // Throttle al massimo: LED laterali lampeggiano a caso,
64     // Sotto luminosita' a caso
65
66     caso = random(20, 240) ;
67     right.Swap();
68     left.Swap();
69     motore.lSet(caso);
70     sotto.SetColor(caso,caso,caso);    
71     delay(caso);
72   }
73 }