#13 Arduino: trovare l’indirizzo I2C

In questo tutorial vedremo come ricavare gli indirizzi degli slave i2c da usare nei vari sketch.

Gli indirizzi i2c solitamente vengono stabiliti dal costruttore, ma alcuni componenti ci danno la possibilità di modificare l’indirizzo tramite dei ponticelli destinati appunto alla codifica dell’indirizzo.

Quando i componenti non hanno modo di modificare il loro indirizzo o il datasheet non fornisce abbastanza informazioni, possiamo ricavare l’indirizzo tramite uno sketch.

Analizziamo lo sketch, per capire il funzionamento.

Includiamo la libreria Wire, per le comunicazioni i2c.
All’interno del setup, inizializziamo la comunicazione i2c, tramite comando Wire.begin().
Inizializziamo il monitor seriale per poter leggere i risultati sul display virtuale dell’Ide di Arduino e stampiamo la dicitura “Scanner I2C”.

All’interno del loop, definiamo le variabili che serviranno per la scansione, inseriamo un avviso di inizio scansione “Scansione in corso….”.
Impostiamo a 0 il numero dei Device prima di iniziare la scansione.
Inseriamo un ciclo for da 1 a 127, cioè gli effettivi indirizzi previsti dal protocollo i2c.
Attiviamo la trasmissione per ciascun indirizzo che crea il ciclo for.
Chiudiamo la trasmissione allo stesso indirizzo.

Creiamo un if, questo riporterà sul monitor seriale l’indirizzo del dispositivo, se a fine trasmissione avremo un codice di ritorno uguale a 0.
Inoltre incrementa di 1 la variabile nDevice, per continuare il controllo.

Se il codice di errore è uguale a 4, viene riportato a video “Errore sconosciuto all’indirizzo: 0x”, oltre all’indirizzo corrente.

Aggiungiamo un secondo if, questo verrà utilizzato nel caso in cui nDevice sarà 0, questo indica che lo scanner non ha trovato alcuna periferica slave connessa negli indirizzi da 1 a 127.
Inseriamo una pausa di 5 secondi prima del nuovo ciclo.

/ 5
Grazie per aver votato!

Allegati