Arduino nano i2c lcd pripojenie. Pripojenie LCD obrazovky LCM1602 s I2C k Arduinu. Program na jednoduché vytváranie symbolov

Modul LCD I2C umožňuje pripojiť znakový displej k doske Arduino iba pomocou dvoch signálnych vodičov.

Použité komponenty (kúpiť z Číny):

. riadiace panel

. Spojovacie vodiče

Hlavné technické vlastnosti:

Displej: Znak 16x02 alebo 20x04
. Osvetlenie: Modré s bielymi znakmi
. Kontrast: nastaviteľný potenciometrom
. Napájacie napätie: 5V
. Rozhranie: I2C
. I2C adresa: 0x27
. Rozmery: 82 mm x 35 mm x 18 mm

Pripojenie k Arduinu

Modul je vybavený štvorpinovým 2,54 mm konektorom

SCL: sériová hodinová linka (Serial CLock)

SDA: sériová dátová linka (Serial DAta)

VCC: "+" výkon

GND: "-" moc

Piny zodpovedné za rozhranie I2C na doskách Arduino založených na rôznych ovládačoch sa líšia

Pre prácu s týmto modulom je potrebné nainštalovať knižnicu LiquidCrystal_I2C1602V1

Stiahnite si, rozbaľte a vložte do priečinka libraries v priečinku Arduino. Ak bolo v čase pridávania knižnice otvorené Arduino IDE, reštartujte prostredie.

Poďme rovno na skicu. AT tento príklad výstup štandardného "Ahoj, svet!" a na adresu našej obce.

príklad kódu:

#include #include LiquidCrystal_I2C lcd(0x27,16,2); /* Nastavte adresu a veľkosť displeja. Pri použití LCD I2C modulu s displejom 20x04 nie je potrebné nič meniť v kóde, stačí nastaviť správny rozmer */ neplatné nastaviť() (lcd.init(); // Inicializácia lcd lcd.backlight(); // zapnite podsvietenie // Kurzor je na začiatku riadku 1 lcd.print("Ahoj, svet!"); // Zobrazenie textu lcd. setCursor (0, 1); // Nastavte kurzor na začiatok riadku 2 lcd.print("stránka"); // Zobraziť text ) void slučka () { }

Vytváranie vlastných symbolov

Na textový výstup sme prišli, písmená anglickej abecedy sú všité do pamäte ovládača vo vnútri displeja a nie sú s nimi žiadne problémy. Čo však robiť, ak sa požadovaný znak nenachádza v pamäti ovládača?

Nevadí, požadovaný znak sa dá vyrobiť ručne. Táto metódačiastočne 7-znakový limit pomôže vyriešiť výstupný problém.

Bunka v displejoch, ktoré uvažujeme, má rozlíšenie 5x8 pixelov. Úlohou vytvorenia symbolu je napísať bitovú masku a umiestniť do nej jednotky na miesta, kde by bodky mali horieť a nuly tam, kde nie.

V nižšie uvedenom príklade nakreslíme smajlíka.

príklad kódu:

//Testované na Arduino IDE 1.0.5 // Pridajte potrebné knižnice#include #include // Bitová maska ​​symbolu úsmevu byte smile = ( B00010, B00001, B11001, B00001, B11001, B00001, B00010, ); LiquidCrystal_I2C lcd(0x27,20,4); // Nastavte adresu a veľkosť displeja. neplatné nastaviť() (lcd.init(); // Inicializácia lcd lcd.backlight(); // zapnite podsvietenie // Vytvorenie symbolu číslo 0 lcd.createChar(1, úsmev); lcd.setCursor(0, 0); // Nastavte kurzor na začiatok riadku 1 lcd.print("\1"); // Zobrazenie smajlíka (číslo znaku 1) - "\1") neplatný slučka () { }

Program na jednoduché vytváranie symbolov

V komentároch člen komunity vypustil odkaz na generátor znakov

  • Modul FC-113 je založený na čipe PCF8574T, čo je 8-bitový posuvný register - I/O expandér pre sériová zbernica I2C. Na obrázku je mikroobvod označený DD1.
  • R1 - trimmer na úpravu kontrastu LCD displeja.
  • Jumper J1 slúži na zapnutie podsvietenia displeja.
  • Piny 1…16 sa používajú na pripojenie modulu k pinom LCD displeja.
  • Kontaktné plôšky A1 ... A3 sú potrebné na zmenu I2C adresy zariadenia. Spájkovaním príslušných prepojok môžete zmeniť adresu zariadenia. Tabuľka ukazuje zhodu medzi adresami a prepojkami: "0" zodpovedá otvorenému okruhu, "1" - je nainštalovaná prepojka. Štandardne sú všetky 3 prepojky otvorené a adresa zariadenia 0x27.

2 Schéma zapojenia LCD displeja do Arduina cez I2C protokol

Modul je štandardne pripojený k Arduinu pre zbernicu I2C: výstup SDA modulu je pripojený k analógovému portu A4, výstup SCL je pripojený k analógovému portu A5 Arduina. Modul je napájaný +5 V z Arduina. Samotný modul je pripojený pomocou pinov 1…16 k príslušným pinom 1…16 na LCD displeji.


