diff --git a/_posts/aerei/2017-02-14-aereo-antonino.markdown b/_posts/aerei/2017-02-14-aereo-antonino.markdown index 51b5a2b..1130cc4 100644 --- a/_posts/aerei/2017-02-14-aereo-antonino.markdown +++ b/_posts/aerei/2017-02-14-aereo-antonino.markdown @@ -4,7 +4,7 @@ title: "Aereo di Antonino" date: 2017-02-13 06:14:16 +0100 categories: aerei --- -L'aereo di Antonino, vedi [esempio dell'uso del throttle](/esempi/2017/02/15/throttle-stadi.html). +L'aereo di Antonino, vedi [esempio sull'uso del throttle](/esempi/2017/02/15/throttle-stadi.html). {% highlight ruby %} {% include_relative /repo/aerei/antonino/bugatti/bugatti.ino %} {% endhighlight %} diff --git a/_posts/aerei/2017-02-15-zeta.markdown b/_posts/aerei/2017-02-15-zeta.markdown index b1d49d5..d60b1dc 100644 --- a/_posts/aerei/2017-02-15-zeta.markdown +++ b/_posts/aerei/2017-02-15-zeta.markdown @@ -6,14 +6,19 @@ categories: aerei --- La *Wing Wing z84 (Zeta)* di Andrea, il primo aereo usato per il volo notturno. +![zeta](/img/zeta.jpg){:class="img-responsive"} + Della Zeta sono disponibili [vari prototipi](/repo/aerei/zeta/). -La particolarita' di Zeta e' che invece che usare un integrato ULN2803a per pilotare i LED buona parte delle striscie sono attivate da un transistor incastonato nel telaio dell'aereo in prossimita' delle strisce. +La particolarita' di Zeta e' che invece che usare un integrato ULN2803a per pilotare i LED buona parte delle striscie sono attivate da transistors incastonati nel telaio dell'aereo in prossimita' delle strisce. *Non e' buon sistema ;)* -Per gli altri transistor e' stato fatto in piccolo circuito su una scheda preforata per metterne in array 4, questo sistema puo' essere seguito se non si hanno a disposizione gli integrati darlighton. +La flessione delle ali, atterraggi e transporto rendono molto instabile i circuiti: molto piu' semplice cablare tutto con l'integrato e fine (vedi ). +Per un gruppo di transistors e' stato fatto in piccolo circuito su una scheda preforata per metterne in array 4, questo sistema puo' essere seguito se non si hanno a disposizione gli integrati darlighton. TODO: aggiungere foto +![zeta-illuminata](/img/zeta_light.jpg){:class="img-responsive"} + {% highlight ruby %} {% include_relative /repo/aerei/zeta/zeta/zeta.ino%} {% endhighlight %} diff --git a/_posts/aerei/2017-02-17-yak.markdown b/_posts/aerei/2017-02-17-yak.markdown new file mode 100644 index 0000000..29fb45a --- /dev/null +++ b/_posts/aerei/2017-02-17-yak.markdown @@ -0,0 +1,19 @@ +--- +layout: post +title: "Yak 3D" +date: 2017-02-17 08:14:16 +0100 +categories: aerei +--- +# Prototipo dello Yak 980 3D di Andrea. + +Yak e' un acrobatico in EPP / scatolato, usa come inputs i canali throttle e alettoni. In questa versione non usa state machines, per il momento c'e' solo un ciclo *if* per gestire i LED. +C'e' un uso estensivo di map() per abbinare gli inputs al comportamento delle luci, probabilmente e' poco efficente ma e' una soluzione semplice... + +Di interessante c'e' una serie di LED in sequenza (3 unita' da 3 sgmenti) sotto l'aereo, comandati dall'oggetto Sequenza che li fa' muovere variandone la velocita' in base al throttle, utile per dare un'indicazione della direzione e intensita' di avanzamento dell'aereo. + +Yak e' stato il primo aereo a montare questa soluzione, realizzata con due piste di rame da 3mm ai lati + dei ponti con cavetti, un po' rozza ma molto economica rispetto a una striscia di neopixels. + +{% highlight ruby %} +{% include_relative /repo/aerei/yak/interrupts/interrupts.ino %} +{% endhighlight %} + diff --git a/_posts/esempi/2017-02-09-libreria.markdown b/_posts/esempi/2017-02-09-libreria.markdown index 42b863a..efb3fa4 100644 --- a/_posts/esempi/2017-02-09-libreria.markdown +++ b/_posts/esempi/2017-02-09-libreria.markdown @@ -4,11 +4,13 @@ title: "Utilizzo della libreria common" date: 2017-02-13 08:14:16 +0100 categories: esempi --- -TODO # Introduzione -* blocking -* OOP +La libreria *common* contiene alcuni oggetti e funzioni di base per lampeggi, dissolvenze e sequenze tramite millis() in modo da non bloccare il processore. + +I PWM oltre al solito comportamento lineare hanno i metodi **l** come in *lUp* o *lSet* per la correzione della luminosita' (simile alla GAMMA), il metodo UD (Up and Down) usa invece il *coseno* per ottenere un effetto analogo che puo' quindi essere spalmato su intervalli di varia lunghezza. + +Si possono instanziare piu' oggetti sugli stessi PIN, ad esempio se se vuole usare un lampeggio su un PWM o su un RGB. # Esempi sull'utilizzo della libreria diff --git a/_posts/esempi/2017-02-13-throttle-fsm.markdown b/_posts/esempi/2017-02-13-throttle-fsm.markdown index dffda49..168dee6 100644 --- a/_posts/esempi/2017-02-13-throttle-fsm.markdown +++ b/_posts/esempi/2017-02-13-throttle-fsm.markdown @@ -23,7 +23,7 @@ Gli stati disponibili sono dichiarati in una variabile di tipo *enum*. Nell'esempio successivo *ailerons_state_rgb.ino* verra' implementata una FMS con transizioni tra gli stati per la gestione di una luce RGB associata al canale degli alettoni. {% highlight cpp %} -{% include_relative /repo/esempi/ailerons_state_rgb/ailerons_state_rgb.ino %} +{% include_relative /repo/esempi/state_throttle/state_throttle.ino %} {% endhighlight %} diff --git a/_posts/esempi/2017-02-20-alettoni-fsm.markdown b/_posts/esempi/2017-02-20-alettoni-fsm.markdown new file mode 100644 index 0000000..ba0567c --- /dev/null +++ b/_posts/esempi/2017-02-20-alettoni-fsm.markdown @@ -0,0 +1,41 @@ +--- +layout: post +title: "Alettoni e Trottle con FSM" +date: 2017-02-20 08:14:16 +0100 +categories: esempi +--- + +Questo sketch pilota una striscia RGB in base agli alettoni: bianco con roll neutro, verde da un lato e blu dall'altro. Per enfatizzare la transizione tra neutro -> rollio si verifica un lampeggio di mezzo secondo nella transizione. + +Il throttle e' associato a un ciclo IF che pilota un LED in PWM sul motore e due lampeggiatori laterali: al throttle e' a zero corrisponde uno PWM in dissolvenza verso il bassso per il motore e per i lampeggiatori, con throttle normali la luminosita' del motore e' proporzionale a questo, i LED laterali lampeggiano a una frequenza proporzionale al throttle. A throttle al massimo c'e' una serie di lampeggi casuali per simulare un effetto afterburner. + + +INPUT: +* PIN 2 : throttle +* PIN 3 : alettoni + +OUTPUT: +* ailerons RGB Alettoni +* motore Motore PWM +* left, right 2 Lampeggiatori PWM laterali + PWM + +FSM per alettoni += 3 stati + 2 transizioni: +- piatto +- roll a sx +- roll a dx +- piatto -> sx +- piatto -> dx + +Tramite la lettura del valore del *throttle* vengono indicati 3 stati: +* IDLE: gas praticamente a zero +* Max: a tutto gas! +* Medio: tutti i valori intermedi + + + +{% highlight cpp %} +{% include_relative /repo/esempi/ailerons_state_thrFSM/ailerons_state_thrFSM.ino %} + +{% endhighlight %} + diff --git a/_posts/snippets/2017-02-13-pulse-in.markdown b/_posts/snippets/2017-02-13-pulse-in.markdown new file mode 100644 index 0000000..0d55432 --- /dev/null +++ b/_posts/snippets/2017-02-13-pulse-in.markdown @@ -0,0 +1,32 @@ +--- +layout: post +title: "Lettura dati canli RX con PulseIn" +date: 2017-02-13 05:14:16 +0100 +categories: snippets +--- + +# PulseIn + +PulseIn e' il modo piu' semplice per decodificare un canale PWM in ingresso, puo' lavorare su qualunque PIN che possa essere utilizzato come *INPUT*. Il problema e' che la funzione e' blocking: mentre viene misurata la lunghezza dell'intervallo il processore non puo' fare altro. + +Quindi possiamo anticipare un blocco di circa 1.5ms (media tra il minimo di 1ms e il massimo di 2ms) ogni 20ms (se la TX manda un impulso a ~50Hz, la FRSky che sto utilizzando ha un periodo di 18ms ma puo' essere impostata anche a 8ms). + +Questo puo' non avere un grosso effetto su dei lampeggi da 500ms ma e' influente su dei FADE o ovviamente la lettura di altri eventuali INPUT! Una soluzione potrebbe essere di lanciare la lettura con una frequenza minore, ad es. 5 volte al sec puo' essere adeguato per leggere un interruttore, vedi esempio di pulseIn con millis. + + +Soluzione migliore: utilizzare gli interrupts. + +## Lettura di un canale + + +{% highlight ruby %} +{% include_relative /repo/esempi/snippets/lettura_servo_ch_pulse/lettura_servo_ch_pulse.ino %} +{% endhighlight %} + + + +## Lettura di un canale con millis + +{% highlight ruby %} +{% include_relative /repo/esempi/snippets/lettura_servo_ch_pulse_millis/lettura_servo_ch_pulse_millis.ino %} +{% endhighlight %} diff --git a/_posts/snippets/2017-02-14-calibrazione_trim.markdown b/_posts/snippets/2017-02-14-calibrazione_trim.markdown new file mode 100644 index 0000000..60776e4 --- /dev/null +++ b/_posts/snippets/2017-02-14-calibrazione_trim.markdown @@ -0,0 +1,20 @@ +--- +layout: post +title: "Calibrazione Trim" +date: 2017-02-14 05:14:16 +0100 +categories: snippets +--- + +# Clibrazione + +Un canale come gli alettoni ha un minimo di 1000ms e un massimo di 2000ms, si presume quindi un punto medio di 1500ms. Questo e' il valore centrale che possiamo utilizzare come riferimento per i movimenti del comando. + +Questi canali possono pero' essere stati modificati con del Trim che trasla costantemente il punto medio: la funzione di calibrazione viene richiamata nel setup (quindi all'accensione della scheda, nel caso resettarla) e calcola il valore medio attuale del canale. Se la radio era spenta al momento dell'avvio viene utilizzato il valore medio 1500. + +Si noti che un canale come il throttle in genere non riceve TRIM e quindi non va' calibrato: potete leggere il valore tipico che hanno le vostre riceventi e impostare sempre quello come minimo. Sara' quindi un valore ~1000 e non 1500. + + + +{% highlight ruby %} +{% include_relative /repo/esempi/snippets/calibrazione_servo/calibrazione_servo.ino%} +{% endhighlight %} diff --git a/_posts/snippets/2017-02-15-interrupts.markdown b/_posts/snippets/2017-02-15-interrupts.markdown new file mode 100644 index 0000000..d1eb075 --- /dev/null +++ b/_posts/snippets/2017-02-15-interrupts.markdown @@ -0,0 +1,24 @@ +--- +layout: post +title: "Interrupts" +date: 2017-02-15 05:14:16 +0100 +categories: snippets +--- + +# Lettura di un canale PWM della RX con un interrupt + +Utilizzando un interrupt si puo' decodificare il segnale PWM proveninte dalla RX senza bloccare il processore. Le schede Arduino come la Uno / Nano / Mini hanno 2 interrupts abbinati ai PIN 2 / 3 utilizzabili tramite la funzione attachInterrupt . + + +# Canale Singolo + +{% highlight ruby %} +{% include_relative /repo/esempi/snippets/lettura_servo_interrupt/lettura_servo_interrupt.ino %} +{% endhighlight %} + +# Doppio Canale + +{% highlight ruby %} +{% include_relative /repo/esempi/snippets/lettura_servo_interrupt_doppio/lettura_servo_interrupt_doppio.ino %} +{% endhighlight %} + diff --git a/_posts/snippets/repo b/_posts/snippets/repo new file mode 120000 index 0000000..3f5a289 --- /dev/null +++ b/_posts/snippets/repo @@ -0,0 +1 @@ +../repo \ No newline at end of file diff --git a/img/zeta.jpg b/img/zeta.jpg new file mode 100644 index 0000000..89ce9f2 Binary files /dev/null and b/img/zeta.jpg differ diff --git a/img/zeta_light.jpg b/img/zeta_light.jpg new file mode 100644 index 0000000..05f4ff7 Binary files /dev/null and b/img/zeta_light.jpg differ diff --git a/index.html b/index.html index 8e817a7..bd1c672 100644 --- a/index.html +++ b/index.html @@ -7,7 +7,7 @@ layout: default
-

aerei

+

Aerei

Codice degli aerei gia' pronti.

    {% for post in site.categories.aerei %} diff --git a/pages/setup.rst b/pages/setup.rst index 47aa90d..718a965 100644 --- a/pages/setup.rst +++ b/pages/setup.rst @@ -12,7 +12,7 @@ Gli sketch utilizzano la libreria common presente nella cartella 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. +attuale. Per scaricare solo la libreria vedi sotto. Download =============== @@ -33,7 +33,8 @@ 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 `__ @@ -46,8 +47,8 @@ Links Risorse utili per utilizzare Arduino: * Per poter programmare le schede Arduino: `Arduino IDE `_ +* 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