]> git.piffa.net Git - aerei_site/commitdiff
Navbar
authoreaman <eaman@andreamanni.com>
Tue, 21 Feb 2017 08:44:07 +0000 (09:44 +0100)
committereaman <eaman@andreamanni.com>
Tue, 21 Feb 2017 08:44:07 +0000 (09:44 +0100)
16 files changed:
_includes/nav_bar.html [new file with mode: 0644]
_layouts/default.html
_posts/aerei/2017-02-14-aereo-antonino.markdown
_posts/aerei/2017-02-15-zeta.markdown
_posts/aerei/2017-02-17-yak.markdown [new file with mode: 0644]
_posts/esempi/2017-02-09-libreria.markdown
_posts/esempi/2017-02-13-throttle-fsm.markdown
_posts/esempi/2017-02-20-alettoni-fsm.markdown [new file with mode: 0644]
_posts/snippets/2017-02-13-pulse-in.markdown [new file with mode: 0644]
_posts/snippets/2017-02-14-calibrazione_trim.markdown [new file with mode: 0644]
_posts/snippets/2017-02-15-interrupts.markdown [new file with mode: 0644]
_posts/snippets/repo [new symlink]
img/zeta.jpg [new file with mode: 0644]
img/zeta_light.jpg [new file with mode: 0644]
index.html
pages/setup.rst

diff --git a/_includes/nav_bar.html b/_includes/nav_bar.html
new file mode 100644 (file)
index 0000000..58107a0
--- /dev/null
@@ -0,0 +1 @@
+<a href="/">Home </a> - <a href="/setup">Setup</a> - <a href="/">Esempi</a> - <a href="/">Aerei</a> - <a href="/repo/">codice</a>
index 8a21bd714558689d0c4692418c316d04205b164c..9c12b5561435707419dee33855963e9260333c62 100644 (file)
@@ -5,6 +5,7 @@
 
   <body>
     {% include page-header.html %}
+  {% include nav_bar.html %}
 
     <section class="main-content">
       
index 51b5a2b5366cd48cf36e02e37ab5422346125276..1130cc4631adc033f73dd484a1c467acd129d446 100644 (file)
@@ -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 %}
index b1d49d54d9424213dd758e01fdd1b38bf856b120..d60b1dc8bc048183e8d0dbca5e29acf2baaad407 100644 (file)
@@ -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 <https://lab.piffa.net/schemi/uln2_darlinghton_arduino_bb.png> ).
 
+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 (file)
index 0000000..29fb45a
--- /dev/null
@@ -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 %}
+
index 42b863ac8f8653ff5bb75872f1c7d90457550a7d..efb3fa46efb0674faef56570860dedc618a1022a 100644 (file)
@@ -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
 
index dffda497808c9d3ad113dd94ad573db4e05cc969..168dee6eaf27bfb8828f8627a65dfd5d88643071 100644 (file)
@@ -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 (file)
index 0000000..ba0567c
--- /dev/null
@@ -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 (file)
index 0000000..0d55432
--- /dev/null
@@ -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 (file)
index 0000000..60776e4
--- /dev/null
@@ -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 (file)
index 0000000..d1eb075
--- /dev/null
@@ -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 (symlink)
index 0000000..3f5a289
--- /dev/null
@@ -0,0 +1 @@
+../repo
\ No newline at end of file
diff --git a/img/zeta.jpg b/img/zeta.jpg
new file mode 100644 (file)
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 (file)
index 0000000..05f4ff7
Binary files /dev/null and b/img/zeta_light.jpg differ
index 8e817a7b4a126b037d13465475d07878ae0c9694..bd1c6725e2784ceca0ef68fad147dc73cb55108b 100644 (file)
@@ -7,7 +7,7 @@ layout: default
 <div class="home">
 
 
-<h2>aerei</h2>
+<h2>Aerei</h2>
   <p>Codice degli aerei gia' pronti.</p>
 <ol>
 {% for post in site.categories.aerei %}
index 47aa90df1a62ef506cb9e2a993a682e51efc0cae..718a965b27030d543fbc883da08c66c6514ef970 100644 (file)
@@ -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 <https://git.andreamanni.com/web?p=common;a=snapshot;h=HEAD;sf=tgz>`__
@@ -46,8 +47,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