3 Knižnica pre prácu cez I2C protokol

Teraz potrebujeme knižnicu na prácu s LCD cez rozhranie I2C. Môžete použiť napríklad tento (odkaz v riadku „Stiahnuť vzorový kód a knižnicu“).

Stiahnutý archív LiquidCrystal_I2Cv1-1.rar rozbaliť do priečinka \knižnice\, ktorý sa nachádza v adresári Arduino IDE.

Knižnica podporuje súbor štandardných funkcií pre LCD obrazovky:

FunkciaÚčel
LiquidCrystal() vytvorí premennú typu LiquidCrystal a akceptuje parametre pripojenia displeja (čísla pinov);
začať() inicializácia LCD displeja, nastavenie parametrov (počet riadkov a symbolov);
jasný() vymazanie obrazovky a návrat kurzora do pôvodnej polohy;
Domov() návrat kurzora do pôvodnej polohy;
setCursor() nastavenie kurzora na danú pozíciu;
písať () zobrazí znak na LCD obrazovke;
tlačiť () zobrazuje text na LCD obrazovke;
kurzor() ukazuje kurzor, t.j. podčiarknutie pod nasledujúcim znakom;
noCursor() skryje kurzor;
blikať() kurzor bliká;
noBlink() zrušiť blikanie;
noDisplay() vypnutie displeja pri ukladaní všetkých zobrazených informácií;
zobraziť() zapnutie displeja pri ukladaní všetkých zobrazených informácií;
scrollDisplayLeft() posúvanie obsahu displeja o 1 pozíciu doľava;
scrollDisplayRight() posúvanie obsahu displeja o 1 pozíciu doprava;
automatické posúvanie() povoliť automatické posúvanie;
noAutoscroll() vypnite automatické posúvanie;
zľava doprava() nastavuje smer textu zľava doprava;
zprava doľava() smer textu sprava doľava;
createChar() vytvorí vlastný symbol pre obrazovku LCD.

4 Skica pre textový výstup na LCD obrazovku cez I2C zbernicu

Otvorme si ukážku: Súbor vzoriek LiquidCrystal_I2C CustomChars a poďme to trochu zmeniť. Zobrazme správu, na konci ktorej bude blikajúci znak. Všetky nuansy náčrtu sú komentované v komentároch ku kódu.

#include // zahrnie knižnicu Wire #include // pripojenie knižnice LCD #define printByte(args) write(args); // uint8_t srdce = (0x0,0xa,0x1f,0x1f,0xe,0x4,0x0); // bitová maska ​​symbolu "srdce" LiquidCrystal_I2C lcd(0x27, 16, 2); // Nastavte adresu 0x27 pre LCD displej 16x2 void setup()( lcd.init(); // Inicializácia LCD lcd.backlight(); // zapnutie podsvietenia displeja lcd.createChar(3, srdce); // vytvorenie symbolu srdca na pamäťovom mieste 3 lcd.home(); // umiestni kurzor do ľavého horného rohu na pozíciu (0,0) lcd.!"); // vytlačí riadok textu lcd.setCursor(0, 1); // presunie kurzor na riadok 2, znak 1 lcd.print( "i"); // vytlačí správu na riadok 2 lcd.printByte(3); // vytlačí znak srdca umiestnený v 3. bunke lcd.print("Arduino"); } void loop() (// bliknutie posledného znaku lcd.setCursor(13, 1); // presuňte kurzor na riadok 2, znak 1 lcd.print("\t"); oneskorenie(500); lcd.setCursor(13, 1); // presuňte kurzor na riadok 2, znak 1 lcd.print(" "); oneskorenie(500); }

Mimochodom, znaky napísané príkazom lcd.createChar(); zostávajú v pamäti displeja aj po vypnutí napájania. sú zapísané do pamäte ROM displeja 1602.

5 Vytváranie vlastných symbolov pre LCD displej

Poďme sa bližšie pozrieť na problematiku tvorby vlastných symbolov pre LCD obrazovky. Každý znak na obrazovke pozostáva z 35 bodov: 5 širokých a 7 vysokých (+1 náhradný riadok na podčiarknutie). V riadku 6 vyššie uvedeného náčrtu definujeme pole 7 čísel: (0x0, 0xa, 0x1f, 0x1f, 0xe, 0x4, 0x0). Prevedieme hexadecimálne čísla na binárne: {00000, 01010, 11111, 11111, 01110, 00100, 00000} . Tieto čísla nie sú nič iné ako bitové masky pre každý zo 7 riadkov znaku, kde "0" označuje svetlý bod a "1" tmavý bod. Na obrazovke sa napríklad zobrazí symbol srdca daný ako bitová maska, ako je znázornené na obrázku.

6 LCD ovládanie cez zbernicu I2C

Nahrajte skicu do Arduina. Nami zadaný nápis sa objaví na obrazovke s blikajúcim kurzorom na konci.


7 Čo je pozadu I2C zbernica

