]> git.piffa.net Git - aerei/commitdiff
Yak
authorAndrea Manni <andrea@piffa.net>
Fri, 17 Feb 2017 22:14:41 +0000 (23:14 +0100)
committerAndrea Manni <andrea@piffa.net>
Fri, 17 Feb 2017 22:14:41 +0000 (23:14 +0100)
12 files changed:
README.html
README.rst
README.txt
aerei/yak/interrupts/interrupts.ino [new file with mode: 0644]
aerei/yak/prototipo/prototipo.ino [new file with mode: 0644]
esempi/ailerons_state_rgb/ailerons_state_rgb.ino
esempi/snippets/calibrazione_servo/calibrazione_servo.ino
esempi/snippets/lettura_servo_ch_pulse/lettura_servo_ch_pulse.ino
esempi/snippets/lettura_servo_ch_pulse_millis/lettura_servo_ch_pulse_millis.ino
esempi/snippets/lettura_servo_interrupt/lettura_servo_interrupt.ino
esempi/snippets/lettura_servo_interrupt_doppio/lettura_servo_interrupt_doppio.ino
libraries/common/common.cpp

index bf2269da68c9bb2fc91bd63b51db82145383697d..936a310d2f9e3ee7aeae223d31931dbe816a3783 100644 (file)
@@ -374,8 +374,8 @@ IDE l'intero repo <tt class="docutils literal">aerei_arduino</tt> come cartella
 copiare la cartella <tt class="docutils literal">libraries/common</tt> dentro <tt class="docutils literal">libraries</tt> dello sketchbook
 attuale.</p>
 </div>
-<div class="section" id="aggiornamenti">
-<h1>Aggiornamenti</h1>
+<div class="section" id="download">
+<h1>Download</h1>
 <dl class="docutils">
 <dt>Download tramite git:</dt>
 <dd>git clone git://git.andreamanni.com/aerei</dd>
@@ -391,12 +391,26 @@ git pull
 <li><a class="reference external" href="https://git.andreamanni.com/web?p=aerei">Interfaccia git Web</a></li>
 <li><a class="reference external" href="https://forum.piffa.net/viewforum.php?f=4&amp;sid=aef380599d890d6e7b9f92743fab9d7e">Foum di Discussione</a></li>
 </ul>
+<div class="section" id="libreria">
+<h2>Libreria</h2>
+<p>La sola libreria Common contenete gli oggetti base puo' essere scaricata direttamente nella vostra cartella libraries da:</p>
+<pre class="literal-block">
+git clone git://git.andreamanni.com/common
+</pre>
+<ul class="simple">
+<li><a class="reference external" href="https://git.andreamanni.com/web?p=common;a=snapshot;h=HEAD;sf=tgz">Download manuale archivio</a></li>
+<li><a class="reference external" href="https://aerei.piffa.net/repo/libraries/common/">Browse on line</a></li>
+<li><a class="reference external" href="https://git.andreamanni.com/web?p=common">Interfaccia git Web</a></li>
+</ul>
+</div>
 </div>
 <div class="section" id="links">
 <h1>Links</h1>
 <p>Risorse utili per utilizzare Arduino:</p>
 <ul class="simple">
 <li>Per poter programmare le schede Arduino: <a class="reference external" href="https://www.arduino.cc/en/Main/Software#">Arduino IDE</a></li>
+<li>Testi consigliati: <a class="reference external" href="https://lab.piffa.net/testi.html">https://lab.piffa.net/testi.html</a></li>
+<li>Risorse online: <a class="reference external" href="http://wiki.piffa.net/index.php/Guide">http://wiki.piffa.net/index.php/Guide</a></li>
 <li><dl class="first docutils">
 <dt>Risorse di Andrea: <a class="reference external" href="https://lab.piffa.net/">https://lab.piffa.net/</a></dt>
 <dd><ul class="first last">
@@ -406,8 +420,6 @@ git pull
 </dd>
 </dl>
 </li>
-<li>Testi consigliati: <a class="reference external" href="https://lab.piffa.net/testi.html">https://lab.piffa.net/testi.html</a></li>
-<li>Risorse online: <a class="reference external" href="http://wiki.piffa.net/index.php/Guide">http://wiki.piffa.net/index.php/Guide</a></li>
 </ul>
 </div>
 </div>
