Arduino & I2C LCD radic 
koupil jsem si tenhle radic:
http://www.ebay.com/itm/171349409569

abych usetril vystupy z Arduina pri zapojeni LCD. Protoze I2C uz pouzivam pro ADS1115, tak je to idealni reseni. Jo, I2C se u cinskeho Iduino UNO zapojuje na analogove vstupy 4(SDA) a 5(SCL).

Problem č.1:
- display nezobrazuje/zobrazuje "ctverecky"/chova se zvlastne
Řešení č.1:
- pripajet konektor displaye z obou stran. Displaye mam stare, vyndane z ruznych pristroju a pri odpajeni "nekdo" vytahal i "propojky" z prokovenych otvoru. Cili nektere vyvody byli vzdy nezapojene.

Problem č.2:
- radic na I2C nenalezen. Prosel jsem na ebay i vsechny podobne radice a vyzkousel adresy z popisu, ale ani jedna se netrefila.
Řešení č.2:
- I2C Scanner z adresy (http://playground.arduino.cc/Main/I2cScanner) zafungoval a nasel radic LCD na adrese 0x3F
--------------------
poznamky:
- radic funguje korektne s display 1602 a 2004
- umi zapinat/vypinat podsviceni LCD
- funguje i s displayem 1604, ale posledni dva radky nepozicuje kurzor korektne - tzn. ze pozice nula neni levy kraj LCD ale nekde uprostred. Lze to "ochcat" pozicovanim do zapornych cisel :)
- knihovnu pouzivam "<LiquidCrystal_I2C.h>" z http://www.dfrobot.com/wiki/index.php?t ... 02_Module_(SKU:_DFR0063)

kod:
- pripsal jsem si funkce pro vypis ruzne zarovnaneho textu:

void LCDnastred(int Radek,String Text) {
float kurzor=(LCDcols/2)-(Text.length()/2);
if(Text.length() % 2 != 0)
kurzor=--kurzor;
lcd.setCursor(kurzor, Radek);
lcd.print(Text);
}
void LCDvlevo(int Radek,String Text) {
int kurzor=0;
lcd.setCursor(kurzor, Radek);
lcd.print(Text);
}
void LCDvpravo(int Radek,String Text) {
int kurzor=LCDcols-Text.length();
lcd.setCursor(kurzor, Radek);
lcd.print(Text);
}

- vyzaduje definici displaye
const int LCDcols=20;
const int LCDrows=4;
LiquidCrystal_I2C lcd(0x3F,LCDcols,LCDrows);

a pouziva se treba takhle:
Hodiny = DveCisla(hour()) + BlikString + DveCisla(minute()) + BlikString + DveCisla(second());
LCDnastred(1,Hodiny); //vypise na stred prvniho radku aktualni cas

LCDvlevo(0,CZdny[weekday()]); //vypise zleva na druhy radek cesky nazev dne v tydnu
Datum=DveCisla(day())+"/"+DveCisla(month())+"/"+year();
LCDvpravo(0,Datum); //vypise na druhy radek datum zarovnane vpravo

Komentáře

Vložit komentář
Vyplňte formulář níže a přidejte váš vlastní komentář.









Vložit:






Schvalování je na tomto blogu aktivní. Váš záznam potřebuje kontrolu administrátora předtím, než se zveřejní.