Lekce 5 - LCD displej

17.01.2013 18:05

    V dnešní lekci si k Arduinu připojíme LCD displej k zobrazení analogové hodnoty z minulého dílu. K tomu budeme potřebovat nějaký LCD displej s řadičem HD44780. Na trhu je jich spousta a pro naše pokusy jsem vybral typ WH2004A od firmy Winstar. Jedná se o displej se 20 znaky na 4 řádcích. Zapojení pinů těchto displejů se v celku moc neliší. Je však dobré se nejdříve podívat do datasheetu od výrobce. V mém případě je datasheet ke stažení zde

Zapojení displeje

1 Vss (GND)
2 Vdd (+5V)
3 Kontrast (0-5V)
4 RS
5 RW
6 E
7-14   DATA (v našem případě bude LCD pracovat v 4bit módu, takže zapojeny budou pouze D4-D7
15  Podsvícení (5V +) 
16 Podsvícení (GND)

Takže zapojíme displej podle následujícího obrázku:

K řízení LCD dipleje pomocí Arduina máme k dispozici knihovnu, která je již integrována v Editor programu Arduina. Stačí pouze napsat direktivu #include <LiquidCrystal.h>  a LCD v programu nastavit, aby vše fungovalo. Vše se potom ovládá jednoduše pomocí funkcí. K vysvětleníé nejpoužívanějších a nejzákladnějších:

  • LiquidCrystal objektLCD(RS, E, D4, D5, D6, D7); - vytvoří a inicializuje objekt displeje v tomto případě nazván "objektLCD" ( s tímto vytvořeným objektem se dále v programu pracuje) a nastaví kam jsou jednotlivé piny LCD připojeny k Arduinu. Tento objekt se deklaruje jako proměná, tedy na začátku programu, nikoliv do setup() a ani loop().
  • objektLCD.begin(počet znaků, počet řádků); - zapne displej a nastaví počet řádků. V případě displeje s 16 znaky a 2 řádky to bude objectLCD.begin(16,2);. Tato funkce se obyčejně napíše do loop()
  • objectLCD.setCursor(index řádku, index znaku); - posune kurzor na daný řádek a slouipec LCD dipleje. Pro první řádek a  3. znak to bude objectLCD.setCursor(0,2); 
  • objectLCD.print(text); - zobrazí na LCD v místě kurzoru daný text. Přiklad objectLCD.print("Ahoj svete");
  • další funkce a jejich popis, případně použití, k LCD naleznete na arduino.cc

 

A nyní k našemu programu:

 

#include  <LiquidCrystal.h>    //importuje knihovnu LiquidCrystal
 
// inicializuje lcd s definicí připojení na piny.
// MojeLCD1(RS,Enable, D4, D5, D6, D7)
 
LiquidCrystal MojeLCD1(2,3,4,5,6,7); 
 
 
const int analogPin = A0;  // Analogový vstup je nastaven na pi A0
int hodnota = 0;           // Proměná pro hodnotu přečtenou z A0
 
 
void setup() {
  // nastaví typ displeje na 20 znaků a 4 řádky (upravte dle sebe)
  MojeLCD1.begin(20, 4);
  
  MojeLCD1.print("arduino8.webnode.cz"); // napíše text "arduino8.we...
}
 
void loop() {
  
  hodnota = analogRead(analogPin);  // přečte hodnotu z A0
  MojeLCD1.setCursor(0,2);          // nastaví kurzor na první řádek a třetí znak
  MojeLCD1.print("A0 = ");          // napíše text A0 = 
  MojeLCD1.print(hodnota);          // napíše hodnotu z A0
  MojeLCD1.print(" ");              // napíše mezeru za text
  
  delay(100);                       // čekej 300ms                    
}
 
 
 
 
 
    Ještě k zapojení, v mém případě je, dle datasheetu výrobce, napájecí napětí podsvětlení dipleje 4,2V, proto jsem ho připojil přes odpor 100 Ohmu. Kontrast dipleje se řídí napětím přivedeným na LCD k pinu 3. Já jsem tento vývod připojil k zemi a kontrast je maximální. Někdy je kontrast maximální při připojení na 5V. Nutno vyzkoušet nebo napětí řídít pomocí trimru nebo potenciometru. Nutno se opravdu řídit výrobcem, aby Vám vše řádně fungovalo.
 

Samostatný úkol

     Zkuste se k Arduinu připojit ještě jeden diplej jak to můžete vidět ve videu na konci tohoto článku. 

 

Zpět

Diskusní téma: Lekce 5 - LCD displej

Datum
Vložil
Titulek

zapojeni

prosimvas nechcete mi sem hodit zapojeni?? nebo schema?? obrazek se mi zda nepřehledný, navic mam jiný display. Předem děkuji

Datum
Vložil
Titulek

Re: zapojeni

u jiného displaye budou piny osazeny jinak - ale obecně - připojíš napájení LCD na 5V/zem, připojíš RS, E a první 4 datové piny na nějaké piny Arduina a jejich čísla dáš do volání LiquidCrystal objektLCD(RS, E, D4, D5, D6, D7);

Datum
Vložil
Titulek

LCD

Ahoj, dá se sehnat LCD s řadičem i s "hřebínkem"? Koupil jsem Arduino start set a vypadá to že LCD odešlo do věčných lovišť. Kontrastně se zobrazí jen jeden řádek a pokusy o zobrazení textu jsou bez výsledné :o(

Datum
Vložil
Titulek

Re: LCD

Na aukru i jinde seženeš LCD modul bez hřebínku. Chvilka s pájkou a měl by fungovat.
TeĎ jsem si pořídíl Arduino UNO a hrátky s LCD mám v plánu.

Datum
Vložil
Titulek

Dotaz

Krása :-) přepojil jsem si to na UNO ale jedine co mi dela problem je že mám strašně přesvícene pixely že text a hodnotu vidim jen z boku :-) a žádnej trimr nadoladění nikde nemám.....na LCD

Datum
Vložil
Titulek

Re: Dotaz

Ahoj, mam ulpně stejnej problem, nenašel někdo řešení, jak udělat aby byl display normálně čitelnej?

Datum
Vložil
Titulek

Re: Re: Dotaz

Na displej lze připojit trimr na doladění kontrastu. Najdi si to v datasheetu nebo jinde, každej displej to má uplně stejně.

Datum
Vložil
Titulek

Re: Re: Re: Dotaz

Použil jsem potenciometr i trimr a stale mi to nejde doladit. muze byt chyba i nekde jinde..?

Datum
Vložil
Titulek

Re: Re: Re: Dotaz

Je potřeba změnit delay a odpojit druhý pin a nápis půjde vidět.

Datum
Vložil
Titulek

Re: Re: Dotaz

Mezi pin č.3 display a GND dej odpor 3,3k

1 | 2 >>

Vyhledávání

arduino8.cz © 2015 Všechna práva vyhrazena.