index 881a593b2048072bdc089a8c89bae1a303f75f11..88e033bd987db07c3ba24f3e73f4907098acd91a 100644 (file)
@@ -34,12 +34,13 @@ Per aggiornare all'ultima versione::
 Libreria
 ------------
 
-La sola libreria Common contenete gli oggetti base puo' essere scaricata direttamente nella vostra cartella libraries da:
+La sola libreria Common contenete gli oggetti base puo' essere scaricata direttamente nella vostra cartella libraries da::
+
     git clone git://git.andreamanni.com/common
 
-* `Download manuale archivio <https://git.andreamanni.com/web?p=common;a=snapshot;h=HEAD;sf=tgz>`_
-* `Browse on line <https://aerei.piffa.net/repo/libraries/common/>`_
-* `Interfaccia git Web <https://git.andreamanni.com/web?p=common>`_
+* `Download manuale archivio <https://git.andreamanni.com/web?p=common;a=snapshot;h=HEAD;sf=tgz>`__
+* `Browse on line <https://aerei.piffa.net/repo/libraries/common/>`__
+* `Interfaccia git Web <https://git.andreamanni.com/web?p=common>`__
 
 
 Links
@@ -47,8 +48,8 @@ Links
 Risorse utili per utilizzare Arduino:
 
 * Per poter programmare le schede Arduino: `Arduino IDE <https://www.arduino.cc/en/Main/Software#>`_
+* Testi consigliati: https://lab.piffa.net/testi.html
+* Risorse online: http://wiki.piffa.net/index.php/Guide
 * Risorse di Andrea: https://lab.piffa.net/
     * Wiki: http://wiki.piffa.net/
     * Forum: https://forum.piffa.net/
-* Testi consigliati: https://lab.piffa.net/testi.html
-* Risorse online: http://wiki.piffa.net/index.php/Guide
index 564ce41ec2d778d61edd1f45d8edcd888e752297..a4155db3a98c17d71953dfffd7cee7b45d80485e 100644 (file)
@@ -12,37 +12,52 @@ Setup
    sketchbook, oppure copiare la cartella libraries/common dentro
    libraries dello sketchbook attuale.
 
-Aggiornamenti
+Download
 
    Download tramite git:
           git clone git://git.andreamanni.com/aerei
 
    Per aggiornare all'ultima versione:
-        cd ~/aerei
-        git pull
+cd ~/aerei
+git pull
 
-   Download manuale archivio:
-          [1]https://git.andreamanni.com/web?p=aerei;a=snapshot;h=HEAD;sf=
-          tgz
+     * [1]Download manuale archivio
+     * [2]Browse on line
+     * [3]Interfaccia git Web
+     * [4]Foum di Discussione
 
-   Browse on line:
-          [2]https://aerei.piffa.net/repo/
+Libreria
 
-   Interfaccia git Web:
-          [3]https://git.andreamanni.com/web?p=aerei
+   La sola libreria Common contenete gli oggetti base puo' essere
+   scaricata direttamente nella vostra cartella libraries da:
+git clone git://git.andreamanni.com/common
 
-   Discussioni:
-          [4]https://forum.piffa.net/viewforum.php?f=4&sid=aef380599d890d6
-          e7b9f92743fab9d7e
+     * [5]Download manuale archivio
+     * [6]Browse on line
+     * [7]Interfaccia git Web
 
 Links
 
    Risorse utili per utilizzare Arduino:
-     * Per poter programmare le schede Arduino: Arduino IDE:
-       [5]https://www.arduino.cc/en/Main/Software#
-     * Risorse di Andrea: [6]https://lab.piffa.net/
-       - Wiki: [7]http://wiki.piffa.net/
-       - Forum: [8]https://forum.piffa.net/
+     * Per poter programmare le schede Arduino: [8]Arduino IDE
      * Testi consigliati: [9]https://lab.piffa.net/testi.html
      * Risorse online: [10]http://wiki.piffa.net/index.php/Guide
