#3 Arduino librerie: Wire

come usare la libreria wire, per i collegamenti i2c

Nei collegamenti di tipo I2C tra Arduino e varie periferiche, per un corretto funzionamento occorre usare librerie specifiche, solitamente la più usata a questo scopo è la “wire.h”, anche se in base al tipo di slave usato, potrebbe essere necessario aggiungere altre librerie.

La libreria si aggiunge allo sketch tramite il comando #include <Wire.h>

ComandoFunzione
Wire.begin()

Esempio:
Wire.begin()
Wire.begin(indirizzo)
Inizializza la libreria, va usato una cosa volta

indirizzo (facoltativo): indirizzo dello slave a 7 bit.
Wire.end()Disattiva la libreria, inibendo il comando Wire.begin(), per riattivare la libreria occorre ripetere il comando Wire.begin()
Wire.requestFrom(indirizzo, quantità, stop)Questo comando è usata dal dispositivo controller per richiedere byte ad uno slave,

indirizzo: indirizzo dello slave a 7 bit
quantità: in numero di byte da richiedere
stop: può essere true o false, se true invierà un messaggio di stop dopo la richiesta.
Se false invierà continuamente un riavvio dopo la richiesta, mantenendo attiva la connessione.
Wire.beginTransmission(indirizzo)Questa funzione avvia la trasmissione al dispositivo periferico i2c con indirizzo specifico.

indirizzo: indirizzo dello slave
Wire.endTransmission()Interrompe la trasmissione attivata con begin.Transmission()
Wire.write(valore)
Wire.write(stringa)
Wire.write(data)
Wire.write(lunghezza)
Questa funzione scrive i dati da un dispositivo slave come risposta ad un master.

valore: un valore da inviare ad un singolo byte
stringa: una stringa da inviare come una serie di byte
data: una matrice di dati da inviare come byte
lunghezza: il numero di byte da trasmettere
Wire.available()Restituisce il numero di byte disponibili per il recupero con read().
Wire.read()Legge un byte che è stato trasmesso da uno slave ad un master dopo il comando requestFrom()
Wire.setClock(frequenza)Modifica la frequenza Clock per la comunicazione con i2c.
Le periferiche non hanno frequenza di lavoro, solitamente lavorano a 100KHz

I valori accettati sono:
100000 (modalità standard)
400000 (modalità veloce)
10000 (modalità bassa velocità)
1000000 (modalità veloce plus)
3400000 (modalità alta velocità)
Wire.onReceive(gestore)Registra la funzione da chiamare quando uno slave, riceve una trasmissione da un master

gestore: la funzione da chiamare quando lo slave riceve i dati.
Wire.onRequest( gestore)Registra una funzione da chiamare quando un master chiede dati ad uno slave

gestore: la funzione da chiamare.
Wire.setWire.Timeout( timeout, reset_on_timeout)Imposta il timeout per le trasmissioni via cavo in modalità master.

timeout: timeout in microsecondi, se 0 è disabilitato
reset_on_timeout: se vero il dispositivo verrà ripristinato automaticamente al timeout
Wire.clearWireTimeoutFlag()cancella i flag timeout
Wire.getWireTimeoutFlag()Controlla eventuali timeout dopo la cancellazione dell’ultimo flag
/ 5
Grazie per aver votato!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *