Componenti · 19 min di lettura

Pinout Arduino Nano: pin, A6/A7, alimentazione e Old Bootloader

Pinout di Arduino Nano in una guida: D0–D13, A0–A7 (A6/A7 solo analogici), pin PWM, VIN/5V/3V3, driver CH340, Old Bootloader e corrispondenza con Uno.

Il pinout di Arduino Nano comprende 30 pin allineati sui due lati lunghi di una scheda di 45 × 18 mm: 14 pin digitali di ingresso/uscita (D0–D13), di cui 6 possono generare PWM (~3, 5, 6, 9, 10, 11), 8 ingressi analogici (A0–A7) e i pin di alimentazione e controllo VIN, 5V, 3V3, AREF, due GND e due RST. Poiché Nano usa lo stesso processore ATmega328P di Arduino Uno, anche numeri e funzioni dei pin sono gli stessi: uno sketch scritto per Uno funziona senza alcuna modifica, basta scegliere Nano nel menu delle schede.

Ci sono però alcuni dettagli importanti che distinguono Nano da Uno, ed è proprio lì che i principianti si bloccano: A6 e A7 sono solo analogici, la scheda non ha il jack di alimentazione, il pin 3V3 eroga pochissima corrente, sui cloni la parte USB è gestita da un chip CH340 e per caricare il codice spesso devi scegliere ATmega328P (Old Bootloader). In questa guida conoscerai ogni pin, imparerai a posizionare correttamente Nano sulla breadboard, vedrai la corrispondenza dei pin con Uno e scoprirai in cosa Nano Every e Nano ESP32 si differenziano dal Nano classico.

Scheda Arduino Nano e i suoi pin
Arduino Nano originale: a un'estremità la presa mini USB, all'altra il connettore ICSP 2×3, al centro il pulsante di reset. I pin D13, 3V3 e AREF sono sul lato USB; VIN e TX1 all'estremità opposta.

Che cos'è Arduino Nano e in cosa è diverso da Uno?

Arduino Nano racchiude tutte le funzioni di base di Uno in una scheda di 45 × 18 mm che pesa circa 7 grammi. I suoi pin sono rivolti verso il basso, quindi si inserisce direttamente nella breadboard; così si riducono i cavetti e, a circuito finito, lo si sposta facilmente in una scatola o su un circuito definitivo. All'interno c'è lo stesso ATmega328P a 16 MHz di Uno, la logica è a 5 V e le stesse librerie funzionano senza modifiche. Sul Nano originale la comunicazione USB-seriale è affidata a un chip FT232RL; quasi tutti i cloni economici in commercio hanno invece un CH340G o un CH340C sul lato inferiore. Per macchinine robot, progetti indossabili, telecomandi e qualsiasi circuito che debba stare in una scatola, Nano è una scelta più pratica di Uno.