-
+     * Risorse di Andrea: [11]https://lab.piffa.net/
+               o Wiki: [12]http://wiki.piffa.net/
+               o Forum: [13]https://forum.piffa.net/
+
+References
+
+   1. https://git.andreamanni.com/web?p=aerei;a=snapshot;h=HEAD;sf=tgz
+   2. https://aerei.piffa.net/repo/
+   3. https://git.andreamanni.com/web?p=aerei
+   4. https://forum.piffa.net/viewforum.php?f=4&sid=aef380599d890d6e7b9f92743fab9d7e
+   5. https://git.andreamanni.com/web?p=common;a=snapshot;h=HEAD;sf=tgz
+   6. https://aerei.piffa.net/repo/libraries/common/
+   7. https://git.andreamanni.com/web?p=common
+   8. https://www.arduino.cc/en/Main/Software
+   9. https://lab.piffa.net/testi.html
+  10. http://wiki.piffa.net/index.php/Guide
+  11. https://lab.piffa.net/
+  12. http://wiki.piffa.net/
+  13. https://forum.piffa.net/
diff --git a/aerei/yak/interrupts/interrupts.ino b/aerei/yak/interrupts/interrupts.ino
new file mode 100644 (file)
index 0000000..7e1feb1
--- /dev/null
@@ -0,0 +1,92 @@
+/* Yak 980 di A.
+
+   Prototipo:
+
+OUTPUT:
+   1 PWM motore: 10
+   2 LED ai lati con lampeggio alternato
+   1 LED in coda lampeggio a freq doppia
+
+INPUT:
+
+   * Thtottle: PIN 2
+   * Ailerons: PIN 3
+
+Notes: abbondante usi di map().
+NO FSM.
+
+*/
+
+#include <common.h>
+#define dEBUG
+
+// Variabili per interrupt 0 si PIN 2
+volatile unsigned int chValue2 = 1500; // Valore computato
+volatile unsigned int chStart2 = 1500; // Inizio rilevamento
+
+// Variabili per interrupt 1 su PIN 3
+volatile unsigned int chValue3 = 1500; // Valore computato
+volatile unsigned int chStart3 = 1500; // Inizio rilevamento
+
+// Variabili per autocalibrazione 0
+const byte chPin2 = 2; // PIN per la calibrazione
+int mid_point2 = 980;
+
+// Variabili per autocalibrazione 1
+const byte chPin3 = 3; // PIN per la calibrazione
+int mid_point3 = 1500;
+
+// Instanziamo un LED fuori dal loop
+Lampeggiatore left = 4;
+Lampeggiatore right = 11;
+Lampeggiatore coda = 6;
+Pwm motore = 10;
+Lampeggiatore stato = 13;
+byte pins[] = {  // PIN dei LED che compongono la sequenza
+       7,8,9 
+}; 
+Sequenza seq = Sequenza(pins,3);
+
+void setup() {
+left.Invert();
+    // Funzione relativa a calibrazione con pulsein:
+    mid_point3 =  calibraTrim(chPin3) + 8; // La calibrazione in genere non serve
+    // su throttle, il valore minimo e' costante e non c'e' TRIM
+
+    attachInterrupt(0, chRise2, RISING); // PIN 2 su 328p / 168
+    attachInterrupt(1, chRise3, RISING); // PIN 3 su 328p / 168
+
+} ;
+
+
+void loop() {
+stato.Blink(); // Onboard LED per vedere se la scheda e' accesa
+
+  right.Blink(map(chValue3,980,2020,800,200));
+  left.Blink(map(chValue3,980,2020,200,800));
+  coda.Blink(chValue2 /4);
+  motore.lSet((chValue2 -980) / 4);
+  seq.Update(map(chValue2,980,2000,300,40));
+
+}
+
+// Functions
+void chRise2() {
+    attachInterrupt(0, chFall2, FALLING);
+    chStart2 = micros();
+}
+
+void chFall2() {
+    attachInterrupt(0, chRise2, RISING);
+    chValue2 = micros() - chStart2;
+}
+// Seconod iterrupt
+void chRise3() {
+    attachInterrupt(1, chFall3, FALLING);
+    chStart3 = micros();
+}
+
+void chFall3() {
+    attachInterrupt(1, chRise3, RISING);
+    chValue3 = micros() - chStart3;
+}
diff --git a/aerei/yak/prototipo/prototipo.ino b/aerei/yak/prototipo/prototipo.ino
new file mode 100644 (file)
index 0000000..486ec88
--- /dev/null
@@ -0,0 +1,39 @@
+/* Yak 980 di A.
+
+   Prototipo base:
+OUTPUT:
+   1 PWM motore: 10
+   2 LED ai lati con lampeggio alternato
+   1 LED in coda lampeggio a freq doppia
+*/
+
+#include <common.h>
+
+// Instanziamo un LED fuori dal loop
+Pwm pLeft = 11;
+Lampeggiatore right = 4;
+Lampeggiatore coda = 6;
+Pwm motore = 10;
+byte pins[] = {  // PIN dei LED che compongono la sequenza
+       7,8,9 
+}; 
+
+Sequenza seq = Sequenza(pins,3);
+
+void setup() {
+  // I PINs vengono impostati dal constructor al momento
+  // della dichiarazione dell'ogetto.
+
+ // right.Invert() ;  // Opzionale: inverte l'ordine del lampeggio da
+  // HI -> LOW --> LOW -> HI
+  // per avere 2 LED che lampeggiano alternativamente
+}
+
+void loop() {
+//  left.Blink();   // Lampeggia con un default di 1sec (0.5 HI 0.5 LOW)
+  right.Blink();
+  pLeft.UD(2000);
+  coda.Blink();
+  motore.UD(2000);
+  seq.Update(200);
+}
index 3ffa994f3e425ba1cb9a7fbc181392836020fbb4..bde402ba79697eb263ad73f84b32d9e9928f2a96 100644 (file)
@@ -7,10 +7,7 @@ Pilotare un LED RGB in base al canale degli alettoni:
 - roll a sx
 - roll a dx
 