Ako bonus zvážte časový diagram výstupu latinských znakov "A", "B" a "C" na LCD displeji. Tieto znaky sú uložené v pamäti ROM displeja a zobrazia sa na obrazovke jednoduchým odovzdaním adresy displeju. Schéma je prevzatá z výstupov RS, RW, E, D4, D5, D6 a D7 displeja, t.j. už po prevodníku FC-113 "I2C paralelná zbernica". Dá sa povedať, že sa ponárame trochu „hlbšie“ do „železa“.


Časový diagram pre zobrazenie latinských znakov "A", "B" a "C" na LCD displeji 1602

Diagram ukazuje, že znaky, ktoré sú na displeji ROM (pozri stranu 11 údajového listu, odkaz nižšie) sa prenášajú v dvoch kúskoch, z ktorých prvý určuje číslo stĺpca tabuľky a druhý určuje číslo riadku. V tomto prípade sú dáta "zachytené" pozdĺž okraja signálu na linke E(Povoliť) a riadok RS(Výber registra, výber registra) je v stave logickej jednotky, čo znamená prenos dát. Nízky stav linky RS znamená prenos inštrukcií, ktoré vidíme pred prenosom každého znaku. V tomto prípade sa prenesie kód inštrukcie návratu vozíka na pozíciu (0, 0) LCD displeja, čo sa dá zistiť aj skúmaním technický popis displej.

A ešte jeden príklad. Tento časový diagram zobrazuje zobrazenie symbolu srdca na LCD.


Opäť prvé dva impulzy povoliť dodržiavať pokyny Domov()(0000 0010 2) - návrat vozíka do polohy (0; 0), a druhé dva - výstup na LCD displej uložený v pamäťovej bunke 3 10 (0000 0011 2) symbol "Srdce" (inštrukcia lcd.createChar(3, srdce); skica).

displej LCD- častý hosť v arduino projektoch. Ale v komplexné schémy môžeme mať problém s nedostatkom Arduino portov kvôli potrebe pripojiť štít, ktorý má veľa pinov. Cesta von v tejto situácii môže byť I2C/IIC adaptér, ktorý sa pripája takmer štandardne pre Arduino štít 1602 na dosky Uno, Nano alebo Mega len so 4 kolíkmi. V tomto článku uvidíme, ako pripojiť LCD obrazovku s rozhraním I2C, aké knižnice možno použiť, napíšeme krátky príklad náčrtu a analyzujeme typické chyby.

Displej z tekutých kryštálov LCD 1602 je dobrá voľba na výstup znakových reťazcov v rôznych projektoch. Je to lacné, existujú rôzne úpravy s rôznymi farbami podsvietenia, môžete si jednoducho stiahnuť hotové knižnice pre náčrty Arduino. Hlavnou nevýhodou tejto obrazovky je však skutočnosť, že displej má 16 digitálnych pinov, z ktorých minimálne 6 je povinných. LCD obrazovka bez i2c pridáva doskám Arduino Uno alebo Nano vážne obmedzenia. Ak nie je dostatok kontaktov, budete si musieť kúpiť dosku Arduino Mega alebo uložiť kontakty, a to aj pripojením displeja cez i2c.

Stručný popis LCD 1602 pinov

Pozrime sa bližšie na kolíky LCD1602:

Každý zo záverov má svoj účel:

  1. uzemnenie GND;
  2. Napájanie 5 V;
  3. nastavenie kontrastu monitora;
  4. Príkaz, dáta;
  5. Zápis a čítanie údajov;
  6. povoliť;

7-14. Dátové linky;

  1. Plus podsvietenie;
  2. Mínusové podsvietenie.

Špecifikácie displeja:

  • Typ symbolického zobrazenia, je možné načítať symboly;
  • LED svetlá;
  • Ovládač HD44780;
  • Napájacie napätie 5V;
  • Formát 16x2 znakov;
  • Rozsah prevádzkových teplôt od -20C do +70C, rozsah skladovacích teplôt od -30C do +80C;
  • Pozorovací uhol 180 stupňov.

Schéma zapojenia pre LCD do Arduino dosky bez i2C

Štandardná schéma pripojenia monitora priamo k mikrokontroléru Arduino bez I2C je nasledovná.

Kvôli veľkému počtu kontaktov, ktoré sa majú pripojiť, nemusí byť dostatok miesta na pripojenie potrebných prvkov. Použitie I2C znižuje počet vodičov na 4 a rušné kolíky na 2.

Kde kúpiť LCD obrazovky a štíty pre arduino

LCD obrazovka 1602 (a verzia 2004) je pomerne populárna, takže ju ľahko nájdete v domácich internetových obchodoch aj na zahraničných stránkach. Tu je niekoľko odkazov na najdostupnejšie možnosti:

Modul modrej obrazovky LCD1602+I2C kompatibilný s Arduino Jednoduchý displej LCD1602 (zelené podsvietenie) lacnejšie ako 80 rubľov Veľká obrazovka LCD2004 s I2C HD44780 pre arduino (modré a zelené podsvietenie)
Displej 1602 s adaptérom IIC a modrým podsvietením Ďalšia verzia LCD1602 so spájkovaným I2C modulom Port IIC/I2C/TWI/SPI modul adaptéra pre 1602 Shield kompatibilný s Arduino
RGB podsvietený displej! LCD 16×2 + klávesnica +Buzzer Shield pre Arduino Štít pre Arduino s tlačidlami a obrazovkou LCD1602 LCD 1602 LCD displej pre 3D tlačiareň (Smart Controller pre RAMPS 1.4, Text LCD 20×4), modul čítačky kariet SD a MicroSD

