Pin fissi per ogni bus
L’ATmega328P non ha una matrice dei pin: ogni periferica sta su pin precisi. L’I²C è su A4 (SDA) e A5 (SCL), l’SPI su D10 (SS), D11 (MOSI), D12 (MISO) e D13 (SCK), e la seriale hardware su D0 (RX) e D1 (TX), in comune con il chip USB. attachInterrupt() funziona solo su D2 e D3; gli altri pin richiedono gli interrupt di cambio stato.
Il PWM è su D3, D5, D6, D9, D10 e D11, segnati con ~. I pin 5 e 6 lavorano a circa 980 Hz (976,6 Hz), gli altri a 490 Hz. La libreria Servo occupa il timer dei pin 9 e 10, e tone() quello dei pin 3 e 11, quindi il PWM su quei pin si ferma mentre li usi.
A6 e A7: solo analogici
La Nano aggiunge A6 e A7, che la UNO non ha. Sono collegati solo all’ADC: digitalRead(), digitalWrite() e INPUT_PULLUP non funzionano. Da A0 ad A5 funzionano sia come ingressi analogici sia come pin digitali da 14 a 19.
Corrente e alimentazione
Le specifiche dell’ATmega328P indicano 20 mA per pin; 40 mA sono il suo massimo assoluto, e in totale il chip deve restare sotto i 200 mA dai suoi pin di alimentazione. Ci sono poi limiti per gruppi di pin: al massimo 150 mA erogati da D0–D4 e A0–A5 insieme e 150 mA da D5–D13, e al massimo 100 mA assorbiti da ciascun gruppo tra A0–A5, D0–D4 e D5–D13. Per relè, motori e strisce LED usa un transistor. Sulla Nano originale il pin 3V3 arriva dal chip USB-seriale, quindi funziona solo con l’USB collegato ed è adatto a piccoli carichi; i cloni possono essere diversi.
Tabella completa dei pin di Arduino Nano
| Pin | Porta | Stato | Analogico | Funzioni | Note |
|---|---|---|---|---|---|
| D0 | PD0 | Con cautela | No | RXD | seriale USB, UART RX |
| D1 | PD1 | Con cautela | No | TXD | seriale USB, UART TX |
| D2 | PD2 | Libero | No | INT0 | Nessuna limitazione |
| D3 | PD3 | Libero | No | PWM, INT1, OC2B | timer di tone() |
| D4 | PD4 | Libero | No | No | Nessuna limitazione |
| D5 | PD5 | Libero | No | PWM, OC0B | PWM a circa 980 Hz |
| D6 | PD6 | Libero | No | PWM, OC0A | PWM a circa 980 Hz |
| D7 | PD7 | Libero | No | No | Nessuna limitazione |
| D8 | PB0 | Libero | No | No | Nessuna limitazione |
| D9 | PB1 | Libero | No | PWM, OC1A | timer di Servo |
| D10 | PB2 | Libero | No | PWM, OC1B, SS | timer di Servo, SPI CS |
| D11 | PB3 | Libero | No | PWM, OC2A, MOSI | timer di tone(), SPI MOSI (TX) |
| D12 | PB4 | Libero | No | MISO | SPI MISO (RX) |
| D13 | PB5 | Libero | No | SCK | LED, SPI SCK |
| A0 | PC0 | Libero | ADC0 | No | Nessuna limitazione |
| A1 | PC1 | Libero | ADC1 | No | Nessuna limitazione |
| A2 | PC2 | Libero | ADC2 | No | Nessuna limitazione |
| A3 | PC3 | Libero | ADC3 | No | Nessuna limitazione |
| A4 | PC4 | Libero | ADC4 | SDA | I²C SDA |
| A5 | PC5 | Libero | ADC5 | SCL | I²C SCL |
| A6 | ADC6 | Solo ingresso | ADC6 | No | solo analogico |
| A7 | ADC7 | Solo ingresso | ADC7 | No | solo analogico |
Pin fisici: l’1 è TX (D1), il 15 è D12, il 16 è D13 e il 30 è VIN. VIN accetta da 6 a 20 V, consigliati da 7 a 12 V; 5V è la linea stabilizzata.
Domande frequenti
Posso usare A6 e A7 come pin digitali sulla Nano?
No. A6 e A7 sono collegati solo all’ADC dell’ATmega328P, quindi non hanno ingresso digitale, uscita né pull-up. Per leggere un pulsante su questi pin usa analogRead() e una resistenza esterna.
Quali pin di Arduino Nano supportano il PWM?
D3, D5, D6, D9, D10 e D11. D5 e D6 lavorano a circa 980 Hz (976,6 Hz), gli altri a 490 Hz.
Quali sono i pin I2C e SPI della Nano?
L’I²C usa A4 (SDA) e A5 (SCL). L’SPI usa D11 (MOSI), D12 (MISO) e D13 (SCK), con D10 come SS. Sono pin fissi nell’hardware.
Quanta corrente può dare un pin di Arduino Nano?
Le specifiche dell’ATmega328P indicano 20 mA per pin, con 40 mA come massimo assoluto e 200 mA in totale dai pin di alimentazione. Ci sono poi limiti per gruppi di pin: al massimo 150 mA erogati da D0–D4 e A0–A5 insieme e 150 mA da D5–D13, e al massimo 100 mA assorbiti da ciascun gruppo tra A0–A5, D0–D4 e D5–D13. Qualsiasi carico più grande di un LED va comandato con un transistor o un MOSFET.
Quali pin della Nano possono generare interrupt?
attachInterrupt() funziona su D2 e D3. Tutti gli altri pin possono generare un interrupt di cambio stato, tramite i registri PCINT o una libreria.