Il sito per chi ama smanettare con Arduino, Raspberry Pi & Co.

Protocollo I2C con Arduino

by

Moltiplichiamo il numero delle connessioni che possiamo utilizzare con Arduino grazie al protocollo I2C

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:
utilizzo di un Display LCD collegato utilizzando molti PIN Digitali
utilizzo di un Display LCD collegato utilizzando molti PIN Digitali
  • 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:
utilizzo di un Display LCD collegato attraverso I2C
utilizzo di un Display LCD collegato attraverso I2C

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!

Ti è rimasta una domanda o un dubbio?

Iscriviti e chiedi nella community

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.