-NOTE: uso di goto all'interno dell FSM.
-
 TODO:
-
 * clean up magic numbers
 
 */
@@ -62,8 +59,8 @@ void setup() {
    Serial.begin(9600);
 #endif
 
-    // Funzione relativa a calibrazione:
-    mid_point =  calibraTrim(ailPin) ; // + LED di servizio per monitor calibrazione
+// Funzione relativa a calibrazione:
+mid_point =  calibraTrim(ailPin) ; // + LED di servizio per monitor calibrazione
 }
 
 void loop() {
index fdea33825ea27a05cbb58eb248236d0366a1d238..f636fd5607cc6b831c2ba423b4e7913e7007d826 100644 (file)
@@ -10,6 +10,10 @@ Nota: questa funzione usa PULSEIN in modo da poter lavorare su
 qualunque PIN, considerando che in genere viene eseguita 
 una sola volta nel SETUP.
 
+Si noti che se il canale viene poi letto con un interrupt e non con pulseIn
+statisticamente bisogna incrementare (almeno sulle mie RX) il valore ottenuto
+di circa 10.
+
 Se si vuole qualcosa non blocking sostituire PULSEIN con 
 un interrupt.
 
@@ -25,7 +29,7 @@ void setup() {
     Serial.begin(9600); // Se abilitato la calibrazione viene tracciata su seriale
     // Abilitando anche DEBUG nella libreria
 
-    mid_point =  calibraTrim(ailPin) ; // Pin a cui e' collegato il canale
+    mid_point =  calibraTrim(ailPin) + 8; // Pin a cui e' collegato il canale
 //mid_point =  calibraTrim(ailPin,11) ; // + LED di servizio per calibrazione
 
 Serial.print("Valore calibrato: ");
index ccd6c68a2d13fd46fb1fade4e383b40d23a8d156..269db74abcdb3c02e7e0d4e7a244bb2f730e9f5e 100644 (file)
@@ -16,7 +16,7 @@
 
 
 // Variabili
-const byte chPin = A4; // PIN su cui e' collegato il canale
+const byte chPin = 2; // PIN su cui e' collegato il canale
 unsigned int chIn = 1500; // Valore catturato
 unsigned int chValue = 1500; // Valore computato
 // Attenzione che pulsein e' blocking
@@ -26,22 +26,24 @@ int mid_point = 1500;
 
 void setup() {
     // Funzione relativa a calibrazione:
-    mid_point =  calibraTrim(chPin) - 10; // Con pulse in si toglie 10
-Serial.begin(9600); // Warning: interrupts e serial potrebbero dare problemi
+    mid_point =  calibraTrim(chPin)  ; 
 
-} ;
+Serial.begin(9600); // Warning: interrupts e serial potrebbero dare problemi
+};
 
 void loop() {
-
-// Lettura ailerons channel ogni 200ms
+// Lettura canale
         chIn = pulseIn(chPin, HIGH, 25000);
-        if (chIn != 0 && chIn > 1000 && chIn <2000)  {
-            // get only resonable values
+        if (chIn > 1000 && chIn <2000)  {
+            // Scartiamo valori fuori range, talvolta pero' alcune RX
+            // hanno il minimo un po' sotto a 1000
             chValue = chIn;
     };
 
-
 // do something with    chValue
+
+    Serial.print(chIn);
+    Serial.print(" > chValue= ");
     Serial.print(chValue);
     Serial.print(" - base: ");
     Serial.println(mid_point);
index 81cdd7758f66aa01de3925c3e33315f4e927e8c6..b25af091039f77d81a2d5150f0ec7dc928744d7b 100644 (file)
 unsigned long currentMillis; // timestamp reference per millis per tutto il loop
 
 // Variabili
-const byte chPin = A4; // PIN su cui e' collegato il canale
+const byte chPin = 2; // PIN su cui e' collegato il canale
 long unsigned chStamp = 0; // Timestamp per
 unsigned int chIn = 1500; // Valore catturato
 unsigned int chValue = 1500; // Valore computato
 unsigned int freq = 200 ; // Ogni quanti millisecondi leggere il valore
+int mid_point = 1500; // Punto medio per calibrazione
 // Attenzione che pulsein e' blocking
 
 void setup() {
-    // Funzione relativa a calibrazione:
-//    mid_point =  calibraTrim(chPin) +10 ; // Con pulse in c'e' una traslazione ~10
+// Funzione relativa a calibrazione: per il throttle si puo' evitare
+    mid_point =  calibraTrim(chPin)  ; 
+
 #ifdef DEBUG
 Serial.begin(9600); // Warning: interrupts e serial potrebbero dare problemi
-} ;
 #endif
+} ;
 
 void loop() {
     currentMillis = millis(); // Timestamp per tutto il loop
index 829095a6a382ff0fa06e73166359c1e53a869279..59d2a744b833018dacda1cab0c362dc3719e0649 100644 (file)
@@ -18,13 +18,16 @@ const byte chPin = 2; // PIN per la calibrazione
 int mid_point = 1500;
 
 void setup() {
-    // Funzione relativa a calibrazione con pulsein:
-//    mid_point =  calibraTrim(chPin) ; // Calibrazione del TRIM attivo sul canale
-    attachInterrupt(0, chRise, RISING); // PIN 2 su 328p / 168
+// Funzione relativa a calibrazione con pulsein:
+ mid_point =  calibraTrim(chPin) + 8; // Calibrazione del TRIM con pulseIn:
+ // se si usa poi un interrupt si aggiunge ~10
+
+attachInterrupt(0, chRise, RISING); // PIN 2 su 328p / 168
+
 #ifdef DEBUG
 Serial.begin(9600); // Warning: interrupts e serial potrebbero dare problemi
-} ;
 #endif
+} ;
 
 void loop() {
 #ifdef DEBUG
index 9ea67fe4cf4a842b32a3276702e115151e9fcd9d..2cf33a844812dab0c82720b06834e775d4c7fdc2 100644 (file)
@@ -28,12 +28,16 @@ int mid_point3 = 1500;
 
 void setup() {
     // Funzione relativa a calibrazione con pulsein:
-    mid_point2 =  calibraTrim(chPin2) ; // Calibrazione del TRIM attivo sul canale
-    mid_point3 =  calibraTrim(chPin3) ; // Calibrazione del TRIM attivo sul canale
+    mid_point2 =  calibraTrim(chPin2) + 8 ; // Calibrazione del TRIM attivo sul canale
+    mid_point3 =  calibraTrim(chPin3) + 8; // La calibrazione in genere non serve
+    // su throttle, il valore minimo e' costante e non c'e' TRIM
+
     attachInterrupt(0, chRise2, RISING); // PIN 2 su 328p / 168
     attachInterrupt(1, chRise3, RISING); // PIN 3 su 328p / 168
+
 #ifdef DEBUG
 Serial.begin(9600); 
+Serial.flush();
 #endif
 } ;
 
index e696ff4321e279a9cfd7bc98e632980c78e7c21b..e99f202804a45134155d354388719b26f8b1d0de 100644 (file)
@@ -417,7 +417,7 @@ int calibraTrim(int pin, const byte ledPin) {
     Serial.println(middle / 10 + 10);
     Serial.flush() ;
 #endif 
-    return(middle / 10 + 10) ;
+    return(middle / 10 ) ;
 // END calibrazione
 };