I display I2C possono montare vari tipi di chip convertitore I2C-parallelo

Se il modello utilizzato è il PCF8574A l'indirizzo da usare è 3Fh e quindi durante l'inizalizzazione del display nello sketch è necessario inserire la riga:

LiquidCrystal_I2C lcd(0x3f,20,4);

Se invece il chip è il PCF8574 l'indirizzo da usare è 27h e quindi si userà la riga:

LiquidCrystal_I2C lcd(0x27,20,4);
Vedere quali indirizzi del bus I2C sono occupati

Il seguente programma è in grado di visualizzare sul monitor seriale tutti gli indirizzi I2C occupati, cioè gli indirizzi dove sono collocate delle periferiche I2C:

#include <Wire.h>
void setup(){
   Wire.begin();
   Serial.begin(9600);
   while (!Serial);             // Leonardo: wait for serial monitor
   Serial.println("\nI2C Scanner");
}
 
 
void loop(){
   byte error, address;
   int nDevices;
   Serial.println("Scanning...");
   nDevices = 0;
   for(address = 1; address < 127; address++ ){
      // The i2c_scanner uses the return value of
      // the Write.endTransmisstion to see if
      // a device did acknowledge to the address.
      Wire.beginTransmission(address);
      error = Wire.endTransmission();
      if (error == 0){
         Serial.print("I2C device found at address 0x");
         if (address<16) Serial.print("0");
         Serial.print(address,HEX);
         Serial.println("  !");
         nDevices++;
      }
      else if (error==4){
         Serial.print("Unknown error at address 0x");
         if (address<16) Serial.print("0");
         Serial.println(address,HEX);
      }    
   }
   if (nDevices == 0) Serial.println("No I2C devices found\n");
   else Serial.println("done\n");
   delay(5000);           // wait 5 seconds for next scan
}

Ultime modifiche: sabato, 16 maggio 2020, 18:01