Afisaj LCD cu interfata I2C

In acest articol vom folosi un display LCD 2004 impreuna cu un adaptor I2C pentru a reduce numarul conexiunilor intre afisaj si modulul Arduino.

Conectarea dintre modulul adaptor si Arduino este simpla deoarece vom folosi doar 4 fire: +5V, GND, SCL si SDA.

Pentru a putea utiliza acest adaptor vom folosi o librarie externa numita Arduino Liquid Cristal I2C Library si care poate fi descarcata de aici

Pe langa aceasta librarie va trebui sa cunoastem si adresa i2c al adaptorului folosit. Pentru acest lucru vom folosi sketch-ul i2c_scanner disponibil in editorul Arduino (meniul Fisier > Exemple > Wire > i2c_scanner). Codul acestui sketch este mai jos:

#include <Wire.h>
void setup() {
  Wire.begin();
  Serial.begin(9600);
  while (!Serial); // Leonardo: wait for serial monitor
  Serial.println("\nI2C Scanner");
}
void loop() {
  int nDevices = 0;
  Serial.println("Scanning...");
  for (byte address = 1; address < 127; ++address) {
    Wire.beginTransmission(address);
    byte 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
}

 Dupa ce citim adresa i2c a adaptorului vom testa functionarea displayului. Pentru acest lucru vom folosi sketchul de mai jos:

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x3F, 20, 4);

void setup()
{
	lcd.begin();
	lcd.backlight();
  lcd.setCursor(1, 0);
	lcd.print("Testare afisaj LCD");
  lcd.setCursor(3, 1);
  lcd.print("cu adaptor I2C");
  lcd.setCursor(1, 3);
  lcd.print("electronicstore.ro");
  delay(3000);
  lcd.clear();
}

void loop()
{
	lcd.setCursor(0, 0);
  lcd.print("Testare rand 1");
  lcd.setCursor(0, 1);
  lcd.print("Testare rand 2");
  lcd.setCursor(0, 2);
  lcd.print("Testare rand 3");
  lcd.setCursor(0, 3);
  lcd.print("Testare rand 4");
  delay(3000);
  lcd.noDisplay();
  lcd.noBacklight();
  delay(500);
  lcd.clear();
  lcd.display();
  lcd.backlight();
  lcd.setCursor(0, 2);
  lcd.print("www.");
  lcd.setCursor(0, 3);
  lcd.print("electronicstore.ro");
  delay(3000);
  lcd.clear();
  delay(500);
}

Cateva poze cu modulul I2C si afisajul in functiune mai jos:

Autentificare