Video introduttivo Arduino Nudo

Scopri come Arduino funziona davvero, senza scorciatoie, librerie o astrazioni.

Arduino a caselle

Arduino come un armadio

Immagina Arduino non come una scatola magica, ma come un armadio. Ogni fila ha 8 caselle, e in ciascuna può esserci una pallina o no. Pallina sì = 1, pallina no = 0, come interruttori. Ogni fila ha un numero identificativo che trovi nel PDF del produttore, con tutte le funzioni dei pin.

Registri Arduino

Registri (PDF del produttore pagina 280)

Nella foto sopra vediamo lo schema di Arduino Nano. Sotto ci sono alcuni registri, dal numero 3 al 12.

I registri e i pin sono collegati in modo logico. A prima vista può sembrare complicato, ma non lo è davvero. La difficoltà nasce perché spesso si usano nomi astratti invece dei numeri reali.

Registri Arduino

Nomi astratti 12, PB0 o D8

Ad esempio, invece di usare i numeri dei pin e dei registri, si usano nomi come 12, PB0 o D8. Questi nomi astratti aiutano nei programmi generici, ma qui è più semplice usare i numeri veri dei registri.

Ho evidenziato con colori diversi i pin e i registri collegati. Ci concentriamo su quelli verdi. Prendiamo il pin D8: corrisponde a tre locazioni diverse, chiamate PINB0, DDB0 e PORTB0.

Per mettere 5V su questo pin, prima dobbiamo dichiararlo come uscita. Con astrazioni, si usa il comando sbi DDRB, DDB0, ma funziona solo se DDRB è dichiarato come .equ DDRB=4 e DDB0 come .equ DDB0=0.

Senza astrazioni possiamo scrivere semplicemente sbi 4,0. Questo comando dice ad Arduino di attivare il pin come uscita.

In pratica, il pin D8 puo avere molti nomi, ma se usiamo il numero del registro e la posizione, possiamo controllarlo direttamente. Scrivere 1 nella posizione 0 del registro 4 lo attiva come uscita. Scrivere 1 nella posizione 0 del registro 5 mette 5V sul pin.

Conclusione

Registri Arduino

In poche parole: sbi 4,0 imposta il pin D8 come uscita, mentre sbi 5,0 mette D8 alto a 5V.

                In alternativa si puo scrivere anche cosi:
                
                ldi r16,0b00000001
                out 4,r16
                out 5,r16