]> git.piffa.net Git - aerei/commitdiff
Common: aggiunto ritardo per Blink e Pwm, manca per Sequenza
authoreaman <andrea@piffa.net>
Wed, 1 Feb 2017 03:17:50 +0000 (04:17 +0100)
committereaman <andrea@piffa.net>
Wed, 1 Feb 2017 03:19:30 +0000 (04:19 +0100)
.gitignore [new file with mode: 0644]
README
README.txt [new file with mode: 0644]
TODO
aerei/antonino/bugatti/bugatti.ino
aerei/antonino/bugatti_test/bugatti_test.ino
aerei/zeta/zeta/zeta.ino
libraries/common/common.cpp
libraries/common/common.h
libraries/common/examples/blink/blink.ino
libraries/common/examples/pwm/pwm.ino

diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..6b88347
--- /dev/null
@@ -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 0b57ba1679d67bbcd8038f059d955bcd49f6d9da..316820ab5b4e1970f2ae6b0b258e2b7c85d569d9 100644 (file)
--- 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 (file)
index 0000000..bdf6808
--- /dev/null
@@ -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 843791c02a432793e31a7255186907909574f377..4acc144fbb95a52af2aa5a3a0d167a032edc3649 100644 (file)
--- 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
index 00d32d94b5f8ebed8f6d962fc6bfe6e07fbc51b5..b890380ab7086a7580060912c82d4c1029f740a9 100644 (file)
@@ -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();
index 1d73c02440c96b472d33b4832f5b819e305f6f69..3f57e3c29d80785f083c25624e39c4e5b61328ec 100644 (file)
@@ -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);
 }
index 45e1f2e3e9adc6af5f57bf47fc42b1400b448c26..9d0b2fa0eee907dc5add8544aa0c12994667d797 100644 (file)
@@ -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 );
index 359896976b81b3a0676fc232d54235dbc215bb1b..01f07cfffe1cfac49bde493fc59b02cb3d3100b1 100644 (file)
@@ -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);  
 }
 
index 25b84dd6ae9f7320a1290e869f7b4779a9ca4489..97893fcd75d1b68e23de76d079a9e74be417fb1b 100644 (file)
@@ -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
 };
 
 
index b796020c749dd907148fe39bc612ef9e73a791c5..d72d6031dc1e8d189707b69c0ed49c6c22c9709f 100644 (file)
@@ -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
index deeb8ea735e594f7dd677297dec534afafa51e2c..e3fe058ae19ba793c67c36db14338ef80fe8ef4a 100644 (file)
@@ -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
 }