Il protocollo I2C, acronimo di Inter Integrated Circuit, è un metodo di comunicazione seriale ideato dalla Philips che permette il trasferimento dati utilizzando solo due fili, nello specifico uno trasmette i dati e l’altro, tramite un Clock, sincronizza la trasmissione.
In tutto questo bus di comunicazione si forma da 4 fili:
- Una tensione stabile di riferimento (Vdd)
- Una linea di scambio dati (SDA = Serial Data)
- Una linea per la sincronizzazione (SCL = Serial Clock)
- Una massa di riferimento (GND)
Questa trasmissione è composta da Master e Slave infatti il Master imposterà il Clock con la lineaSCL e scambierà dati con lo slave utilizzando la linea SDA.
Un esempio pratico lo vediamo nell’utilizzo di un Display LCD che può essere collegato in due modi:
- Utilizzando molti PIN Digitali della nostra scheda:
- Utilizzando il Display con associato un Modulo che attraverso un integrato genera una trasmissione I2C, la quale mi offre il vantaggio di risparmiare PIN sulla scheda poiché utilizza solo 2 PIN Analogici:
Per poter utilizzare il protocollo I2C è necessario avere un display con il modulo e le giuste librerie:
Il modulo lo possiamo trovare digitando ad esempio qui “modulo display lcd I2c“
Le librerie di cui abbiamo bisogno sono 2 una è la libreria Wire.h presente già nell’IDE l’altra è la libreria LiquidCrystal_I2C.h scaricabile da qui: https://mega.co.nz/#F!148zWJDZ!j9I8DUita_mhJFr5z6yGsg
Una volta installata la libreria in C:Programmi(x86)Arduinolibraries passiamo allo sketch:
#include "Wire.h" //Includiamo la libreria Wire.h #include "LiquidCrystal_I2C.h" //Includiamo la libreria del Display LCD LiquidCrystal_I2C lcd(0x27,16,2); //Settiamo il display con 16 colonne e 2 righe void setup() { lcd.init(); //inizializziamo il display lcd.backlight(); //Settiamo la retroilluminazione lcd.print(" Maker Italia"); //Stampiamo a video la nostra stringa di caratteri lcd.setCursor(0, 1); //Ci spostiamo nella riga successiva lcd.print("ProtocolloI2C"); //Stampiamo nuovamente a video } void loop() { }
Una volta copiato caricatelo sulla vostra scheda e adesso potrete far funzionare il Display utilizzando solo 2 PIN analogici invece di 6 ingressi/uscite digitali!