Cosa succede quando premi Carica
- Compilazione: l'IDE trasforma lo sketch in codice macchina per l'ATmega328P e lo salva in un file .hex (formato Intel HEX).
- Reset: il computer cambia la linea DTR della porta seriale. Su Arduino Uno e Quasar Basic un piccolo condensatore trasforma quell'impulso in un reset del microcontrollore.
- Bootloader: dopo il reset, un piccolo programma chiamato Optiboot ascolta la porta seriale per circa un secondo, a 115200 baud.
- Scrittura e verifica: il computer parla con il bootloader con il protocollo STK500, scrive il programma in pagine da 128 byte, lo rilegge per controllarlo e poi lo avvia.
Solo il primo passo richiede il compilatore. Tutto il resto può farlo qualsiasi programma in grado di aprire una porta seriale, anche una pagina web.
Metodo 1: dal browser
Chrome ed Edge su computer supportano Web Serial, che permette a una pagina web di usare una porta seriale USB dopo il tuo consenso. La console web di Quasar lo usa per caricare programmi senza installare nulla:
- Collega Quasar Basic o un Arduino Uno con il cavo USB.
- Apri la console e scegli la scheda Carica.
- Scegli il firmware della console, uno dei programmi di esempio (Blink, SOS, dissolvenza, semaforo, pulsante, servo, sensore nel grafico) o un tuo file .hex.
- Premi Carica sulla scheda e scegli la porta della scheda.
La pagina riavvia la scheda, controlla che il chip sia un ATmega328P, scrive il programma, lo verifica e poi resta collegata come monitor seriale. Funziona solo via USB, non con il Bluetooth.
Esportare un .hex dall'IDE di Arduino
Per caricare un tuo sketch senza l'IDE, prima compilalo una volta: nell'IDE scegli Arduino Uno, poi dal menu Sketch esporta il binario compilato. Trovi i file in una cartella dentro lo sketch. Usa quello senza «with_bootloader» nel nome: l'altro contiene anche il bootloader e serve per un programmatore esterno.
Metodo 2: avrdude
avrdude è il programma che usa lo stesso IDE di Arduino per caricare. Con un file .hex basta una riga:
avrdude -p atmega328p -c arduino -P COM3 -b 115200 -U flash:w:blink.hex:i
-c arduino: il protocollo del bootloader di Arduino Uno;-P COM3: la porta (su Linux qualcosa come/dev/ttyUSB0o/dev/ttyACM0, su macOS/dev/cu.usbserial-…);-U flash:w:blink.hex:i: scrive il file nella memoria flash, in formato Intel HEX.
Metodo 3: arduino-cli
arduino-cli è la versione ufficiale a riga di comando degli strumenti di Arduino: compila e carica, quindi non serve nemmeno il .hex.
arduino-cli core install arduino:avr
arduino-cli compile --fqbn arduino:avr:uno MioSketch
arduino-cli upload -p COM3 --fqbn arduino:avr:uno MioSketch
È perfetto per script, compilazioni automatiche ed editor diversi dall'IDE di Arduino.
Problemi comuni
- La scheda non risponde («not in sync» in avrdude): porta sbagliata, un cavo USB che serve solo a ricaricare, o una scheda con un bootloader diverso. Se il reset automatico non funziona, premi il tasto reset della scheda proprio quando parte il caricamento.
- Porta occupata: un altro programma (il monitor seriale dell'IDE, un terminale) tiene aperta la porta. Chiudilo.
- Cloni di Arduino Nano: molti usano il vecchio bootloader a 57600 baud; in avrdude usa
-b 57600. La console di Quasar supporta solo Optiboot a 115200 (Arduino Uno e Quasar Basic). - Qualcosa collegato a D0/D1: i moduli sui pin della seriale possono disturbare il caricamento. Scollegali.
- Programma troppo grande: Arduino Uno ha 32.256 byte disponibili per i programmi.