Popis protokolu I2C

Pred diskusiou o pripojení displeja k arduinu cez adaptér i2c si stručne povedzme o samotnom protokole i2C.

I2C / IIC(Inter-Integrated Circuit) je protokol pôvodne vytvorený na komunikáciu integrované obvody vnútri elektronického zariadenia. Vývoj patrí spoločnosti Philips. Protokol i2c je založený na použití 8-bitovej zbernice, ktorá je potrebná na prepojenie blokov v riadiacej elektronike, a adresného systému, vďaka ktorému môžete po rovnakých vodičoch komunikovať s viacerými zariadeniami. Jednoducho prenášame dáta do jedného alebo druhého zariadenia, pričom k dátovým paketom pridávame identifikátor požadovaného prvku.

Najviac jednoduchý obvod I2C môže obsahovať jeden master (najčastejšie mikrokontrolér Arduino) a niekoľko slave (napríklad LCD displej). Každé zariadenie má adresu v rozsahu od 7 do 127. V rovnakej schéme by nemali byť dve zariadenia s rovnakou adresou.

Doska Arduino podporuje hardvér i2c. Na pripojenie zariadení pomocou tohto protokolu môžete použiť kolíky A4 a A5.

Práca s I2C má niekoľko výhod:

  • Na prevádzku sú potrebné len 2 linky - SDA (dátová linka) a SCL (hodinová linka).
  • Pripojenie veľkého počtu popredných zariadení.
  • Skrátenie času vývoja.
  • Na ovládanie celej sady zariadení je potrebný iba jeden mikrokontrolér.
  • Možný počet mikroobvodov pripojených na jednu zbernicu je obmedzený len maximálnou kapacitou.
  • Vysoký stupeň bezpečnosti dát vďaka špeciálnemu filtru na potlačenie prepätia zabudovanému v obvodoch.
  • Jednoduchý postup diagnostiky vznikajúcich porúch, rýchle riešenie problémov.
  • Zbernica je už integrovaná do samotného Arduina, takže nie je potrebné vyvíjať ďalšie rozhranie zbernice.

nedostatky:

  • Na linke je kapacitný limit - 400 pF.
  • Ťažkosti s programovaním ovládača I2C, ak je na zbernici niekoľko rôznych zariadení.
  • Pri veľkom počte zariadení je ťažké lokalizovať poruchu, ak jedno z nich nesprávne nastaví stav nízkej úrovne.

i2c modul pre LCD 1602 Arduino

Najrýchlejšie a pohodlný spôsob používanie i2c displeja v arduine je kúpa hotovej obrazovky so vstavanou podporou protokolu. Ale tieto obrazovky nie sú veľa a nie sú lacné. Ale už bolo vydaných veľké množstvo rôznych štandardných obrazoviek. Preto je dnes najdostupnejšou a najobľúbenejšou možnosťou kúpiť a použiť samostatný modul I2C - adaptér, ktorý vyzerá takto:

Na jednej strane modulu vidíme piny i2c – zem, napájanie a 2 pre prenos dát. Na druhom adaptéri vidíme konektory externého napájania. A samozrejme, na doske je veľa pinov, pomocou ktorých sa modul pripája na štandardné piny obrazovky.


I2c výstupy slúžia na pripojenie k Arduino doske. V prípade potreby pripojte externý zdroj napájania osvetlenia. So vstavaným trimrom môžeme nastaviť nastaviteľné hodnoty kontrastu J

Na trhu nájdete moduly LCD 1602 s už prispájkovanými adaptérmi, ich použitie je maximálne zjednodušené. Ak ste si kúpili samostatný adaptér, budete ho musieť predspájkovať k modulu.

Pripojenie LCD obrazovky k Arduinu cez I2C

Na pripojenie potrebujete samotnú Arduino dosku, displej, breadboard, prepojovacie vodiče a potenciometer.

Ak používate špeciálny samostatný adaptér i2c, musíte ho najskôr prispájkovať k modulu obrazovky. Je ťažké urobiť chybu, môžete sa riadiť takouto schémou.


LCD monitor s podporou i2c je pripojený k doske pomocou štyroch vodičov - dva vodiče pre dáta, dva vodiče pre napájanie.

  • Pin GND je spojený s GND na doske.
  • Pin VCC je 5V.
  • SCL je pripojený na kolík A5.
  • SDA je pripojený na pin A.

A to je všetko! Žiadne pavučiny drôtov, v ktorých sa dá veľmi ľahko zmiasť. Celú komplexnosť implementácie i2C protokolu zároveň môžeme jednoducho zveriť knižniciam.

Knižnice pre prácu s i2c LCD displejom

