image/svg+xml
Logo Tom's Hardware
  • Hardware
  • Videogiochi
  • Mobile
  • Elettronica
  • EV
  • Scienze
  • B2B
  • Quiz
  • Tom's Hardware Logo
  • Hardware
  • Videogiochi
  • Mobile
  • Elettronica
  • EV
  • Scienze
  • B2B
  • Quiz
  • Forum
  • Sconti & Coupon
Offerte & Coupon
Accedi a Xenforo
Immagine di Dove vedere Inter - Bologna in TV e streaming Dove vedere Inter - Bologna in TV e streaming...
Immagine di Dove vedere Cagliari - Milan in TV e streaming Dove vedere Cagliari - Milan in TV e streaming...

Corso base di Arduino: manipolazione delle porte di I/O

Un approccio differente di programmazione consente di utilizzare le varie porte di I/O attraverso dei registri. Tale metodo consente di ottimizzare il codice, sia in termini di velocità di esecuzione che in lunghezza.

Advertisement

Avatar di Elettronica Open Source

a cura di Elettronica Open Source

Pubblicato il 17/11/2017 alle 09:08
Quando acquisti tramite i link sul nostro sito, potremmo guadagnare una commissione di affiliazione. Scopri di più

banner prova1

Per comprendere l'uso dei registri legati alle porte di comunicazione di Arduino, è opportuno esaminare anche alcuni esempi che prevedono il metodo tradizionale.

Lampeggio di otto diodi LED con il metodo tradizionale

Immaginiamo di dover fare lampeggiare ben otto diodi LED, collegati ad altrettante porte di uscita di Arduino, come mostrato nello schema di cui in figura 1. Per il lampeggio all'unisono di otto diodi LED, in realtà, basterebbe una porta sola, ma potrebbe sorgere, in futuro, l'esigenza di rendere tali dispositivi di segnalazione indipendenti tra loro. A noi, tuttavia, interessa comprendere la filosofia generale di funzionamento. Bene, con il metodo tradizionale occorre configurare le otto porte (siglate dalla numero 0 alla numero 7) come uscite digitali e alternare l'accensione e lo spegnimento concretizzando, di fatto, il lampeggio dei LED, alla cadenza di un secondo. Il listato di cui alla figura 2 mostra tale metodo, utilizzato sicuramente da tutti quando si comincia a muovere i primi passi con Arduino.

figura 1 schema 8 led
Figura 1: schema con 8 led

figura 2 listato lampeggio tradizionale
Figura 2: listato con lampeggio tradizionale

Lampeggio di otto diodi LED con l'uso dei registri

I registri legati alle porte di I/O consentono un accesso a basso livello e una gestione più veloce e ottimizzata. Inoltre permettono di accedere a più pin con un'unica istruzione. Relativamente ad Arduino Uno vi sono le seguenti porte multiple digitali trattate, a tutti gli effetti, come un normale byte:

  • La porta multipla D, che comprende le porte 0, 1, 2, 3, 4, 5, 6 e 7
  • La porta multipla B, che comprende le porte 8, 9, 10, 11, 12 e 13

L'insieme delle porte è controllato da tre registri:

  • Il registro DDR (e precisamente DDRD e DDRB) che configura la direzione delle singole porte, bit per bit
  • Il registro PORT (e precisamente PORTD e PORTB) che accede fisicamente alla singola porta
  • Il registro PIN (e precisamente PIND e PINB) che legge lo stato logico di una singola porta

Per effettuare il lampeggio di otto diodi LED in un'unica soluzione, occorre seguire le seguenti fasi:

  • Configurare le otto porte (0, 1, 2, 3, 4, 5, 6, 7) come output, con l'istruzione DDRD=B11111111. Per settare, invece, la porta 0 e 1 come input e le altre sei come output si deve inoltrare l'istruzione DDRD=B11111100
  • Comandare, a livello di bit, le singole porte con l'istruzione PORTD=Bxxxxxxxx. Ad esempio, per accendere tutti i Led si inoltri l'istruzione PORTD=B11111111 oppure PORTD=255. Per accendere i LED in posizione pari si usi, invece, il comando PORTD=B10101010 oppure l'equivalente PORTD=170

La figura 3 riporta, pertanto, il brevissimo listato equivalente, per funzionamento, a quello della figura 2.

figura 3 listato lampeggio registri
Figura 3: listato con lampeggio a registri

