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
Sconti & Coupon

Novità!

Prova la nuova modalità di navigazione con le storie!

Accedi a Xenforo
Immagine di Dreame Aqua10 Ultra Roller: per tirare a lucido i pavimenti | Test & Recensione Dreame Aqua10 Ultra Roller: per tirare a lucido i pavimenti ...
Immagine di MOVA V50 Ultra Complete: il robot di fascia premium, che costa meno | Test & Recensione MOVA V50 Ultra Complete: il robot di fascia premium, che cos...

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

Quando acquisti tramite i link sul nostro sito, potremmo guadagnare una commissione di affiliazione. Scopri di più
Avatar di Elettronica Open Source

a cura di Elettronica Open Source

Pubblicato il 17/11/2017 alle 09:08

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.

Leggi altri articoli

👋 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

Non perdere gli ultimi aggiornamenti

Newsletter Telegram

I più letti di oggi


  • #1
    Microsoft si scusa con 2,7 milioni di utenti
  • #2
    Io non credo più che GTA 6 uscirà nel 2026
  • #3
    Il 6G abbatterà ogni limite di copertura
  • #4
    Intel abbandona gli E-Core su desktop: arriva Bartlett Lake
  • #5
    Addio limiti ottici: arrivano i materiali giromorfi
  • #6
    Non puoi parlare se non sei competente, la Cina blocca gli influencer
Articolo 1 di 5
MOVA V50 Ultra Complete: il robot di fascia premium, che costa meno | Test & Recensione
Un robot aspirapolvere che sfida i top di gamma con soluzioni ingegneristiche avanzate, ma non privo di compromessi da considerare.
Immagine di MOVA V50 Ultra Complete: il robot di fascia premium, che costa meno | Test & Recensione
1
Leggi questo articolo
Articolo 2 di 5
Dreame Aqua10 Ultra Roller: per tirare a lucido i pavimenti | Test & Recensione
Un robot aspirapolvere lavapavimenti premium che sostituisce i tradizionali panni con un rullo rotante per una pulizia più efficace.
Immagine di Dreame Aqua10 Ultra Roller: per tirare a lucido i pavimenti | Test & Recensione
1
Leggi questo articolo
Articolo 3 di 5
Sta per scadere l’episodio 1 del Black Friday Mediaworld: ecco i migliori sconti
Oggi 7 novembre scade l'episodio 1 del Black Friday di Mediaworld. Diamo un'occhiata alle migliori offerte, quelle che potrebbero non ripresentarsi in altri episodi.
Immagine di Sta per scadere l’episodio 1 del Black Friday Mediaworld: ecco i migliori sconti
Leggi questo articolo
Articolo 4 di 5
La Cina investe nel quarzo per liberarsi dagli USA
La Cina investe 14 milioni di dollari per produrre quarzo sintetico e ridurre la dipendenza da una miniera statunitense essenziale per i semiconduttori
Immagine di La Cina investe nel quarzo per liberarsi dagli USA
Leggi questo articolo
Articolo 5 di 5
Quali sono le differenze tra una telecamera WiFi e un sistema di videosorveglianza professionale monitorato H24?
La videosorveglianza è uno strumento essenziale per la sicurezza, ma solo i sistemi attivi garantiscono un vero intervento H24.
Immagine di Quali sono le differenze tra una telecamera WiFi e un sistema di videosorveglianza professionale monitorato H24?
Leggi questo articolo
Advertisement
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

© 2025 3Labs Srl. Tutti i diritti riservati.