Na prepojenie Arduina s LCD 1602 cez zbernicu I2C budete potrebovať aspoň dve knižnice:

  • Knižnica Wire.h pre prácu s I2C je už dostupná v štandardný program Arduino IDE.
  • Knižnica LiquidCrystal_I2C.h, ktorá obsahuje širokú škálu príkazov na ovládanie monitora cez I2C zbernicu a umožňuje zjednodušiť a skrátiť skicu. Je potrebné dodatočne nainštalovať knižnicu Po pripojení displeja je potrebné dodatočne nainštalovať knižnicu LiquidCrystal_I2C.h

Po pripojení všetkých potrebných knižníc do skice vytvoríme objekt a môžeme využívať všetky jeho funkcie. Pre testovanie si načítajme nasledujúci štandardný náčrt z príkladu.

#include #include // Pripojenie knižnice //#include // Pripojenie alternatívnej knižnice LiquidCrystal_I2C lcd(0x27,16,2); // Zadajte adresu I2C (najbežnejšiu hodnotu), ako aj parametre obrazovky (v prípade LCD 1602 - 2 riadky po 16 znakov //LiquidCrystal_PCF8574 lcd(0x27); // Variant pre nastavenie knižnice PCF8574 void () ( lcd.init (); // Inicializácia displeja lcd.backlight(); // Pripojenie podsvietenia lcd.setCursor(0,0); // Nastavte kurzor na začiatok prvého riadku lcd.print( "Ahoj"); // Napíšte text na prvý riadok lcd.setCursor(0,1); // Nastavte kurzor na začiatok druhého riadku lcd.print("ArduinoMaster"); // Napíšte text do druhého riadok ) void loop() ( )

Popis funkcií a metód knižnice LiquidCrystal_I2C:

  • home() a clear() - prvá funkcia umožňuje vrátiť kurzor na začiatok obrazovky, druhá tiež, no zároveň vymaže všetko, čo bolo predtým na monitore.
  • write(ch) - umožňuje vytlačiť na obrazovku jeden znak ch.
  • kurzor() a noCursor() - zobrazenie/skrytie kurzora na obrazovke.
  • blink() a noBlink() - kurzor bliká/nebliká (ak bolo jeho zobrazenie predtým povolené).
  • display() a noDisplay() - umožňuje zapnúť/vypnúť zobrazenie.
  • scrollDisplayLeft() a scrollDisplayRight() – posúva obrazovku o jeden znak doľava/doprava.
  • autoscroll() a noAutoscroll() - umožňuje zapnúť/vypnúť režim automatického rolovania. V tomto režime každý nový symbol sa zaznamená na rovnakom mieste a nahradí to, čo bolo predtým napísané na obrazovke.
  • leftToRight() a rightToLeft() – Nastavuje smer zobrazeného textu – zľava doprava alebo sprava doľava.
  • createChar(ch, bitmap) - Vytvorí znak s kódom ch (0 - 7) pomocou poľa bitmapových bitových máp na vytvorenie čiernych a bielych bodov.

Alternatívna knižnica pre prácu s i2c displejom

V niektorých prípadoch sa pri použití špecifikovanej knižnice so zariadeniami vybavenými radičmi PCF8574 môžu vyskytnúť chyby. V tomto prípade môže byť ako alternatíva ponúknutá knižnica LiquidCrystal_PCF8574.h. Rozširuje LiquidCrystal_I2C, takže by s jeho používaním nemali byť žiadne problémy.

Problémy s pripojením LCD displeja i2c

Ak po nahraní náčrtu na displeji nič nevidíte, skúste nasledujúce kroky.

Najprv môžete zvýšiť alebo znížiť kontrast monitora. Často postavy jednoducho nie sú viditeľné kvôli kontrastu a režimu podsvietenia.

Ak to nepomôže, skontrolujte správne pripojenie kontaktov, či je podsvietenie napájané. Ak ste použili samostatný adaptér i2c, znova skontrolujte kvalitu spájkovania kontaktov.

Ďalším častým dôvodom nedostatku textu na obrazovke môže byť nesprávna adresa i2c. Skúste najprv zmeniť adresu zariadenia v náčrte z 0x27 0x20 alebo na 0x3F. Rôzni výrobcovia môžu mať rôzne predvolené adresy. Ak to nepomôže, môžete spustiť náčrt skenera i2c, ktorý naskenuje všetky pripojené zariadenia a hrubou silou určí ich adresu. Príklad náčrtu i2c skenera.

Ak obrazovka stále nefunguje, skúste odspájkovať adaptér a pripojiť LCD zvyčajným spôsobom.

Záver

V tomto článku sme sa zaoberali hlavnými problémami používania LCD obrazovky v zložitých projektoch Arduino, keď potrebujeme uložiť voľné kolíky na doske. Jednoduchý a lacný adaptér i2c vám umožní pripojiť 1602 LCD obrazovku, ktorá zaberá iba 2 analógové kolíky. V mnohých situáciách to môže byť veľmi dôležité. Cenou za pohodlie je nutnosť použitia prídavného modulu – prevodníka a knižnice. Podľa nášho názoru to nie je vysoká cena za pohodlie a vrelo odporúčame túto funkciu v projektoch využívať.

