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>
<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&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">
</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>
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
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
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/
--- /dev/null
+/* 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;
+}
--- /dev/null
+/* 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);
+}
- roll a sx
- roll a dx
-NOTE: uso di goto all'interno dell FSM.
-
TODO:
-
* clean up magic numbers
*/
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() {
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.
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: ");
// 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
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);
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
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
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
} ;
Serial.println(middle / 10 + 10);
Serial.flush() ;
#endif
- return(middle / 10 + 10) ;
+ return(middle / 10 ) ;
// END calibrazione
};