Con questa filosofia, si può facilmente realizzare un prototipo di generatore di segnale multiplo che eroghi, da ogni uscita, le seguenti frequenze:

  • Dalla porta 0: segnale quadro di 128 Hz
  • Dalla porta 1: segnale quadro di 64 Hz
  • Dalla porta 2: segnale quadro di 32 Hz
  • Dalla porta 3: segnale quadro di 16 Hz
  • Dalla porta 4: segnale quadro di 8 Hz
  • Dalla porta 5: segnale quadro di 4 Hz
  • Dalla porta 6: segnale quadro di 2 Hz
  • Dalla porta 7: segnale quadro di 1 Hz

Lo schema è il medesimo del precedente ma senza l'ausilio dei diodi LED. La figura 4 mostra il semplicissimo sketch.

figura 4 sketch generatore multiplo
Figura 4: sketch per generatore multiplo di segnale

L'esecuzione del prototipo genera otto diversi segnali quadri, con frequenza doppia della precedente, come quelli visualizzati in figura 5.

figura 5 grafico
Figura 5: grafico degli otto segnale generati

Tom's Consiglia

Per chi inizia ora e voglia dotarsi di tutto l'occorrente, Arduino Uno si trova facilmente a un prezzo abbordabile.

Le notizie più lette

#1
Google chiude i rubinetti di Gemini: finisce l'era della cortesia mentre GPT-5.2 bussa alla porta
9

Business

Google chiude i rubinetti di Gemini: finisce l'era della cortesia mentre GPT-5.2 bussa alla porta

#2
OpenAI regala ChatGPT Plus: ecco chi può averlo
4

Hardware

OpenAI regala ChatGPT Plus: ecco chi può averlo

#3
Le chiavi ROM di PS5 sono state diffuse: jailbreak in vista?
3

Videogioco

Le chiavi ROM di PS5 sono state diffuse: jailbreak in vista?

#4
Quanto conta il Noise Cancelling nell’ascolto per audiofili?
1

Altri temi

Quanto conta il Noise Cancelling nell’ascolto per audiofili?

#5
Fare impresa solo con l'AI, ecco com'è andata a chi ci ha provato
7

Business

Fare impresa solo con l'AI, ecco com'è andata a chi ci ha provato

👋 Partecipa alla discussione! Scopri le ultime novità che abbiamo riservato per te!

0 Commenti

⚠️ Stai commentando come Ospite . Vuoi accedere?

Invia

Per commentare come utente ospite, clicca triangoli

Cliccati: 0 /

Reset

Questa funzionalità è attualmente in beta, se trovi qualche errore segnalacelo.

Segui questa discussione

Advertisement

Ti potrebbe interessare anche

Dove vedere Cagliari - Milan in TV e streaming

Altri temi

Dove vedere Cagliari - Milan in TV e streaming

Di Dario De Vita
Dove vedere Inter - Bologna in TV e streaming

Altri temi

Dove vedere Inter - Bologna in TV e streaming

Di Dario De Vita
Dove vedere Lazio - Napoli in TV e streaming

Altri temi

Dove vedere Lazio - Napoli in TV e streaming

Di Dario De Vita
Dove vedere Juventus - Lecce in TV e streaming

Altri temi

Dove vedere Juventus - Lecce in TV e streaming

Di Dario De Vita
2026 parte con un regalo: scegli Pandora e risparmia fino al 40%

Altri temi

2026 parte con un regalo: scegli Pandora e risparmia fino al 40%

Di Dario De Vita

Advertisement

Advertisement

Footer
Tom's Hardware Logo

 
Contatti
  • Contattaci
  • Feed RSS
Legale
  • Chi siamo
  • Privacy
  • Cookie
  • Affiliazione Commerciale
Altri link
  • Forum
Il Network 3Labs Network Logo
  • Tom's Hardware
  • SpazioGames
  • CulturaPop
  • Data4Biz
  • TechRadar
  • SosHomeGarden
  • Aibay

Tom's Hardware - Testata giornalistica associata all'USPI Unione Stampa Periodica Italiana, registrata presso il Tribunale di Milano, nr. 285 del 9/9/2013 - Direttore: Andrea Ferrario

3LABS S.R.L. • Via Pietro Paleocapa 1 - Milano (MI) 20121
CF/P.IVA: 04146420965 - REA: MI - 1729249 - Capitale Sociale: 10.000 euro

© 2026 3Labs Srl. Tutti i diritti riservati.