Každý rádioamatér po určitom množstve jednoduché domáce prichádza k cieľu postaviť niečo veľkolepé pomocou senzorov a tlačidiel. Oveľa zaujímavejšie je totiž zobrazenie údajov na displeji ako na monitore portu. Potom však vyvstáva otázka: aký displej si vybrať? A vo všeobecnosti, ako ho pripojiť, čo je potrebné na pripojenie? Odpovede na tieto otázky budú diskutované v tomto článku.

LCD 1602

Medzi mnohými možnosťami medzi displejmi by som chcel osobitne poznamenať displej LCD1602 založený na radiči HD4478. Tento displej je v dvoch farbách: biele písmená na modrom pozadí, čierne písmená na žltom pozadí. Pripojenie LCD 1602 k Arduinu tiež nespôsobí žiadne problémy, pretože je tu vstavaná knižnica a nemusíte sťahovať nič navyše. Displeje sa líšia nielen cenou, ale aj veľkosťou. Rádioamatéri často používajú 16 x 2, to znamená 2 riadky po 16 znakoch. Ale existuje aj 20 x 4, kde sú 4 riadky po 20 znakov. Rozmery a farba nehrajú žiadnu rolu pri pripájaní lcd 1602 displeja k Arduno, zapájajú sa rovnakým spôsobom. Pozorovací uhol je 35 stupňov, doba odozvy displeja je 250 ms. Môže pracovať pri teplotách od -20 do 70 stupňov Celzia. Počas prevádzky spotrebuje 4 mA pre obrazovku a 120 mA pre podsvietenie.

Kde sa používa?

Tento displej má svoju obľubu nielen medzi rádioamatérmi, ale aj medzi veľkými výrobcami. Napríklad tlačiarne, kávovary používajú aj LCD1602. Je to kvôli nízkej cene, tento displej stojí na čínskych stránkach 200-300 rubľov. Oplatí sa tam kúpiť, keďže v našich predajniach sú marže na tento displej veľmi vysoké.

Pripojenie k Arduinu

Pripojenie LCD 1602 k Arduino Nano a Uno nie je iné. S displejom môžete pracovať v dvoch režimoch: 4 bitový a 8-bitový. Pri práci s 8-bitovým displejom sa využívajú spodné aj vyššie bity a pri 4-bitovom len nižšie. Nemá zmysel pracovať s 8-bitmi, pretože na pripojenie sa pridajú ďalšie 4 kontakty, čo sa neodporúča, pretože rýchlosť nebude vyššia, limit aktualizácie displeja je 10-krát za sekundu. Vo všeobecnosti sa na pripojenie lcd 1602 k Arduinu používa veľa drôtov, čo spôsobuje určité nepríjemnosti, ale existujú špeciálne štíty, ale o tom neskôr. Na obrázku je pripojenie displeja k Arduino Uno:

Príklad kódu programu:

#include // Pridajte požadovanú knižnicu LiquidCrystal lcd(7, 6, 5, 4, 3, 2); // (RS, E, DB4, DB5, DB6, DB7) void setup()( lcd.begin(16, 2); // Nastaviť rozmer obrazovky lcd.setCursor(0, 0); // Nastaviť kurzor na začiatok 1 riadky lcd.print("Ahoj, svet!"); // Zobraziť text lcd.setCursor(0, 1); // Nastaviť kurzor na začiatok riadku 2 lcd.print("site"); // Zobraziť text ) prázdna slučka ()( )

Čo robí kód? V prvom rade je pripojená knižnica pre prácu s displejom. Ako je uvedené vyššie, táto knižnica je už súčasťou Arduino IDE a nemusíte ju dodatočne sťahovať a inštalovať. Ďalej sú definované kontakty, ktoré sú pripojené na kolíky: RS, E, DB4, DB5, DB6, DB7, resp. Potom sa nastaví veľkosť obrazovky. Keďže pracujeme s verziou so 16 znakmi a 2 riadkami, zapisujeme takéto hodnoty. Kurzor nastavíme na začiatok prvého riadku a zobrazíme náš prvý text Hello World. Potom umiestnite kurzor na druhý riadok a zobrazte názov stránky. To je všetko! Zvažovalo sa pripojenie lcd 1602 k Arduino Uno.

Čo je to I2C a prečo je to potrebné?

Ako už bolo spomenuté vyššie, pripojenie displeja vyžaduje veľa pinov. Napríklad pri práci s viacerými snímačmi a LCD displejom 1602 kontaktov jednoducho nemusí stačiť. Často rádioamatéri používajú verzie Uno alebo Nano, kde nie je veľa kontaktov. Potom ľudia prišli so špeciálnymi štítmi. Napríklad I2C. Umožňuje vám pripojiť displej iba pomocou 4 pinov. To je dvakrát menej. I2C modul sa predáva ako samostatne, kde si ho musíte sami prispájkovať, tak aj prispájkovaný na LCD 1602 displej.

Pripojenie pomocou I2C modulu

Pripojenie LCD 1602 k Arduino Nano s I2C zaberá málo miesta, iba 4 piny: zem, napájanie a 2 dátové výstupy. Napájanie a zem pripojíme na 5V a GND na Arduino, resp. Zvyšné dva kontakty: SCL a SDA sú pripojené k ľubovoľným analógovým kolíkom. Na fotografii môžete vidieť príklad pripojenia lcd 1602 k arduinu s modulom I2C:

