--- /dev/null
+TODO
+push.sh
+libraries/aero/
+*.swp
+*Makefile
+*tags
+libraries/LedControl/
+libraries/FreeRTOS/
+libraries/Adafruit_HMC5883_Unified/
+script.sh
*******************************
Sketches e librerie per la gestione delle luci di aeromodelli RC con
-microcontroller compatibili con *arduino
+microcontroller compatibili con \*arduino
Setup
Aggiornamenti
===============
+Download:
+ git clone git://git.andreamanni.com/aerei
+
Per aggiornare all'ultima versione::
cd ~/aerei
git pull
Download manuale:
-http://git.andreamanni.com/web?p=aerei;a=snapshot;h=HEAD;sf=tgz
+ http://git.andreamanni.com/web?p=aerei;a=snapshot;h=HEAD;sf=tgz
+
+Interfaccia Web:
+ http://git.andreamanni.com/
-Interfaccia Web: http://git.andreamanni.com/
+Discussioni:
+ https://forum.piffa.net/viewforum.php?f=4&sid=aef380599d890d6e7b9f92743fab9d7e
+
--- /dev/null
+Luci per Aerei con Arduino
+
+ Sketches e librerie per la gestione delle luci di aeromodelli RC con
+ microcontroller compatibili con *arduino
+
+Setup
+
+ Gli sketch utilizzano la libreria common presente nella cartella
+ libraries/common/: questa deve essere quindi inclusa tra le librerie
+ utilizzate. Un modo rapido per farlo e' settare nelle preferences
+ dell'Arduino IDE l'intero repo aerei_arduino come cartella degli
+ sketchbook, oppure copiare la cartella libraries/common dentro
+ libraries dello sketchbook attuale.
+
+Aggiornamenti
+
+ Download:
+ git clone git://git.andreamanni.com/aerei
+
+ Per aggiornare all'ultima versione:
+
+ cd ~/aerei
+ git pull
+
+ Download manuale:
+ [1]http://git.andreamanni.com/web?p=aerei;a=snapshot;h=HEAD;sf=t
+ gz
+
+ Interfaccia Web:
+ [2]http://git.andreamanni.com/
+
+ Discussioni:
+ [3]https://forum.piffa.net/viewforum.php?f=4&sid=aef380599d890d6
+ e7b9f92743fab9d7e
+
+References
+
+ 1. http://git.andreamanni.com/web?p=aerei;a=snapshot;h=HEAD;sf=tgz
+ 2. http://git.andreamanni.com/
+ 3. https://forum.piffa.net/viewforum.php?f=4&sid=aef380599d890d6e7b9f92743fab9d7e
+* Aggiungere time displacement a Sequenza
* Esempi:
* FSM con gestione degli stati interna (da Zeta)
* Sequenza di LED
// per avere 2 LED che lampeggiano alternativamente
randomSeed(analogRead(0));
+
+ // Test iniziale dei LED per verifica contatti:
+ left.High();
+ right.High();
+ sotto.White();
+ motore.Set(255);
+ delay(4000);
}
void loop() {
thr = map(thrIn, 983, 2000, 0, 255);
// Gestione throttle
- if (thr > 0 && thr < 15) {
+ if (thr >= 0 && thr < 15) {
// IDLE
right.Blink();
// per avere 2 LED che lampeggiano alternativamente
randomSeed(analogRead(0));
+
+ // Test iniziale dei LED per verifica contatti:
+ left.High();
+ right.High();
+ motore.Set(255);
+ delay(4000);
}
void loop() {
- right.Blink();
- left.Blink();
- gsotto.UD(2000);
- motore.UD(2000);
+ right.Blink();
+ left.Blink();
+ gsotto.UD(2000);
+ motore.UD(2000);
}
// Serial.begin(9600);
randomSeed(analogRead(0));
+ // Test iniziale dei LED per verifica contatti:
+ left.High();
+ right.High();
+ rgb.White();
+ rtp.Set(255);
+ ltp.Set(255);
+ delay(4000);
}
void loop() {
switch (state) {
case idle:
- rgb.Red();
+ rgb.Green();
+
rwhite.UD(2000); // Utilizza il coseno
lwhite.UD(2000); // Bisognerebbe evitare di calcolarlo 4 volte uguale
- ltp.UD(2000);
- rtp.UD(2000);
+ ltp.shift = 500;
+ ltp.lUp(1000);
+ rtp.lUp(1000);
break;
case normal:
- rgb.Green();
+ rgb.Blue();
// Due LED con lampeggio alternato:
right.Blink(1120 - 4 * thr );
left.Blink(1120 - 4 * thr );
break;
case full:
- rgb.Blue();
+ rgb.Red();
pausa = random(30, 125);
// Due LED con lampeggio alternato:
right.Blink(1120 - 4 * thr );
/* Common
*
* Oggetti di uso comune
+ * Autore: Andrea Manni
+ *
+ * Link: http://git.andreamanni.com/
+ * Licenza: GPLv3
*/
#include "Arduino.h"
void Lampeggiatore::Blink() {
// Illumina il led a 500ms
- if(millis() - previousMillis > interval) {
+ if(millis() + shift - previousMillis > interval) {
// save the last time you blinked the LED
previousMillis = millis();
digitalWrite(ledPin, ledState);
};
-void Lampeggiatore::Blink(long time) {
+void Lampeggiatore::Blink(long time, long drift ) {
// Illumina il led secondo un intervallo passato come argomento
- if(millis() - previousMillis > time) {
+ shift = drift;
+ if(millis() + shift - previousMillis > time) {
// save the last time you blinked the LED
previousMillis = millis();
digitalWrite(ledPin, ledState);
};
-void Lampeggiatore::Blink(long up, long down) {
+void Lampeggiatore::Blink(long up, long down, long drift ) {
// Illumina il ledB precisando ontime e downtime
- if((ledState == HIGH)&& (millis() - previousMillis > up)) {
+ shift = drift;
+ if((ledState == HIGH)&& (millis() + shift - previousMillis > up)) {
// save the last time you blinked the LED
previousMillis = millis();
ledState = LOW ;
}
- else if((ledState == LOW)&& (millis() - previousMillis > down)) {
+ else if((ledState == LOW)&& (millis() + shift - previousMillis > down)) {
previousMillis = millis();
ledState = HIGH ;
}
increment = 1;
};
-void Pwm::Up(long speed) {
+void Pwm::Up(long speed, long drift) {
// Aumenta linearmente la luminosita' usanndo millis()
// quindi senza bloccare il processore
// Viene usato un float, in alternativa un coseno
if (millis() != previousMillis) { // si potrebbe togliere
- brightness = 255.0 /(float)speed * millis() ;
+ shift = drift;
+ brightness = 255.0 /(float)speed * (millis() + shift);
analogWrite(ledPin, brightness);
previousMillis = millis();
};
}
-void Pwm::lUp(long speed) {
+void Pwm::lUp(long speed, long drift) {
// Aumenta usanndo millis() con correzione luminosita' LED
// quindi senza bloccare il processore
// Viene usato un float, in alternativa un coseno
if (millis() != previousMillis) { // si potrebbe togliere
- brightness = 255.0 /(float)speed * millis() ;
+ shift = drift;
+ brightness = 255.0 /(float)speed * (millis() + shift);
analogWrite(ledPin, lum(brightness));
previousMillis = millis();
};
}
-void Pwm::Down(long speed ) {
+void Pwm::Down(long speed, long drift) {
// Riduce linearmente la luminosita' usanndo millis()
// quindi senza bloccare il processore
if (millis() != previousMillis) {
- brightness = 255 - 255.0 /(float)speed * millis() ;
+ shift = drift;
+ brightness = 255 - 255.0 /(float)speed * (millis() + shift) ;
analogWrite(ledPin, brightness);
previousMillis = millis();
};
}
-void Pwm::lDown(long speed ) {
+void Pwm::lDown(long speed, long drift) {
// Riduce usanndo millis() con correzione della luminosita'
// quindi senza bloccare il processore
if (millis() != previousMillis) {
- brightness = 255 - 255.0 /(float)speed * millis() ;
+ shift = drift;
+ brightness = 255 - 255.0 /(float)speed * (millis() + shift) ;
analogWrite(ledPin, lum(brightness));
previousMillis = millis();
};
}
-void Pwm::UD(long speed ) {
+void Pwm::UD(long speed, long drift ) {
// Aumenta e riduce in sequenza la luminosita' usanndo millis()
- brightness = 128 + 127 * cos(2 * PI / speed * millis());
+ shift = drift;
+ brightness = 128 + 127 * cos(2 * PI / speed * (millis() + shift));
analogWrite(ledPin, brightness);
}
Oggetti comuni
+Autore: Andrea Manni
+
+Link: http://git.andreamanni.com/
+Licenza: GPLv3
+
*/
#include "Arduino.h"
#define common_h
// Variabili
-const uint8_t BCORRECT[256] PROGMEM = { // Tabella per correzione luminosita' PWM
+const uint8_t BCORRECT[256] PROGMEM = { // Tabella per correzione luminosita' LED a 8bit
0,0,0,1,1,1,2,1,1,2,1,2,2,2,3,2,
2,2,3,2,2,3,2,3,3,3,4,3,3,3,4,4,
4,5,4,5,4,5,5,6,5,5,6,5,6,6,7,6,
Lampeggiatore(int pin);
void Invert(); // Inverte il lampeggio
void Blink(); // Lampeggia ogni 500ms
- void Blink(long interval); // Lampeggia inpostando l'intervallo
- void Blink(long on, long down); // Imposta il tempo acceso e il tempo spento
+ void Blink(long interval, long drift = 0); // Lampeggia inpostando l'intervallo
+ void Blink(long on, long down, long drift); // Imposta il tempo acceso e il tempo spento
void High(); // Accende il LED
void Low(); // Spegne il LED
void Swap(); // Inverte lo stato del LED
+ unsigned long shift ; // anticipo / ritardo
};
int ledPin ; // il numero del LED pin
int speed ; // velocita' del ciclo in ms
unsigned long previousMillis ; //precedente cambio di stato
- byte increment ; // aumenta brighteness nel loop UD
+ byte increment ; // aumenta brighteness nel loop UD
// Constructor: come viene instanziato un oggetto facente parte della classe
public:
Pwm(int pin); // numero di pin, velocita' di ciclo
- void Up(long speed);
- void lUp(long speed);
- void Down(long speed);
- void lDown(long speed);
- void UD(long speed);
+ void Up(long speed, long drift = 0);
+ void lUp(long speed, long drift = 0);
+ void Down(long speed, long drift = 0);
+ void lDown(long speed, long drift = 0);
+ void UD(long speed, long drift = 0);
void Set(byte brighteness);
void lSet(byte brighteness);
byte brightness ; // luminostia' iniziale
+ unsigned long shift ; // anticipo / ritardo
};
// I PINs vengono impostati dal constructor al momento
// della dichiarazione dell'ogetto.
-led.Invert() ; // Opzionale: inverte l'ordine del lampeggio da
+//led.Invert() ; // Opzionale: inverte l'ordine del lampeggio da
// HI -> LOW --> LOW -> HI
// per avere 2 LED che lampeggiano alternativamente
}
void loop() {
led.Blink(); // Lampeggia con un default di 1sec (0.5 HI 0.5 LOW)
-// led.Blink(500); // Lampeggia ogni 500ms
-// led.Blink(500,200); // Imposta il tempo acceso e il tempo spento
+// led.Blink(400); // Lampeggia ogni 400ms
+// led.Blink(400,200); // Imposta il tempo acceso e il tempo spento a 400ms, 200ms di ritardo
+// led.Blink(300,700,0); // acceso per 300ms, spento per 700 ms, ritardo = 0ms
+// led.Blink(300,700,500); // acceso per 300ms, spento per 700 ms, ritardo = 500s
// led.High(); // Stato su HI
// led.Low(); // Stato su LOW
// led.Swap(); // Inverte lo Stato
}
void loop() {
- led.Up(2000); // Aumenta la luminosita' linearmente in 2 sec
- //led.lUp(2000); // Aumenta la luminosita' con correzione luminosita' per LED
- // led.Down(1000); // Diminuisce la luminosita' in 1 sec
- // led.lDown(1000); // Diminuisce la luminosita' con correzione luminosita'
- // led.UD(4000); // Aumenta e poi diminuisce la luminostia' in 4 sec (coseno)
- // led.set(100); // Imposta il valore del PWM da 0-255
- // led.lSet(100); // Imposta il valore del PWM con correzione luminosita
- // analogWrite(lum100); // Equivalente a sopra
+led.Up(2000); // Aumenta la luminosita' linearmente in 2 sec
+//led.Up(2000,1000); // Aumenta la luminosita' linearmente in 2 sec, 1sec di ritardo
+
+//led.lUp(2000); // Aumenta la luminosita' con correzione luminosita' per LED
+// led.Down(1000); // Diminuisce la luminosita' in 1 sec
+// led.lDown(1000); // Diminuisce la luminosita' con correzione luminosita'
+// led.UD(4000); // Aumenta e poi diminuisce la luminostia' in 4 sec (coseno)
+// Tutti questi metodi accettano un valore opzionale per il ritardo
+
+// led.set(100); // Imposta il valore del PWM da 0-255
+// led.lSet(100); // Imposta il valore del PWM con correzione luminosita'
+// analogWrite(lum100); // Equivalente a sopra
}