La spina dorsale: passi sequenziali, niente fronzoli.
🧠 Immagina un armadio con tanti cassetti numerati (0x04, 0x05, 0x06...). Ogni cassetto ha 8 interruttori (bit 7...0).
Il microcontrollore può solo: accendere (SBI) o spegnere (CBI) questi interruttori. Quando accendi l'interruttore 5 del cassetto 0x05, il pin D13 si accende. Quando accendi gli interruttori 0-3 dello stesso cassetto, il motore fa un passo.
Niente magia: è solo un armadio con cassetti e interruttori. I nomi DDRB, PORTB sono solo etichette che abbiamo attaccato noi umani. Lui vede solo i numeri.
Registri
7
6
5
4
3
2
1
0
0x0D (0x2D)
Reserved
–
–
–
–
–
–
–
–
0x0C (0x2C)
Reserved
–
–
–
–
–
–
–
–
0x0B (0x2B)
PORTD
PORTD7
PORTD6
PORTD5
PORTD4
PORTD3
PORTD2
PORTD1
PORTD0
73
0x0A (0x2A)
DDRD
DDD7
DDD6
DDD5
DDD4
DDD3
DDD2
DDD1
DDD0
73
0x09 (0x29)
PIND
PIND7
PIND6
PIND5
PIND4
PIND3
PIND2
PIND1
PIND0
73
0x08 (0x28)
PORTC
–
PORTC6
PORTC5
PORTC4
PORTC3
PORTC2
PORTC1
PORTC0
73
0x07 (0x27)
DDRC
–
DDC6
DDC5
DDC4
DDC3
DDC2
DDC1
DDC0
73
0x06 (0x26)
PINC
–
PINC6
PINC5
PINC4
PINC3
PINC2
PINC1
PINC0
73
0x05 (0x25)
PORTB
PORTB7
PORTB6
PORTB5
PORTB4
PORTB3
PORTB2
PORTB1
PORTB0
72
0x04 (0x24)
DDRB
DDB7
DDB6
DDB5
DDB4
DDB3
DDB2
DDB1
DDB0
72
0x03 (0x23)
PINB
PINB7
PINB6
PINB5
PINB4
PINB3
PINB2
PINB1
PINB0
72
0x02 (0x22)
Reserved
–
–
–
–
–
–
–
–
0x01 (0x21)
Reserved
–
–
–
–
–
–
–
–
0x00 (0x20)
Reserved
–
–
–
–
–
–
–
–
🧠 Realtà: Il microcontrollore vede solo i numeri (0x04, 0x05...). Noi umani abbiamo dato nomi come DDRB, PORTB.
📦 passo 0
Materiali e collegamenti
Arduino Uno / Nano (ATmega328P)
Modulo driver ULN2003
Motore passo‑passo 28BYJ-48 (5V)
Cavi dupont
Alimentazione esterna 5V (consigliata)
Collegamenti
D8PORTB0ULN2003 IN1
D9PORTB1ULN2003 IN2
D10PORTB2ULN2003 IN3
D11PORTB3ULN2003 IN4
5V-alimentazione modulo
GND-comune
Nota: D8-D11 sono i bit 0-3 del registro PORTB (0x05).