Programový kód

Ak na prácu s displejom bez modulu bolo potrebné použiť iba jednu knižnicu, potom na prácu s modulom sú potrebné knižnice dve. Jeden z nich je už v Arduino IDE - Wire. Ďalšiu knižnicu, LiquidCrystal I2C, je potrebné stiahnuť samostatne a nainštalovať. Ak chcete nainštalovať knižnicu v Arduine, obsah stiahnutého archívu sa musí nahrať do koreňového priečinka Libraries. Príklad kódu pomocou I2C:

#include #include LiquidCrystal_I2C lcd(0x27,16,2); // Nastavenie zobrazenia void setup() ( lcd.init(); lcd.backlight();// Zapnutie podsvietenia displeja lcd..setCursor(8, 1); lcd.print("LCD 1602"); ) void loop ( ) ( // Nastavte kurzor na druhý riadok a nulový znak. lcd. setCursor(0, 1); // Zobrazenie počtu sekúnd od spustenia arduina lcd. print(millis()/1000); )

Ako vidíte, kód je takmer rovnaký.

Ako pridať svoj symbol?

Problémom týchto displejov je, že neexistuje podpora pre azbuku a symboly. Napríklad je potrebné načítať nejaký znak do displeja, aby ho mohol odrážať. K tomu vám displej umožňuje vytvoriť až 7 vašich postáv. Predstavte si stôl:

0 0 0 1 0
0 0 0 0 1
1 1 0 0 1
0 0 0 0 1
1 1 0 0 1
0 0 0 0 1
0 0 0 1 0
0 0 0 0 0

Ak 0 - nič tam nie je, ak 1 - toto je zatienená oblasť. Vo vyššie uvedenom príklade môžete vidieť vytvorenie symbolu „usmievajúceho sa smajlíka“. Pomocou vzorového programu v Arduine by to vyzeralo takto:

#include #include // Pridajte požadovanú knižnicu // Smile symbol bitmask byte smile = ( B00010, B00001, B11001, B00001, B11001, B00001, B00010, ); LiquidCrystal lcd(7, 6, 5, 4, 3, 2); // (RS, E, DB4, DB5, DB6, DB7) void setup()( lcd.begin(16, 2); // Nastavenie veľkosti obrazovky lcd.createChar(1, úsmev); // Vytvorenie znaku 1 lcd. setCursor(0, 0); // Nastavte kurzor na začiatok riadku 1 lcd.print("\1"); // Zobrazenie smajlíka (číslo znaku 1) - "\1" ) void loop()( )

Ako vidíte, bitová maska ​​bola vytvorená rovnako ako tabuľka. Po vytvorení sa môže zobraziť ako premenná na displeji. Pamätajte, že do pamäte je možné uložiť iba 7 znakov. V zásade to stačí. Napríklad, ak chcete zobraziť symbol stupňa.

Problémy, pri ktorých nemusí fungovať displej

Sú chvíle, keď displej nefunguje. Napríklad sa zapne, ale nezobrazuje znaky. Alebo sa nezapne vôbec. Najprv skontrolujte, či ste kontakty pripojili správne. Ak ste zvykli pripájať lcd 1202 k Arduinu bez I2C, potom je veľmi ľahké sa zamotať do drôtov, čo môže spôsobiť nesprávna práca displej. Mali by ste sa tiež uistiť, že je zvýšený kontrast displeja, pretože pri minimálnom kontraste ani nie je vidieť, či je LCD 1602 zapnutý alebo nie. Ak to nepomôže, problém môže spočívať v spájkovaní kontaktov, je to pri použití modulu I2C. Tiež spoločná príčina ktoré nemusí fungovať displej je nesprávne nastavenie I2C adresy. Faktom je, že existuje veľa výrobcov a môžu nastaviť inú adresu, musíte to opraviť tu:

LiquidCrystal_I2C lcd(0x27,16,2);

V zátvorkách môžete vidieť dve hodnoty, 0x27 a 16.2 (16, 2 je veľkosť displeja a 0x27 je len I2C adresa). Namiesto týchto hodnôt môžete skúsiť zadať 0x37 alebo 0x3F. Ďalším dôvodom je jednoducho chybný LCD 1602. Vzhľadom na to, že takmer všetko pre Arduino je vyrobené v Číne, nemôžete si byť 100% istý, že zakúpený produkt nie je manželstvom.

Výhody a nevýhody LCD 1602

Zvážte výhody a nevýhody displeja LCD 1602.

  • Cena. Tento modul je možné zakúpiť za veľmi prijateľnú cenu v čínskych obchodoch. Cena je 200-300 rubľov. Niekedy sa dokonca predáva spolu s I2C modulom.
  • Jednoduché pripojenie. V dnešnej dobe asi nikto nepripojí LCD 1602 bez I2C. A s týmto modulom spojenie trvá iba 4 kolíky, nebudú žiadne "pavučiny" drôtov.
  • Programovanie. Vďaka hotovým knižniciam je práca s týmto modulom jednoduchá, všetky funkcie sú už zaregistrované. A ak je to potrebné, pridanie vašej postavy trvá len pár minút.
  • Počas používania tisíckami rádioamatérov neboli identifikované žiadne veľké mínusy, existujú iba prípady nákupu manželstva, pretože sa používajú hlavne čínske možnosti zobrazenia.

