Differenze fondamentali tra Arduino UNO e Leonardo

Ci è capito di ricevere e-mail o messaggi nei DM dove ci viene chiesto se un progetto da noi prodotto possa essere realizzato con Leonardo, piuttosto che con Arduino UNO o Nano, spiegando anche le differenze, se ce ne fossero tra un modello e l’altro. Iniziamo col dirvi che le differenze, ovviamente, esistono ma non sono semplicemente riconducibili ad una mera elencazione, ma meritano un approfondimento.

Dall’aspetto molto o quasi simile, Leonardo è un progetto più recente di UNO e si affaccia ad un pubblico meno hobbistico. Non a caso, Arduino UNO è ancora una delle dev-board più utilizzate per l’apprendimento nella programmazione dei microcontrollori, preferibile per piccoli progetti.



Potete acquistare Arduino Leonardo a questo link: https://amzn.to/3v5GO8y

Microcontrollore e GPIO

Arduino Leonardo è dotato di un microcontrollore ATMega32u4 a 16MHz, saldato direttamente sul PCB e quindi non rimovibili come invece accade per Arduino UNO, che però è dotato di un ATMega328 sempre a 16MHz. Per quanto riguarda i pin, nell’Arduino Leonardo troviamo 23 pin digitali, e 3 pin dell’ICSP non sono ripetuti nella scheda. Leonardo

A differenza di quanto accade in Arduino UNO, in cui i pin ICSP vengono ripetuti sulla scheda nei pin digitali 11, 12, 13. Ciò comporta collegamenti differenti nell’uso dell’interfaccia SPI, quindi ecco spiegato perché sketch che utilizzano la SPI su Arduino UNO, su Arduino Leonardo non funzionano. Altra importante differenza riguardi i pin PWM, ben 7 su Leonardo (in realtà, anche il pin 12 può essere usato come PWM) e solo 6 su Arduino UNO: ai pin già adoperati si aggiunge il pin 13, che rimane il pin in cui è connesso il LED integrato.

Restando in tempa di pin digitali, anche i pin per l’interfaccia I2C cambiano: restano sempre adoperabili i pin SDA e SCL sulla linea dei pin digitali, ma non possiamo adoperare i pin analogici A4 e A5 come su Arduino UNO. Su Arduino Leonardo, infatti, ci sposteremo sui pin digitali 2 e 3.

Visto che abbiamo nominato i pin analogici, su Arduino Leonardo sono 12, ben 6 in più di quelli previsti su Arduino UNO. Giusto per chiarirci, oltre ai noti pin analogici compresi tra A0 e A5, possiamo programmare anche i pin 4, 6, 8, 9, 10, 12, mantenendo sempre il segnale compreso nel range tra 0 e 1023. I pin digitali 0 e 1 sono adoperati da entrambe le dev-board per l’interfaccia UART, anche se su Leonardo sono ben 2. Infatti la comunicazione seriale su USB e quella sui pin digitali 0 e 1 sono separate.



Per quanto riguardo l’alimentazione, entrambe le schede lavorano con una tensione di 5V. Possiamo alimentare la scheda sia tramite porta USB (micro-USB su Leonardo e USB tipo B su UNO) a 5V, sia tramite connettore di alimentazione, che ci permetterà di fornire tensione fino a 12V. Anche su Leonardo troviamo un pin per i 5V, uno per 3,3V e ben 4 pin per il GND (uno è posto tra i pin ICSP).

LeonardoUNO
Clock16MHz16MHz
Flash memory32KB32KB
Bootloader4KB0,5KB
SRAM2,5KB2KB
EEPROMFino a 4KB1KB
InterfacciaSPI, I2C, UART (x2)SPI, I2C, UART
GPIO2320
PWM86
Pin Analogici126
Select SlaveMasterMaster/Slave
Alimetazione5/12V5/12V

Passando alla sostanza, Arduino Leonardo ha 32KB di memoria Flash e 4KB per il bootloader, al contrario di Arduino UNO che dedica solo 0,5KB al bootloader. La SRAM è maggiore nell’Arduino Leonardo (2,5KB) rispetto ad Arduino UNO (2KB), così come la EEPROM arriva fino a 4KB contro 1KB di Arduino UNO.

Vantaggi e svantaggi

Una volta comprese queste differenze e similitudini, cerchiamo di vedere quali sono i possibili svantaggi e vantaggi. Da un punto di vista poco esperto e pratico, non cambia molto nella scelta di un modello piuttosto che di un altro, ma tale osservazione sarebbe fin troppo facile da fare e sicuramente superficiale. La maggior parte delle shield in commercio, comprese anche quelle ethernet, sono inutilizzabili su Leonardo, poiché strutturate su Arduino UNO. Un ulteriore vantaggio dell’Arduino UNO è la sostituzione del microcontrollore ATMega328 nel caso di guasto, in quanto risiede all’interno del socket e non è saldato come per l’ATMega32u4 di Leonardo.



Quest’ultimo, anche se ha meno popolarità e un costo leggermente più alto rispetto all’UNO, possiede comunque una SRAM e un EEPROM più grandi rispetto al fratello minore, quindi lo rende sicuramente più flessibile, performante ed adatto ad un maggior numero di progetti. Ancora più importante è la separazione della comunicazione seriale in USB da quella sui pin digitali (0 e 1), che permette di utilizzare Leonardo in ambiti in cui Arduino UNO non lo permetteva. In ultimo, su Arduino Leonardo manca il SS (Select Slave) nell’interfaccia SPI, ossia una linea di segnale che possa indentificare la scheda come Master (segnale basso) o Slave (segnale attivo). Pertanto, in Leonardo la dev-board funzionerà sempre e solo come Master.