CaratteristicaArduino Nano (V3)
MicrocontrolloreATmega328P, 8 bit, 16 MHz (package TQFP-32)
Tensione logica (di lavoro)5 V
Tensione di ingresso VINConsigliati 7–12 V
Ingressi/uscite digitali14 pin (D0–D13); 20 contando A0–A5
Uscite PWM6 pin: D3, D5, D6, D9, D10, D11
Ingressi analogici8 pin (A0–A7), 10 bit (0–1023)
Corrente per pin20 mA consigliati, 40 mA massimo assoluto
Memoria32 KB di flash (30.720 byte utilizzabili nell'IDE), 2 KB di SRAM, 1 KB di EEPROM
USBMini-B; FT232RL (originale) o CH340 (clone)
Dimensioni e peso45 × 18 mm, circa 7 g

Schema dei pin di Arduino Nano: dove si trova ogni pin?

I 30 pin di Nano sono disposti in due file contrapposte da 15, distanti 15,24 mm (0,6 pollici). Se metti la scheda davanti a te con la presa mini USB rivolta verso di te, subito accanto alla presa vedi due pin uno di fronte all'altro: D12 e D13. Nella fila di D13 si trovano 3V3, AREF, A0–A7 e i pin di alimentazione; nella fila di D12 ci sono i pin digitali da D11 a D2, seguiti da GND, RST, RX0 (D0) e TX1 (D1). All'estremità più lontana dall'USB, VIN e TX1 sono uno di fronte all'altro, e lì si trova anche il connettore ICSP 2×3. Intorno al pulsante di reset al centro trovi il LED di alimentazione (POW o ON), il LED L collegato a D13 e i LED TX e RX che lampeggiano durante il caricamento.

Posizione (dall'USB)Fila analogica e alimentazioneFila digitaleNota
1D13 (SCK, LED L)D12 (MISO)Subito accanto alla presa USB
23V3~D11 (MOSI)3V3 eroga pochissima corrente
3AREF~D10 (SS)-
4A0~D9-
5A1D8-
6A2D7-
7A3~D6-
8A4 (SDA)~D5Linea dati I2C
9A5 (SCL)D4Linea di clock I2C
10A6~D3 (INT1)A6 solo analogico
11A7D2 (INT0)A7 solo analogico
125VGND5V e GND uno di fronte all'altro
13RSTRSTEntrambi sono la stessa linea di reset
14GNDD0 (RX0)D0 è collegato al chip USB-seriale
15VIND1 (TX1)Il connettore ICSP è a questa estremità
Nei manuali e negli schemi i pin di Nano a volte sono numerati da 1 a 30 in ordine fisico: il pin 1 è TX1 (D1), il pin 30 è VIN. Questi numeri non si usano nel codice. Nel codice usi sempre il nome stampato sulla scheda: scrivi 7 per D7 e A3 per A3. Se le scritte sulla scheda sono difficili da leggere, tieni aperto sul telefono lo strumento pinout.

Pin digitali (D0–D13), PWM e funzioni speciali

Ogni pin digitale si imposta come ingresso o uscita con pinMode(); come uscita, HIGH dà circa 5 V e LOW 0 V. Per non lasciare un ingresso flottante puoi attivare con INPUT_PULLUP la resistenza interna da 20–50 kΩ del chip. La corrente sicura per pin è di 20 mA; un LED rosso con una resistenza da 220 Ω assorbe circa 13 mA, e puoi trovare la resistenza giusta con il calcolatore della resistenza per LED. Alcuni pin hanno funzioni aggiuntive, e conoscerle in anticipo evita conflitti quando il progetto cresce:

PinFunzione aggiuntivaA cosa fare attenzione
D0 (RX), D1 (TX)Porta seriale hardware (Serial)Collegati al chip USB-seriale tramite resistenze da 1 kΩ; lasciali liberi durante il caricamento
D2, D3Interrupt esterni INT0, INT1attachInterrupt() funziona solo su questi due pin
~D3, ~D11PWM, Timer2 (circa 490 Hz)Il PWM di questi pin si altera mentre suona tone()
~D5, ~D6PWM, Timer0 (circa 980 Hz)Stesso timer di millis() e delay()
~D9, ~D10PWM, Timer1 (circa 490 Hz)La libreria Servo disattiva il PWM di questi due pin
D10–D13SPI: SS, MOSI, MISO, SCKCon l'SPI, D10 deve restare un'uscita
D13LED L sulla schedaIl LED e la sua resistenza sono collegati direttamente al pin

Un dettaglio piccolo ma importante che distingue Nano da Uno riguarda D13. Su Uno R3 il LED L è pilotato tramite un amplificatore operazionale, mentre su Nano il LED e la sua resistenza sono collegati direttamente al pin. Se usi D13 come ingresso per un pulsante con INPUT_PULLUP, il LED tira il pin verso il basso e potresti leggere LOW anche a pulsante rilasciato; riserva questo pin alle uscite o all'SPI. Come funziona il PWM e cosa significano i valori di analogWrite() lo trovi in Cos'è il PWM, gli interrupt in Interrupt su Arduino.

Pin analogici A0–A7: perché A6 e A7 sono diversi?

Gli otto ingressi analogici di Nano misurano tensioni tra 0 e 5 V con una risoluzione di 10 bit: analogRead() restituisce un numero da 0 a 1023 e un passo vale circa 4,9 mV. All'occorrenza A0–A5 funzionano anche come normali pin digitali (A0 = 14 … A5 = 19), e A4 e A5 sono anche le linee SDA e SCL del bus I2C. A6 e A7, che Uno non ha, sono due canali ADC aggiuntivi presenti solo nel package a montaggio superficiale (TQFP) dell'ATmega328P. Questi due canali sono collegati solo al convertitore analogico-digitale; dietro non c'è né un registro di porta, né un driver di uscita, né una resistenza di pull-up. Per questo pinMode(), digitalRead(), digitalWrite() e INPUT_PULLUP non funzionano su questi due pin.

Il compilatore non segnala errori su digitalRead(A6), ma il risultato non ha senso e il pulsante sembrerà non funzionare affatto. Usa A6 e A7 per sorgenti analogiche come un potenziometro, una fotoresistenza o un sensore di umidità del terreno. Se vuoi collegarci un pulsante, aggiungi una resistenza di pull-up esterna da 10 kΩ tra il pin e 5V e leggilo con analogRead(): quando il valore scende sotto 300, considera il pulsante premuto.

Il fatto che A6 e A7 siano solo analogici sembra uno svantaggio, ma si può sfruttare in modo furbo. Se colleghi più pulsanti a un pin analogico tramite resistenze di valore diverso, ogni pulsante produce una tensione diversa; così leggi quattro pulsanti con un solo pin e lasci i pin digitali a motori e display. Nel circuito collega A6 a 5V con una resistenza da 10 kΩ; collega il primo pulsante direttamente tra A6 e GND e gli altri tre verso GND tramite resistenze da 2,2 kΩ, 4,7 kΩ e 10 kΩ.

C++ (Arduino IDE)
1// A6'da 4 buton: 10 kΩ pull-up + farklı seri dirençler / 4 buttons on A6: 10 kΩ pull-up + different series resistors
2const byte LADDER_PIN = A6;    // yalnız analog pin / analog-only pin
3
4byte readButton() {
5  int v = analogRead(LADDER_PIN);
6  if (v < 92)  return 1;       // 0 Ω      -> yaklaşık 0 / about 0
7  if (v < 256) return 2;       // 2,2 kΩ   -> yaklaşık 184 / about 184
8  if (v < 419) return 3;       // 4,7 kΩ   -> yaklaşık 327 / about 327
9  if (v < 767) return 4;       // 10 kΩ    -> yaklaşık 512 / about 512
10  return 0;                    // basılı değil -> 1023 / not pressed -> 1023
11}
12
13void setup() {
14  Serial.begin(9600);
15}
16
17void loop() {
18  static byte lastButton = 0;
19  byte b = readButton();
20  if (b != lastButton) {
21    delay(20);                 // kontak sıçramasını bekle / wait out contact bounce
22    b = readButton();          // değeri doğrula / confirm the value
23    if (b != lastButton) {
24      lastButton = b;
25      if (b != 0) {
26        Serial.print(F("Buton / Button: "));
27        Serial.println(b);
28      }
29    }
30  }
31}
PulsanteResistenza in serie verso GNDanalogRead attesoIntervallo accettato nel codice
Pulsante 10 Ω (diretto)00–91
Pulsante 22,2 kΩCirca 18492–255
Pulsante 34,7 kΩCirca 327256–418
Pulsante 410 kΩCirca 512419–766
Nessuno-1023767–1023

I valori derivano dalla formula analogRead = 1023 × R / (10 kΩ + R), e ogni soglia sta esattamente a metà tra due valori vicini. Poiché la resistenza di pull-up e l'ADC sono alimentati dalla stessa linea a 5 V, le letture non cambiano anche se l'alimentazione scende a 4,7 V; si parla di misura raziometrica. Se premi due pulsanti insieme, le loro resistenze finiscono in parallelo e la lettura scende: il codice vede un pulsante con numero più basso, e 3 e 4 premuti insieme risultano addirittura come 2. Per questo la scala di resistenze va bene per menu in cui si preme un solo tasto alla volta. Puoi verificare il calcolo con il calcolatore del partitore di tensione e approfondire le letture analogiche nell'articolo sull'ADC.

Pin di alimentazione: VIN, 5V, 3V3 e GND

PinCosa faLimiti e attenzioni
VINAlimenta la scheda con 7–12 V; il regolatore abbassa la tensione a 5 VL'AMS1117 dei cloni regge al massimo 15 V e a 12 V si scalda in fretta
5VLa linea a 5 V della scheda: come uscita alimenta i sensori, come ingresso accetta 5 V stabilizzatiCon l'USB circa 4,7 V; non darle mai più di 5 V dall'esterno
3V3Uscita a 3,3 VArriva dall'FT232RL sull'originale e dal CH340 sui cloni; corrente molto limitata
GND (2 pin)Massa comuneLa GND di ogni alimentazione esterna va collegata qui
RST (2 pin)Riavvia la scheda quando viene portato a LOWPer un pulsante di reset esterno; sono la stessa linea
AREFIngresso di riferimento esterno per le misure analogichePrima di usarlo chiama analogReference(EXTERNAL)

Puoi alimentare Nano in tre modi. Tramite USB, i 5 V arrivano dal computer attraverso un diodo Schottky; il diodo fa cadere circa 0,3 V, quindi sul pin 5V di solito misuri 4,6–4,8 V, e il diodo MBR0520 della scheda originale è previsto per 500 mA al massimo. Se applichi 7–12 V sul pin VIN, il regolatore sul lato inferiore (un LM1117 sull'originale, quasi sempre un AMS1117 sui cloni) li abbassa a 5 V. Il regolatore trasforma la tensione in eccesso in calore: la potenza dissipata è (VIN − 5 V) × corrente, quindi se assorbi 150 mA con 12 V in ingresso il piccolo regolatore dissipa circa 1 W e diventa troppo caldo da toccare. Per questo su VIN l'ideale sono 7–9 V. Il terzo modo è fornire 5 V stabilizzati dall'esterno sul pin 5V; in questo caso il regolatore viene escluso e il diodo sul lato USB impedisce che la corrente torni verso il computer. Se lavori con un alimentatore da 12 V, è molto più fresco ricavare 5 V con un convertitore step-down LM2596 e portarli al pin 5V; tutti i modi di alimentazione sono spiegati in Come alimentare Arduino.

Il pin 3V3 è il più frainteso di Nano. Su Uno questo pin arriva da un regolatore dedicato, mentre il Nano classico non ha un regolatore a 3,3 V separato. Sul Nano originale i 3,3 V arrivano da un piccolo regolatore interno al chip FT232RL (50 mA al massimo) e, secondo la vecchia documentazione di Arduino, questa uscita non è disponibile quando la scheda non è alimentata via USB. Sulla maggior parte dei cloni il pin è collegato al regolatore interno del CH340 ed è sicuro solo per carichi di pochi mA. Quindi non alimentare da questo pin moduli a 3,3 V come nRF24L01, ESP-01 o RC522; usa un regolatore AMS1117-3.3 separato alimentato dal pin 5V. E quando colleghi un'uscita a 5 V di Nano all'ingresso di un modulo a 3,3 V, metti in mezzo un convertitore di livello o un partitore di tensione.

Collegare una batteria da 9 V o un alimentatore da 12 V al pin 5V brucia Nano all'istante: quel pin è l'uscita del regolatore e l'ATmega328P regge al massimo 6 V. Collega sempre batterie e alimentatori al pin VIN. Fai attenzione anche alla polarità: la maggior parte dei Nano non ha protezione contro l'inversione di polarità su VIN.

Il fatto che con l'USB il pin 5V si trovi intorno a 4,7 V influisce anche sulle misure analogiche: analogRead() usa la tensione di alimentazione come limite superiore, e se nel calcolo metti 5,0 V il risultato si sposta del 4–6 %. Si può calcolare la tensione di alimentazione reale misurando il riferimento interno fisso di circa 1,1 V dell'ATmega328P. Il primo sketch di prova qui sotto fa proprio questo, converte in volt tutti e otto gli ingressi analogici usando la tensione reale e fa lampeggiare il LED L su D13:

C++ (Arduino IDE)
1// Arduino Nano: A0-A7'yi ve gerçek besleme gerilimini oku / read A0-A7 and the real supply voltage
2const byte ANALOG_PINS[8] = {A0, A1, A2, A3, A4, A5, A6, A7};
3
4long readVccMillivolts() {
5  // Referans AVcc, ölçülen kanal dahili 1,1 V / reference AVcc, measured channel internal 1.1 V
6  ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
7  delay(2);                                // referansın oturmasını bekle / let the reference settle
8  ADCSRA |= _BV(ADSC);                     // dönüşümü başlat / start the conversion
9  while (bit_is_set(ADCSRA, ADSC)) {}      // bitmesini bekle / wait until it finishes
10  unsigned int raw = ADC;                  // 10 bit sonuç / 10-bit result
11  return 1125300L / raw;                   // 1,1 V x 1023 x 1000 / 1.1 V x 1023 x 1000
12}
13
14void setup() {
15  Serial.begin(9600);
16  pinMode(LED_BUILTIN, OUTPUT);            // D13'teki L LED'i / L LED on D13
17}
18
19void loop() {
20  long vcc = readVccMillivolts();
21  analogRead(A0);                          // kanal değişti, ilk okumayı at / channel changed, discard the first reading
22  Serial.print(F("Vcc: "));
23  Serial.print(vcc);
24  Serial.print(F(" mV |"));
25  for (byte i = 0; i < 8; i++) {
26    int raw = analogRead(ANALOG_PINS[i]);  // A6 ve A7 de okunur / A6 and A7 are read too
27    Serial.print(F(" A"));
28    Serial.print(i);
29    Serial.print(F("="));
30    Serial.print(raw * (vcc / 1000.0) / 1023.0, 2);   // gerçek Vcc ile volta çevir / convert to volts using the real Vcc
31  }
32  Serial.println();
33  digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));   // L LED'ini çevir / toggle the L LED
34  delay(1000);
35}

Dopo il caricamento apri il monitor seriale a 9600 baud. Il valore Vcc dovrebbe essere intorno a 4600–4800 mV con l'USB e intorno a 5000 mV con l'alimentazione da VIN. I pin analogici scollegati mostrano valori casuali; se colleghi un potenziometro ad A0 e lo ruoti, vedrai il valore cambiare in modo regolare tra 0 e Vcc. Il riferimento interno può variare del ±10 % da chip a chip; per un risultato più preciso misura il pin 5V con un multimetro e moltiplica la costante 1125300 del codice per il rapporto valore misurato / valore mostrato dal codice. Poiché questo sketch usa direttamente i registri dell'ATmega328P, non funziona su Nano Every né su Nano ESP32.

Mini USB, CH340 e installazione del driver

Il Nano classico ha una presa USB Mini-B; i cavi Micro-USB o USB-C dei telefoni non entrano. Alcuni cloni recenti hanno prese Micro-USB o USB-C, ma la maggior parte è ancora mini USB. Il motivo più comune per cui la scheda non compare affatto nell'elenco delle porte è un cavo di sola ricarica, senza fili dati: il LED di alimentazione si accende, ma il computer non vede la scheda. Se il cavo è a posto, gira la scheda e guarda il chip vicino alla presa USB. Se c'è scritto FT232RL è un Nano originale e il driver di solito è già presente nel sistema operativo; se c'è scritto CH340G o CH340C, hai un clone.

Windows 10 e 11 spesso installano da soli il driver del CH340 tramite Windows Update, e la scheda compare in Gestione dispositivi con un nome come USB-SERIAL CH340 (COM3). Se sotto Altri dispositivi vedi un USB2.0-Serial con un punto esclamativo giallo, installa il driver CH341SER del produttore del chip, WCH, poi scollega e ricollega la scheda. Le versioni recenti di macOS includono già il driver; la porta compare come /dev/cu.usbserial-…, e installare in più vecchi driver può creare conflitti. Su Linux il driver è già nel kernel; se su Ubuntu 22.04 o successivi la porta sparisce appena colleghi la scheda, è il pacchetto di lettura dello schermo brltty che si prende il CH340, e se non lo usi puoi rimuoverlo con sudo apt remove brltty. Tutti i problemi di porta e driver sono trattati in Errore di caricamento su Arduino, le differenze tra i chip USB-seriale in Convertitori USB-TTL.

Caricare il codice: ATmega328P o Old Bootloader?

  1. Nell'IDE Arduino scegli Strumenti > Scheda > Arduino AVR Boards > Arduino Nano.
  2. Collega la scheda e scegli in Strumenti > Porta la porta appena comparsa (per esempio COM3 su Windows o /dev/cu.usbserial-… su macOS).
  3. In Strumenti > Processor prova prima a caricare l'esempio Blink con l'opzione ATmega328P.
  4. Se l'output ripete programmer is not responding o not in sync per dieci tentativi, imposta Processor su ATmega328P (Old Bootloader) e carica di nuovo.
  5. Se ancora non funziona, prova un'altra porta USB, togli i cavi da D0 e D1 e controlla che il LED L lampeggi velocemente quando premi il pulsante di reset.
  6. Annota quale opzione ha funzionato; gli altri Nano dello stesso venditore richiederanno molto probabilmente la stessa impostazione.

Il motivo di questa confusione è una modifica del 2018. Arduino ha sostituito il vecchio bootloader da 2 KB del Nano (ATmegaBOOT) con l'Optiboot da 512 byte usato su Uno. Optiboot riceve il codice a 115200 baud, mentre il vecchio bootloader si aspetta 57600 baud; se le velocità non coincidono, la scheda sembra non rispondere affatto. Poiché i produttori di cloni hanno continuato per anni a usare il vecchio bootloader, l'IDE offre entrambe le opzioni, e scegliere quella sbagliata non danneggia la scheda. Se vuoi, puoi usare un secondo Arduino come ArduinoISP per scrivere il nuovo bootloader su Nano: i caricamenti diventano più veloci e sparisce anche il ciclo infinito di riavvii del vecchio bootloader dopo un reset del watchdog.

Opzione ProcessorBootloaderVelocità di caricamentoSpazio per il codice
ATmega328POptiboot (dal 2018)115200 baud30.720 byte
ATmega328P (Old Bootloader)ATmegaBOOT (vecchio)57600 baud30.720 byte
ATmega168ATmegaBOOT (vecchio)19200 baud14.336 byte
Per Nano l'output della compilazione riporta Maximum is 30720 bytes; con Uno selezionato, lo stesso sketch viene misurato rispetto a un limite di 32.256 byte. L'IDE riserva 2 KB su Nano per compatibilità con le schede più vecchie, anche se è installato il nuovo bootloader. Se il tuo sketch si avvicina a questo limite, togli le librerie inutilizzate e le righe Serial.print() superflue, semplifica le tabelle grandi o passa a Nano Every, che ha 48 KB di flash.

Posizionamento sulla breadboard e saldatura

Breadboard e il suo canale centrale
Il canale al centro della breadboard separa le due metà; quando Nano è montato a cavallo del canale, ogni suo pin finisce su una striscia diversa.

Quando inserisci Nano nella breadboard, posizionalo in modo che le due file di pin si trovino ai due lati del canale centrale. Così ogni pin finisce sulla sua striscia e puoi collegare i cavi a quel pin tramite i fori liberi della striscia. Poiché la scheda copre il canale e i fori tra i pin, accanto a ogni pin restano solo pochi fori; sulle comuni breadboard da 830 punti, se centri la scheda sul canale restano 2 fori liberi da un lato e 3 dall'altro. Se orienti la presa USB verso il lato corto della breadboard, il cavo si inserisce comodamente. Poi collega i pin 5V e GND di Nano alle linee di alimentazione rossa e blu della breadboard, così da alimentare i sensori da lì. Per ripassare come sono collegati i fori all'interno, leggi Cos'è una breadboard.

  • Saldare gli strip di pin: Sui cloni con i pin sciolti, inserisci prima gli strip maschio nella breadboard, appoggia Nano sopra e saldalo così; la breadboard tiene gli strip dritti ed esattamente a 0,6 pollici di distanza. Trovi la tecnica in Come saldare.
  • Per toglierlo: Sollevare la scheda da un solo lato piega i pin; solleva le due estremità un po' per volta, oppure infila sotto un cacciavite piatto ed estraila in modo uniforme.
  • Falsi contatti: Nelle breadboard vecchie o economiche le mollette si allentano; Nano si riavvia ogni tanto o un sensore sparisce a tratti. Prova a spostare la scheda in un'altra zona della breadboard.
  • Scheda di espansione per Nano: In un progetto definitivo, una Nano I/O shield con morsetti a vite o connettori a 3 pin che fornisce segnale, 5V e GND per ogni pin riduce molto il groviglio di cavi.
  • Mini breadboard: Le piccole breadboard da 170 punti non hanno linee di alimentazione; porta 5V e GND su strisce separate e contrassegnale con i colori dei cavi.
Se saldi Nano su una millefori a strisce (stripboard), assicurati che i pin uno di fronte all'altro non finiscano sulla stessa striscia di rame. Se le strisce non vengono interrotte tra le due file di pin, 5V e GND in posizione 12 e VIN e TX1 in posizione 15 vanno in cortocircuito, e appena colleghi l'USB la scheda e la porta del computer vengono messe sotto sforzo. Interrompi le strisce tra le due file con una punta da trapano; i dettagli sono nell'articolo sul circuito definitivo.

Tabella di corrispondenza dei pin tra Arduino Uno e Nano

FunzioneArduino Uno R3Arduino NanoNota
I/O digitaliD0–D13D0–D13Stessi numeri e funzioni
PWM~3, 5, 6, 9, 10, 11~3, 5, 6, 9, 10, 11Stesse frequenze e timer
Ingressi analogiciA0–A5A0–A7A6 e A7 solo su Nano e solo analogici
I2C SDA / SCLA4 / A5 (copia vicino ad AREF)A4 / A5Nano non ha pin SDA/SCL separati
SPI SS / MOSI / MISO / SCK10 / 11 / 12 / 1310 / 11 / 12 / 13Presenti anche sul connettore ICSP di entrambe
Interrupt esterniD2, D3D2, D3Uguale
LED integratoD13 (bufferizzato con un operazionale)D13 (collegato direttamente al pin)Attenzione a usare D13 come ingresso su Nano
Ingresso di alimentazioneJack e Vin, 7–12 VSolo pin VIN, 7–12 VNano non ha il jack
USBUSB-B; ATmega16U2 o CH340Mini-B; FT232RL o CH340Cavi diversi
Uscita 3,3 VRegolatore dedicato, 50 mADal chip USB, molto limitataSu Nano non alimentarci moduli
IOREFSìNoPer la compatibilità con le shield
Spazio per il codice32.256 byte30.720 byteL'IDE riserva 2 KB su Nano
Montaggio delle shieldDirettoCon adattatore o scheda di espansione-

Come vedi nella tabella, per spostare su Nano un circuito costruito per Uno basta collegare i cavi ai pin con lo stesso numero: un servo su D9 di Uno va su D9 di Nano, e un display I2C su A4/A5 resta su A4/A5. L'unica modifica nel codice è scegliere Arduino Nano in Strumenti > Scheda. Le shield che si innestano direttamente su Uno, però, non entrano su Nano; per questo esistono schede adattatrici che portano Nano al layout dei pin di Uno. Trovi il ruolo dettagliato di ogni pin di Uno in Pinout Arduino Uno, e un aiuto nella scelta della scheda in Quale Arduino comprare?.

Nano Every e Nano ESP32: le differenze dal Nano classico

CaratteristicaNano classico (V3)Nano EveryNano ESP32
ProcessoreATmega328P, 8 bit, 16 MHzATmega4809, 8 bit, 16 MHz nell'IDE (fino a 20 MHz)ESP32-S3, dual core, 32 bit, 240 MHz
Flash / SRAM32 KB / 2 KB48 KB / 6 KB16 MB / 512 KB (+8 MB di PSRAM)
Tensione logica5 V5 V3,3 V (non tollera i 5 V)
USBMini-BMicro-BUSB-C
Intervallo VINConsigliati 7–12 V7–21 V6–21 V
Pin PWMD3, D5, D6, D9, D10, D11D3, D5, D6, D9, D10 (non su D11)Quasi tutti i pin digitali
A6 / A7Solo analogiciAnalogici e digitaliAnalogici e digitali
Interrupt esterniSolo D2, D3Tutti i pin digitaliTutti i pin
Seriale D0 / D1Condivisa con l'USB (Serial)Separata dall'USB (Serial1)Separata dall'USB (Serial0)
WirelessNoNoWi-Fi e Bluetooth LE
Pacchetto schede dell'IDEArduino AVR BoardsArduino megaAVR BoardsArduino ESP32 Boards

Nano Every è una versione più potente del Nano classico, con le stesse dimensioni e lo stesso pinout. Monta un ATmega4809, funziona a 5 V e offre 48 KB di flash e 6 KB di SRAM; i progetti con display OLED o strisce LED che sul Nano classico restano a corto di RAM respirano meglio. Sul lato USB un chip SAMD11 fa da ponte e il codice viene caricato tramite l'interfaccia UPDI, quindi niente problemi di Old Bootloader. Per usare la scheda devi installare il pacchetto Arduino megaAVR Boards dal Gestore schede. Queste sono le differenze da tenere presenti: il PWM è disponibile solo su D3, D5, D6, D9 e D10 (D11 non ha il PWM), A6 e A7 funzionano anche come digitali, ogni pin digitale può essere usato come interrupt esterno e D0 e D1 sono una porta Serial1 indipendente dall'USB. L'impostazione Strumenti > Registers emulation > ATMEGA328 emula i registri di porta come PORTB, ma il vecchio codice che scrive direttamente nei registri dei timer o dell'ADC continua a non funzionare. Lo sketch qui sotto mostra due differenze di Every insieme: dialoga con un modulo su D0/D1 mentre il monitor seriale è aperto e usa A7 come ingresso per un pulsante con il pull-up interno.

C++ (Arduino IDE)
1// Nano Every: Serial = USB, Serial1 = D0 (RX) ve D1 (TX) / Serial = USB, Serial1 = D0 (RX) and D1 (TX)
2const byte BUTTON_PIN = A7;            // Every'de A7 dijital de çalışır / A7 also works as digital on the Every
3
4bool lastState = HIGH;
5
6void setup() {
7  Serial.begin(9600);                  // Seri Monitör / Serial Monitor
8  Serial1.begin(9600);                 // D0/D1'deki modül, ör. HC-05 / module on D0/D1, e.g. HC-05
9  pinMode(BUTTON_PIN, INPUT_PULLUP);   // klasik Nano'nun A7'sinde çalışmaz / does not work on the classic Nano's A7
10}
11
12void loop() {
13  if (Serial1.available()) {
14    Serial.write(Serial1.read());      // modülden bilgisayara / module to computer
15  }
16  if (Serial.available()) {
17    Serial1.write(Serial.read());      // bilgisayardan modüle / computer to module
18  }
19  bool state = digitalRead(BUTTON_PIN);
20  if (state != lastState) {            // durum değişince bildir / report when the state changes
21    lastState = state;
22    Serial1.println(state == LOW ? "Buton basildi / Button pressed" : "Buton birakildi / Button released");
23    delay(20);                         // kontak sıçraması / contact bounce
24  }
25}

Nano ESP32, invece, è un mondo completamente diverso nello stesso formato: il processore ESP32-S3 del modulo u-blox NORA-W106 lavora a 240 MHz e offre Wi-Fi e Bluetooth LE. La differenza più importante è la tensione: tutti i pin lavorano a 3,3 V e non tollerano i 5 V; un sensore con uscita a 5 V che collegheresti direttamente a un Nano classico può danneggiare Nano ESP32. Al posto del pin 5V del Nano classico c'è un pin VBUS, che fornisce 5 V solo quando la scheda è alimentata via USB; con l'alimentazione da VIN questo pin resta senza tensione. Al posto di AREF e del pin RST sul lato analogico trovi BOOT0 e BOOT1. La scheda si programma con il pacchetto Arduino ESP32 Boards, e il menu Strumenti > Pin Numbering ha due opzioni: con l'impostazione predefinita By Arduino pin valgono i nomi D e A stampati sulla scheda, con By GPIO number i numeri sono i GPIO dell'ESP32. Per esempio D2 in realtà è il GPIO5; in modalità GPIO, se scrivi pinMode(2, OUTPUT) stai configurando il pin A1. Se scrivi sempre i pin con il loro nome, come D2 e A0, il codice funziona correttamente in entrambe le modalità.

C++ (Arduino IDE)
1// Nano ESP32: Araçlar > Pin Numbering > By Arduino pin (default)
2// Nano ESP32: Tools > Pin Numbering > By Arduino pin (default)
3bool ledOn = false;
4
5void setup() {
6  Serial.begin(115200);                // USB-C üzerinden / over USB-C
7  pinMode(LED_BUILTIN, OUTPUT);        // D13 = GPIO48
8  pinMode(LED_RED, OUTPUT);
9  pinMode(LED_GREEN, OUTPUT);
10  pinMode(LED_BLUE, OUTPUT);
11  digitalWrite(LED_RED, HIGH);         // RGB LED ters mantık: HIGH = sönük / active low: HIGH = off
12  digitalWrite(LED_GREEN, HIGH);
13  digitalWrite(LED_BLUE, HIGH);
14  analogReadResolution(12);            // 0-4095 arası / range 0-4095
15}
16
17void loop() {
18  int raw = analogRead(A0);            // 12 bit ham değer / 12-bit raw value
19  int mv = analogReadMilliVolts(A0);   // kalibre edilmiş milivolt / calibrated millivolts
20  Serial.printf("A0: %d  (%d mV)\n", raw, mv);
21  digitalWrite(LED_GREEN, mv > 1650 ? LOW : HIGH);   // 1,65 V üstünde yeşil / green above 1.65 V
22  digitalWrite(LED_RED, mv > 1650 ? HIGH : LOW);     // altında kırmızı / red below
23  ledOn = !ledOn;
24  digitalWrite(LED_BUILTIN, ledOn ? HIGH : LOW);     // D13 LED'ini yakıp söndür / blink the D13 LED
25  delay(500);
26}

Gli ingressi analogici di Nano ESP32 misurano a 12 bit e restituiscono valori da 0 a 4095, mentre analogReadMilliVolts() usa i dati di calibrazione del chip per dare il risultato direttamente in millivolt. Il LED RGB sulla scheda funziona con logica invertita, cioè si accende quando scrivi LOW. Se il codice non si carica e la scheda sparisce dall'elenco delle porte, puoi metterla in modalità bootloader premendo due volte in rapida successione il pulsante di reset. Per scoprire il lato Wi-Fi dell'ESP32 leggi Cos'è l'ESP32, e per scegliere la scheda Arduino o ESP32?. Tra gli altri membri della famiglia, Nano R4 porta lo stesso Renesas RA4M1 a 48 MHz di Uno R4 nel formato Nano a 5 V, ma eroga solo 8 mA per pin, mentre Nano 33 IoT e Nano 33 BLE sono schede a 3,3 V come Nano ESP32.

Idee di progetto con Arduino Nano

  • Termometro tascabile: Mostra la temperatura misurata con un DHT11 su un piccolo display OLED; Nano e display stanno in una scatola di fiammiferi.
  • Mini macchinina robot: Le piccole dimensioni di Nano fanno risparmiare spazio sul telaio; pilota i motori con un L298N e segui i passaggi di Costruire una macchinina robot.
  • Robot segui-linea: Otto ingressi analogici bastano e avanzano per leggere una barra di cinque sensori; i dettagli sono in Robot segui-linea.
  • Telecomando Bluetooth: Collega un modulo HC-05 a D8 e D7 con SoftwareSerial e comanda un LED o un relè dal telefono; D0 e D1 restano liberi per il caricamento.
  • Luce da indossare: Realizza un badge luminoso o una luce per lo zaino con un Nano a batteria e qualche LED WS2812B.
  • Tastiera su un solo pin: Monta la scala di resistenze vista sopra sia su A6 sia su A7 per avere un menu a otto pulsanti e lascia i pin digitali a display e motori.
  • Vuoi una tastiera USB? L'ATmega328P del Nano classico non ha l'USB integrato, quindi non può presentarsi al computer come tastiera o mouse; per questo servono schede con ATmega32U4 come Leonardo e Pro Micro.

Errori comuni e soluzioni

SintomoCausaSoluzione
Nano non compare nell'elenco delle porteCavo di sola ricarica o driver CH340 mancanteUsa un cavo dati e installa il driver CH341SER; su Linux rimuovi brltty
Il caricamento si ferma con l'errore "not in sync"La scheda ha il vecchio bootloaderStrumenti > Processor > ATmega328P (Old Bootloader)
Un pulsante su A6 o A7 non rispondeQuesti pin non hanno digitalRead né pull-up internoAggiungi un pull-up esterno da 10 kΩ e usa una soglia con analogRead
Un pulsante su D13 risulta sempre premutoIl LED L e la sua resistenza tirano il pin verso il bassoSposta il pulsante su un altro pin
Un modulo alimentato dal 3V3 è instabile o non funzionaIl pin 3V3 eroga pochissima correnteUsa un regolatore a 3,3 V separato alimentato dal 5V
Le letture analogiche risultano più alte di qualche punto percentualeCon l'USB il pin 5V è a circa 4,7 VMisura la Vcc reale o alimenta la scheda da VIN
La scheda scalda molto con 12 V su VINIl regolatore dissipa (12 − 5) × corrente in caloreApplica 7–9 V su VIN o alimenta il pin 5V con un modulo step-down
Con un servo, il LED su D9/D10 non si attenuaLa libreria Servo usa il Timer1Sposta il LED su D3, D5, D6 o D11
Prima di iniziare un progetto con Nano, scrivi un piano dei pin: sistema prima i componenti che richiedono I2C (A4/A5), SPI (D10–D13), interrupt (D2/D3) e PWM, distribuisci i sensori analogici su A0–A3 e A6–A7, i pulsanti sui pin digitali rimasti, e tieni D0 e D1 per ultimi. Se la scheda si riavvia senza motivo, ti aiuteranno i passaggi di diagnosi di Arduino si riavvia da solo.

Arduino Nano è il modo più semplice per portare tutto ciò che hai imparato con Uno in progetti piccoli e definitivi; finché conosci le differenze su A6/A7, 3V3 e bootloader, non avrai sorprese. Se vuoi tornare alle basi, comincia da Cos'è Arduino. Nell'app BlueGrays trovi, passo dopo passo e con schemi di collegamento e codice pronto, progetti per accendere un LED, un LED con pulsante, misurare la luce con una fotoresistenza, la distanza con l'HC-SR04, temperatura e umidità con il DHT11, un LED RGB, un servo con potenziometro e la comunicazione seriale tra due Arduino; funzionano tutti su Nano con gli stessi numeri di pin.

Domande frequenti

Quanti pin ha Arduino Nano?

Il Nano classico ha 30 pin disposti su due file. Di questi, 14 sono ingressi/uscite digitali (D0–D13), 8 sono ingressi analogici (A0–A7) e gli altri sono VIN, 5V, 3V3, AREF, due GND e due RST. Poiché A0–A5 si possono usare anche come digitali, ottieni 20 pin digitali; A6 e A7 leggono solo valori analogici.

Quali sono i pin PWM di Arduino Nano?

I pin PWM sono D3, D5, D6, D9, D10 e D11; sulla scheda o negli schemi di pinout sono segnati con una ~ accanto al numero. D5 e D6 lavorano a circa 980 Hz, gli altri a circa 490 Hz. La libreria Servo influisce sul PWM di D9 e D10, la funzione tone() su quello di D3 e D11.

A6 e A7 di Arduino Nano si possono usare come pin digitali?

No. A6 e A7 sono due canali dell'ATmega328P collegati solo al convertitore analogico-digitale; pinMode, digitalRead, digitalWrite e il pull-up interno non funzionano su questi pin. Per leggere un pulsante aggiungi una resistenza di pull-up esterna da 10 kΩ e confronta il valore di analogRead() con una soglia. Su Nano Every e Nano ESP32, invece, A6 e A7 si possono usare anche come digitali.

Con quale tensione si alimenta Arduino Nano?

Puoi alimentare Nano via USB, con 7–12 V sul pin VIN o con 5 V stabilizzati sul pin 5V. Il regolatore AMS1117 dei cloni può guastarsi sopra i 15 V e si scalda in fretta già a 12 V, quindi su VIN l'ideale sono 7–9 V. Non dare mai più di 5 V al pin 5V.

Cosa significa Old Bootloader su Arduino Nano?

Nel 2018 Arduino ha sostituito il bootloader di Nano con Optiboot, più piccolo e veloce; il nuovo comunica a 115200 baud, il vecchio a 57600 baud. La maggior parte dei cloni in commercio ha ancora il vecchio bootloader, quindi se non scegli ATmega328P (Old Bootloader) in Strumenti > Processor il caricamento si ferma con l'errore not in sync. La scelta sbagliata non danneggia la scheda, quindi puoi provare entrambe le opzioni.

Che differenza c'è tra Arduino Nano e Uno?

Entrambi usano un ATmega328P a 16 MHz, quindi numeri dei pin, pin PWM, linee I2C (A4/A5) e SPI (D10–D13) e codice sono gli stessi. Nano è più piccolo, si inserisce nella breadboard e ha due ingressi analogici in più (A6, A7), ma non ha il jack di alimentazione né i connettori per le shield. Inoltre Nano usa il mini USB e l'IDE gli lascia 30.720 byte per il codice, mentre il limite di Uno è 32.256 byte.

Vedi tutti i progetti
LED lampeggiante
#1Principiante

LED lampeggiante

Il primissimo ciao dell'elettronica: accendere e spegnere un solo LED. L'Arduino accende e spegne il LED a intervalli brevissimi, così la luce lampeggia veloce. Vedi nel modo più semplice come la sche

4.6(188)
1127
Accendere un LED con un pulsante (Push)
#9Principiante

Accendere un LED con un pulsante (Push)

Come un campanello: la luce resta accesa finché premi e si spegne quando lasci. L'Arduino ascolta il pulsante di continuo; mentre è premuto accende il LED, e appena togli il dito lo spegne. Con questo

4.8(113)
229
Misurare l'intensità luminosa con LDR
#11Principiante

Misurare l'intensità luminosa con LDR

Vuoi vedere quanto è luminosa la tua stanza sotto forma di numero? L'LDR, un piccolo componente sensibile alla luce, misura la luce ambiente e l'Arduino scrive il valore sullo schermo del computer ogn

4.6(81)
139
HC-SR04 Misura della distanza (display seriale)
#27Principiante

HC-SR04 Misura della distanza (display seriale)

Il sensore HC-SR04 funziona come un pipistrello che trova la strada al buio: manda un suono che non puoi sentire, ne ascolta l'eco e misura quanto è lontano l'oggetto davanti a sé. L'Arduino scrive qu

4.6(46)
71
Temperatura e umidità con DHT11
#55Intermedio

Temperatura e umidità con DHT11

Quanti gradi ci sono nella tua stanza, e l'aria è umida o secca? Il sensore DHT11 misura temperatura e umidità, e l'Arduino scrive i valori su uno schermo LCD a due righe, aggiornandoli ogni paio di s

4.7(47)
73
Utilizzo dei LED RGB
#39Principiante
Premium

Utilizzo dei LED RGB

Dentro un solo LED si nascondono tre colori: il LED RGB si accende rosso, poi verde, poi blu, ogni colore acceso per mezzo secondo e spento per mezzo secondo, e poi il giro ricomincia. Ti bastano un L

4.9(73)
98
Funzionamento del servomotore con potenziometro
#36Principiante
Premium

Funzionamento del servomotore con potenziometro

Mentre giri la manopola del potenziometro, il braccio del servomotore ruota insieme a lei: un'estremità della manopola corrisponde a zero gradi, l'altra a mezzo giro. L'Arduino legge di continuo la po

4.6(37)
52
Comunicazione unidirezionale tra 2 Arduino
#57Intermedio
Premium

Comunicazione unidirezionale tra 2 Arduino

Fai parlare due Arduino con un solo filo: premi il pulsante sull'uno e il LED dell'altro si accende, premi di nuovo e si spegne. La scheda che invia segnala la pressione con un breve messaggio, e quel

4.4(37)
50