Controllare più pin contemporaneamente – Arduino

ArduinoUno_R3_Front_450px

Da tempo ormai abbiamo imparato a smanettare con il nostro Arduino. Controlliamo apparecchiature complicatissime o accendiamo semplicemente un led. Siamo comunque sperimentatori…degli inventori….dei creativi….dei Makers :)

Il punto di forza di Arduino è come abbiamo detto molte volte…la semplicità…la praticità. Per far lampeggiare un led si impiegano pochi secondi….

Semplicità non vuol dire poca potenza…o giochi da bambini :)

Infatti … volendo … e’ possibile dialogare con il processore Atmega anche in maniera un po più diretta e “meno semplice”…il tutto per scoprire nuove funzioni e portare al massimo la CPU.

Se vogliamo accendere un led procediamo come segue:

settiamo il pin come output : pinMode(Pin, OUTPUT);
e poi portiamo il livello ALTO o BASSO con  : digitalWrite(Pin, HIGH);

magari se siamo più addentrati mettiamo un cliclo e facciamo lampeggiare il led alla velocità che decidiamo noi….

….e fin qui tutto ok!

Ma se vogliamo cambiare lo stato di 2 o più pin contemporaneamente????
Voi direte….metto 2 o più righe di digitalWrite.

Si ma……sono più righe di codice e comunque sono istruzioni separate…che il processore, per quanto veloce, fa una dopo l’altra.

Non mi piace….voglio un comando che in una riga mi cambia lo stato di tutte le uscite contemporaneamente!

E se si cerca…il comando c’e’ !!!

Vi mando alla pagina ufficiale….se ve la volete leggere tutta!

Se no ve la spiego io ….

Arduino ha 3 porte :

  • B uscite digitali da 8 a 13
  • C ingressi analogici
  • D uscite digitali da 0 a 7

Iniziamo a parlare alla CPU a suoni di 1 e 0…..parliamo semplicemnte….1 e’ abilitato…0 disabilitato.

Voglio settare i pin da 1 a 7 come output e lo 0 come input in un unico comando?

Ecco come :
DDRD = B11111110;
Voglio settare i pin 7,5 e 3 come HIGH e tutti gli altri LOW….in un unico comendo???

Ecco :
PORTD = B10101000;

Notate che gli 1 sono in corrispondenza dei pin da settare…

Semplice no??????

I programmi creati saranno più snelli, corti….e di conseguenza occuperanno molto meno spazio nella preziosa e limitata memoria del nostro Arduino.

Il semplice programma per far lampeggiare il led che trovate tra gli esempi dell’IDE, opportunamente modificato per far lampeggiare 3 led contemporaneamente, occupa circa 1400 byte se scritto nel modo classico….e solo 600 byte se compilato usando questo metodo alternativo!

Buon Lavorooooo :)

 

Lascia un Commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *


+ 4 = otto

È possibile utilizzare questi tag ed attributi XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">