From e807056b9281f933e9cd2df419e1a7bc5bb860b1 Mon Sep 17 00:00:00 2001 From: eaman Date: Wed, 1 Feb 2017 04:17:50 +0100 Subject: [PATCH] Common: aggiunto ritardo per Blink e Pwm, manca per Sequenza --- .gitignore | 10 +++++ README | 14 +++++-- README.txt | 40 ++++++++++++++++++ TODO | 1 + aerei/antonino/bugatti/bugatti.ino | 9 +++- aerei/antonino/bugatti_test/bugatti_test.ino | 14 +++++-- aerei/zeta/zeta/zeta.ino | 19 ++++++--- libraries/common/common.cpp | 43 ++++++++++++-------- libraries/common/common.h | 25 ++++++++---- libraries/common/examples/blink/blink.ino | 8 ++-- libraries/common/examples/pwm/pwm.ino | 20 +++++---- 11 files changed, 154 insertions(+), 49 deletions(-) create mode 100644 .gitignore create mode 100644 README.txt diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6b88347 --- /dev/null +++ b/.gitignore @@ -0,0 +1,10 @@ +TODO +push.sh +libraries/aero/ +*.swp +*Makefile +*tags +libraries/LedControl/ +libraries/FreeRTOS/ +libraries/Adafruit_HMC5883_Unified/ +script.sh diff --git a/README b/README index 0b57ba1..316820a 100644 --- a/README +++ b/README @@ -2,7 +2,7 @@ Luci per Aerei con Arduino ******************************* Sketches e librerie per la gestione delle luci di aeromodelli RC con -microcontroller compatibili con *arduino +microcontroller compatibili con \*arduino Setup @@ -18,12 +18,20 @@ attuale. 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 + diff --git a/README.txt b/README.txt new file mode 100644 index 0000000..bdf6808 --- /dev/null +++ b/README.txt @@ -0,0 +1,40 @@ +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 diff --git a/TODO b/TODO index 843791c..4acc144 100644 --- a/TODO +++ b/TODO @@ -1,3 +1,4 @@ +* Aggiungere time displacement a Sequenza * Esempi: * FSM con gestione degli stati interna (da Zeta) * Sequenza di LED diff --git a/aerei/antonino/bugatti/bugatti.ino b/aerei/antonino/bugatti/bugatti.ino index 00d32d9..b890380 100644 --- a/aerei/antonino/bugatti/bugatti.ino +++ b/aerei/antonino/bugatti/bugatti.ino @@ -36,6 +36,13 @@ void setup() { // 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() { @@ -45,7 +52,7 @@ void loop() { thr = map(thrIn, 983, 2000, 0, 255); // Gestione throttle - if (thr > 0 && thr < 15) { + if (thr >= 0 && thr < 15) { // IDLE right.Blink(); diff --git a/aerei/antonino/bugatti_test/bugatti_test.ino b/aerei/antonino/bugatti_test/bugatti_test.ino index 1d73c02..3f57e3c 100644 --- a/aerei/antonino/bugatti_test/bugatti_test.ino +++ b/aerei/antonino/bugatti_test/bugatti_test.ino @@ -29,11 +29,17 @@ void setup() { // 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); } diff --git a/aerei/zeta/zeta/zeta.ino b/aerei/zeta/zeta/zeta.ino index 45e1f2e..9d0b2fa 100644 --- a/aerei/zeta/zeta/zeta.ino +++ b/aerei/zeta/zeta/zeta.ino @@ -38,6 +38,13 @@ void setup() { // 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() { @@ -60,15 +67,17 @@ 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 ); @@ -77,7 +86,7 @@ void loop() { break; case full: - rgb.Blue(); + rgb.Red(); pausa = random(30, 125); // Due LED con lampeggio alternato: right.Blink(1120 - 4 * thr ); diff --git a/libraries/common/common.cpp b/libraries/common/common.cpp index 3598969..01f07cf 100644 --- a/libraries/common/common.cpp +++ b/libraries/common/common.cpp @@ -1,6 +1,10 @@ /* Common * * Oggetti di uso comune + * Autore: Andrea Manni + * + * Link: http://git.andreamanni.com/ + * Licenza: GPLv3 */ #include "Arduino.h" @@ -107,7 +111,7 @@ void Lampeggiatore::Invert() { 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(); @@ -118,10 +122,11 @@ void Lampeggiatore::Blink() { 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(); @@ -132,15 +137,16 @@ void Lampeggiatore::Blink(long time) { 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 ; } @@ -182,59 +188,64 @@ Pwm::Pwm(int pin) 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); } diff --git a/libraries/common/common.h b/libraries/common/common.h index 25b84dd..97893fc 100644 --- a/libraries/common/common.h +++ b/libraries/common/common.h @@ -3,6 +3,11 @@ Oggetti comuni +Autore: Andrea Manni + +Link: http://git.andreamanni.com/ +Licenza: GPLv3 + */ #include "Arduino.h" @@ -12,7 +17,7 @@ #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, @@ -74,11 +79,12 @@ public: 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 }; @@ -94,19 +100,20 @@ class Pwm { 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 }; diff --git a/libraries/common/examples/blink/blink.ino b/libraries/common/examples/blink/blink.ino index b796020..d72d603 100644 --- a/libraries/common/examples/blink/blink.ino +++ b/libraries/common/examples/blink/blink.ino @@ -13,15 +13,17 @@ void setup() { // 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 diff --git a/libraries/common/examples/pwm/pwm.ino b/libraries/common/examples/pwm/pwm.ino index deeb8ea..e3fe058 100644 --- a/libraries/common/examples/pwm/pwm.ino +++ b/libraries/common/examples/pwm/pwm.ino @@ -16,12 +16,16 @@ void setup() { } 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 } -- 2.39.2