🚚 Besplatna dostava za narudžbe veće od 35EUR

LCD I2C DEBUG

LCD I2C DEBUG-Uncategorized

UVOD

Za one koji su imali porbleme upogoniti LCD s I2C adapetrom pokazati ćemo jednostavan debug. Iskoristiti ćemo prostor na ovom tutorialu da proširimo znanje o LCD libraryu i mogućnostima koje pruža. Krenimo pa ćemo vidjeti gdje će nas odvesti…

I2C LCD library pronađite ovdje.

I2C ADRESA

I2C adapter će nam uvelike pomoći pri spajanju LCD na Dasduino. Problem nastaje kada moramo zadati postavke u softwareu. Taj dio koda izgleda otprilike ovako:

// Postavke pinove koje I2C adapter koristi za LCD konekciju:
//                    addr,en,rw,rs,d4,d5,d6,d7,bl,blpol
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

Pinout je kod svakog kontrolera jednak. Ono što vrlo vjerovatno izaziva problem u vašem kodu je addr dio, tj. I2C adresa. Srećom, postoji vrlo jednostavno rješenje – Wire library dolazi s Arduino IDE softwareu i omogućuje nam da skeniramo sve I2C uređaje prikljućenje na Arduino s kojim komuniciramo odnosno njihove adrese. Evo ga:

#include "Wire.h"
void setup() {
  Serial.begin (115200);
  Serial.println ("I2C tragač. Tražim ...");
  byte count = 0;
  
  Wire.begin();
  for (byte i = 8; i < 120; i++)
  {
    Wire.beginTransmission (i);
    if (Wire.endTransmission () == 0)
      {
      Serial.print ("Pronađena adresa: ");
      Serial.print (i, DEC);
      Serial.print (" (0x");
      Serial.print (i, HEX);
      Serial.println (")");
      count++;
      delay (1); 
      }
  }
  Serial.print ("Pronađen ");
  Serial.print (count, DEC);
  Serial.println (" uređaj(a).");
void loop() {}
Klik na Serial Monitor i evo magije:

Pronađen je 1 uređaj s adresom 0x3F, u postavkama mijenjam adrr u 0x3F:

// Postavke pinove koje I2C adapter koristi za LCD konekciju:
//                    addr,en,rw,rs,d4,d5,d6,d7,bl,blpol
LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

Zapravo, idemo odmah zapisati nešto na LCD:

#include "Wire.h"
#include "LiquidCrystal_I2C.h"
// Postavke pinove koje I2C adapter koristi za LCD konekciju:
//                    addr,en,rw,rs,d4,d5,d6,d7,bl,blpol
LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
void setup() 
{
  lcd.begin(20,4);  // koristimo lcd s 20 x 4
  lcd.backlight(); // palimo pozadinsko osvjetljenje
  lcd.setCursor(0,0);    // postavimo kursor na prvi red i prvi stupac
  lcd.print("Bok Croduino!");  // i, nravno, pozdravna poruka
 
}
void loop()  
{ }

MIJENJANJE I2C ADRESE

Prvi bajt I2C je zadužen za start i adresu, odnosno 1 bit kojim signaliziramo početak i 7bitova za adresu. Ukupno 128 mogućih adresa. Ako ipak nekih slučajem imamo dvije iste adrese na Dasduinu nećemo moći komunicirati s oba uređaja, pa moramo promjeniti adresu jednom. Neki LCD I2C adapteri imaju mogućnost mijenjanja adrese, pogledaj sliku:

Spajanjem ovih padova mijenjati ćemo adresu uređaja, prema datasheetu adrese su (0 – spojeni padovi, 1 nema kontakta):

Drugi način je korištenjem I2C muliplexera, o čemu nekom drugom zgodom.