Tento článok sa zaoberal tým, ako pripojiť 1602 k Arduinu, a tiež poskytol vzorové programy pre prácu s týmto displejom. Vo svojej kategórii skutočne patrí k tomu najlepšiemu, nie nadarmo si ho pre svoje projekty vyberajú tisíce rádioamatérov!

V tomto článku vám ukážem, ako používať modul rozhrania I2C na ovládanie LCD displeja (2x16 / 20x4) pomocou Arduino. Tento modul umožňuje znížiť počet použitých pinov ovládača, namiesto 8 alebo 4-bitového pripojenia sú potrebné len 2 piny (SDA a SCL).

Technické špecifikácie

Podpora displeja: LCD 16×02 / 20×04
Voliteľné: nastavenie kontrastu
Napájacie napätie. 5V
Rozhranie: I2C
Rozmery: 54 mm x 19 mm x 15 mm

Všeobecné informácie o module rozhrania I2C

Keďže počet pinov na ovládačoch Arduino je obmedzený a často sa používa rôzne senzory a dochádzajú im moduly, je potrebné ich uložiť, pre tieto prípady bol vyvinutý tento modul, s jeho pomocou je možné realizovať prenos cez dva kontakty (SDA a SCL).

Teraz trochu o samotnom module, je postavený na čipe PCF8574T. Rezistory R8 (4,7 kOhm) a R9 (4,7 kOhm) sú potrebné na vytiahnutie liniek SDA a SCL, v ideálnom prípade pri pripojení dvoch alebo viacerých zariadení cez zbernicu I2C je potrebné použiť pull-up iba na jednom zariadení, I neskôr napíšem prečo. Na doske sú tri prepojky (schéma ukazuje, že vedenia A0, A1, A2 sú napájané cez odpory R4, R5, R6), sú potrebné na zmenu adresovania zariadenia, celkovo je 8 možností. Zmena adresovania nám dáva možnosť pripojiť až osem zariadení cez zbernicu IC2 s čipom PCF8574T, možnosti adresy sú znázornené na obrázku (predvolená adresa zariadenia je 0x27). Modul je tiež vybavený potenciometrom R11, pomocou ktorého môžete meniť kontrast LCD displeja.

Na pripojenie sú na module tri skupiny kontaktov:

Prvá skupina:
SCL: hodinová linka (Serial Clock)
SDA: dátová linka (Serial Dfta)
VCC: napájanie "+".
GND: "-" výkon

Druhá skupina:
VSS: "-" výkon
VDD: "+" výkon
VO: Výstup kontroly kontrastu
RS: Výber registra
RW: Čítanie/Zápis (režim zápisu pri pripojení k zemi)
E: Povoliť (klesajúci blesk)
DB0-DB3: LSB rozhrania
DB4-DB7: Vysoké bity rozhrania
A: "+" výkon podsvietenia
K: "-" výkon podsvietenia

Tretia skupina: (prepojka je predvolene nastavená)
VCC:
A z LCD:

Pripojenie k Arduinu

Požadované podrobnosti:
Arduino UNO R3 x 1ks
LCD displej 1602A (2×16, 5V, Modrý) x 1 ks.
Modul rozhrania I2C, IIC, TWI pre LCD x 1 ks.
Drôt DuPont, 2,54 mm, 20 cm, F-M (samica - samec) x 1 ks.
USB kábel 2,0A-B x 1ks

Pripojenie:
V prvom rade prispájkujte I2C modul na LCD displej, následne je potrebné pripojiť displej k Arduino UNO. K tomu používame elektroinštaláciu DuPont, zapájame podľa tabuľky nižšie.

Pre prehľadnosť uvediem ďalší diagram.

Pre tento experiment si musíte stiahnuť a nainštalovať knižnicu „LiquidCrystal_I2C“. Potom skopírujte a prilepte tento vzorový kód do okna programu Arduino IDE a nahrajte ho do ovládača.

/* Testované na Arduino IDE 1.6.11 Dátum testu 15.09.2016. */ #include #include LiquidCrystal_I2C lcd(0x27,16,2); // Nastavenie adresy a veľkosti displeja void setup() ( lcd.init(); // Inicializácia lcd lcd.backlight(); // Zapnutie podsvietenia lcd.setCursor(0,0); // Nastavenie kurzor na začiatok riadku 1 lcd .print("Ahoj svet"); // Vytlačí text lcd.setCursor(0,1); // Nastaví kurzor na začiatok riadku 2 lcd.print("www .site"); // Vytlačte text ) void loop( ) ( )

Ak ste urobili všetko správne, ale na displeji nie sú žiadne symboly, skúste zvýšiť kontrast pomocou potenciometra.


Odkazy
Stiahnite si knižnicu
Dokumentácia k mikročipu
Dokumentácia pre

Kúpiť na Aliexpress