Tento článek je založen na tom, jak používat modul rozhraní I2C pro připojení LCD displeje (2x16/20x4) pomocí Arduina. Tento modul umožňuje změnit počet řídicích obvodů a nahradit tak 8 nebo 4bitové připojení, vyžadující pouze 2 vstupy (SDA a SCL).

Technická charakteristika

Podpora displeje: LCD 16×02/20×04
Dodatkovo: úprava kontrastu
Napětí je živé. 5V
Rozhraní: I2C
Rozměry: 54 mm x 19 mm x 15 mm

Podrobnosti o modulu rozhraní I2C

Velké množství kontaktů na ovladačích Arduino je propojeno a často, když dojdou různé senzory a moduly, je potřeba je šetřit, pro tyto typy případů je modul rozbitý, k čemuž je možná další pomoc Studie přenosu přes dva kontakty (SDA a SCL).

Nyní trochu o samotném modulu, o mikroobvodu PCF8574T. Rezistory R8 (4,7k) a R9 (4,7k) jsou nutné pro natažení linek SDA a SCL v ideálním případě, když jsou přes I2C sběrnici připojena dvě nebo více zařízení, je nutné vytáhnout pouze na jednom zařízení Ano, já; Později napíšu proč. Na přenosové desce jsou tři propojky (za schématem je vidět, že linky A0, A1, A2 jsou vytaženy přes odpory R4, R5, R6), nutné pro změnu adresování zařízení, celkem je 8 možností. Změna adresování umožňuje připojit až osm zařízení přes sběrnici IC2 s mikroobvodem PCF8574T možnost zobrazení adresy zařízení (po změně adresy zařízení 0x27). Modul je dále vybaven potenciometrem R11, kterým můžete měnit i kontrast LCD displeje.

Na modulu jsou tři skupiny kontaktů pro připojení:

Persha skupina:
SCL: hodinová linka (Serial Clock)
SDA: datová linka (sériová data)
VCC: "+" jídlo
GND: "-" jídlo

Další skupina:
VSS: "-" jídlo
VDD: "+" jídlo
VO: Vividednya keruvannya naopak
RS: Vyberte registr
RW: čtení/zápis (režim zápisu při připojení k zemi)
E: Povolit (stroboskop při poklesu)
DB0-DB3: Mladší bity rozhraní
DB4-DB7: Vysoké bity rozhraní
A: „+“ podpora života
K: „-“ podpora života

Třetí skupina: (za bitvami byl instalován jumper)
VCC:
LCD pohled:

Připojení k Arduinu

Požadované podrobnosti:
Arduino UNO R3 x 1 ks.
LCD displej 1602A (2×16, 5V, Modrý) x 1 ks.
Modul rozhraní I2C, IIC, TWI pro LCD x 1 ks.
DuPont drát, 2,54 mm, 20 cm, F-M (samice - samec) x 1 ks.
USB 2.0 A-B kabel x 1 ks.

Spojení:
Nejprve připájíme I2C modul k LCD displeji, poté potřebujeme připojit displej k Arduino UNO. Pro ty, kteří používají kabeláž DuPont, jsou zapojení uvedena v tabulce níže.

Abych byl přesnější, dám vám ještě jeden diagram.

Pro tento experiment si musíte stáhnout a nainstalovat knihovnu „LiquidCrystal_I2C“. Poté zkopírujte a vložte tento kód do programu Arduino IDE a připojte jej k ovladači.

/* Testováno na Arduino IDE 1.6.11 Datum testu 15.09.2016. */ #zahrnout #zahrnout LiquidCrystal_I2C lcd(0x27,16,2); // Nastavení adresy a velikosti zobrazení void setup() ( lcd.init(); // Inicializace lcd lcd.backlight(); // Povolení podsvícení lcd.setCursor(0,0); // Instalace kurzoru na hlavu 1. řádku lcd .print("Ahoj světe" // Zobrazený text lcd.setCursor(0,1 // Umístění kurzoru na 2. řádek lcd.print("www.site"); Zobrazený text) void loop( ) ( )

Pokud jste vše provedli správně, ale na displeji nejsou požadované symboly, zkuste zvýšit kontrast potenciometrem.


Posilannya
Okouzlete svou knihovnu
Dokumentace k mikroobvodu
Dokumentace až

Koupit na Aliexpress

Pravděpodobně jedna z nejoblíbenějších obrazovek na trhu. Výběr populárního ovladače HD44780U. Název modelu naznačuje, že obrazovka se skládá ze dvou řádků po 16 znacích. Tento konkrétní model nemá žádné vlivy z ruského jazyka.

Datová sběrnice sh2s umožňuje připojit až 127 zařízení dvěma způsoby a současně. Tyto implementace I2C jsou založeny na čipech PCF8574T.

Schéma zapojení:

Modrá věc je vyměnitelná podpora, která umožňuje upravit kontrast obrazovky.

Evil jumper – označuje podsvícení obrazovky.

Blok se 4 kontakty je připojen k arduinu takto:

GND - GND
VCC - 5V
SDA - A4 (jako Arduino MEGA, pak až D20)
SCL - A5 (Arduino MEGA, poté až D21)

Knihovna

Skica

Displej může mít jinou IIC adresu, místo 0x27 se může objevit 0x3F. Chcete-li přesně určit adresu, můžete rychle skenovat zařízení i2c pomocí skeneru.

#zahrnout #zahrnout // nastavte adresu LCD obrazovky na 0x27, 16 znaků, 2 řádky LiquidCrystal_I2C lcd(0x27, 16, 2); void setup()(lcd.init(); //Inicializuje obrazovku //zapne podsvícení lcd.backlight(); //Nastaví pozici, kde se bude text zobrazovat. lcd.setCursor(2, 0); //zobrazení řádku 1 lcd.print("Ahoj, světe!"); //stejným způsobem se zobrazí další řádek lcd.setCursor(1, 1); lcd.print("www.site"); ) prázdná smyčka () ( )

Po přidání sem do obchodu s potravinami je Chip Resistor červí zařízení pro instalaci a stagnaci v hnědých zařízeních. Toto zařízení bylo navrženo pro použití s ​​LCD displejem pod řadičem HD44780 ve 4bitovém režimu. Za tímto účelem je na desce instalován mikroobvod, který převádí sběrnici I2C na paralelní 8bitový port.

Deska je zapojena tak, že ji lze okamžitě kombinovat s displejem PK. Živá linka I2C je přivedena na vstup. Deska je vybavena pull-up odpory na linkách SCL a SDA, potenciometrem pro nastavení kontrastu a životnosti samotného displeje.

Propojka vpravo bliká/bliká. Poté, po použití testeru, byla cedulka složena. Po instalaci modulu se ukázalo, že P3 se stará o svíčky. Jako propojka 1 zapne podsvícení a 0 zhasne. Po odstranění propojky se spínač vždy vypne. Dále padlo rozhodnutí doplnit knihovnu axlib o funkce pro provoz se sběrnicí I2C (softwarová implementace) a funkce pro napájení s mikroobvodem PCF8574. Dvěma slovy, jak modul funguje. Pro paralelní výstup bajtu, pro který je třeba odeslat adresu mikroobvodu na sběrnici I2C (ve výchozím nastavení je to 0x4E. Adresu můžete také změnit připájením propojky na desce a změnou hodnot ze tří bitových adres nižšího řádu), poté se po odmítnutí ACK odešle datový bajt. Poté, co mikroobvod odpoví ACK, bajt se objeví na paralelním portu mikroobvodu. Pro ovládání displeje PK jsem převzal funkce z knihovny axlib a mírně je upravil pro práci se sběrnicí I2C. #zahrnout #zahrnout #zahrnout #zahrnout #define ADD 0x4E // Adresy mikroobvodů /* LCD Chip RS P0 RW P1 EN P2 D4 P4 D5 P5 D6 P6 D7 P7 Na spodní straně P3 je připojeno světlo. 1 na, 0 vik. */ // Videdennya holds com | = 0x04; // E ku jedné pcf8574_byte_out(com, ADD); // Videdennya holds com &= 0xFB; // Є na nulu pcf8574_byte_out(com, ADD); // Videdennya holds) void init (void) (_delay_ms (30); com(0x30); _delay_us(40); com(0x30); // Přechod do 4bitového režimu _delay_us(40); // Oříznutí na příkaz Vikonannya com(0x30); // Přechod do 4bitového režimu _delay_us(40); // Oříznutí na příkaz Vikonannya com(0x20); // Přechod do 4bitového režimu _delay_us(40); // Oříznutí na příkaz Vikonannya com(0x20); // Nastavení parametrů com(0x80); // Nastavení parametrů com(0x00); // Vimicable display com(0x80); // Vimicable display com(0x00); // Vymazání displeje com(0x10); // Vymazání displeje com(0x00); com(0x60); // Nastavení režimu zadávání dat com(0x00); com(0xCO); // Zapnutí displeje s vybraným kurzorem) void char_out(BYTE data) ( BYTE data_h = ((data & 0xF0) + 0x09); BYTE data_l = ((data // Přenos nejvýznamnějších 4 bitů data_h |= 0x04; pcf8574_byte_out(data_h, ADD)); // Přenese nejvyšší 4 bity // Přenese nejvyšší 4 bity // Přenos mladších 4 bitů // Přenos mladších 4 bitů // Přenos mladších 4 bitů) void str_out(BYTE *str) ( while((*str) != "\0") ( char_out(*str); str++; ) ) int main(void) ( init(); str_out("ЁPҐBET MҐP!" ;zatímco(1) ( ) ) Vlasno, co se to tu děje? Od této chvíle můžeme propojit knihovny pro I2C a PCF8574. Když už jsem psal o I2C, řeknu vám o tom znovu a řeknu vám o ose v PCF8574.h. Do skladu knihovny přibyly pouze tři funkce.
BYTE pcf8574_test(BYTE add) ( BYTE ask = ACK; add &= 0xFE; i2c_start(); ask = i2c_send_byte(add); i2c_stop(); return ask; ) První funkce byla napsána pro ověření přítomnosti zařízení na sběrnici. V zásadě je lze použít k vyhledání jakéhokoli zařízení, které je na sběrnici. Funkce přijímá adresu zařízení a pokud se shoduje, vynuluje se. Pokud na sběrnici žádné zařízení s takovou adresou není, zapněte jej.
BYTE pcf8574_byte_out(data BYTE, přidat BYTE) ( BYTE ask = ACK; add &= 0xFE; i2c_start(); ask = i2c_send_byte(add); if(!ask) ask = i2c_send_byte(data); ) Tato funkce je již přizpůsobena tomuto mikroobvodu. Jako argument je do sběrnice odeslán bajt na adresu mikroobvodu. Funkcí je nejprve požádat mikroobvod o adresu a pak najít bajt. Pokud mikroobvod přijal bajt a odeslal ACK, funkce dokončí práci s mikroobvodem a vrátí nulu, protože odeslal bajt. A mikroobvod nyní vysílá tento bajt na svůj paralelní port. V opačném případě je NACK odmítnut a přenos je vrácen na jedničku, přenos se nezdařil.
BYTE pcf8574_str_out(BYTE *data, BYTE col, BYTE přidat) ( BYTE ask = ACK; add &= 0xFE; i2c_start(); ask = i2c_send_byte(add); for(BYTE i=0; i Tato funkce je určena pro experimentování. Indikátor přijímá pole jednobajtových dat, počet bajtů a adresu mikroobvodu. Zkuste prosím přenést všechna data v jedné relaci a ne jeden bajt na relaci. Funkce funguje, ale není vhodná pro displej PK. Nyní se vraťme k hlavnímu programu. Po připojení knihoven napište adresu mikroobvodu. Dále vytvoříme tři funkce podobné lcd.h. Princip přenosu má menší význam.
void com (BYTE com) (com | = 0x08; // P3 na jedničku, aby se spínač spálil pcf8574_byte_out(com, ADD); // Videdennya holds com | = 0x04; // E ku jedné pcf8574_byte_out(com, ADD); // Videdennya holds com &= 0xFB; // Є na nulu pcf8574_byte_out(com, ADD); // Videdennya holds } Tato funkce pouze přenáší příkazy na displej. První řádek se objevil z logických doplňků příkazu z 0x08. To je nutné díky tomu, že bajt nepřenášíme přímo na port displeje RK, ale přes náš opakovač. Pokud jsme odeslali bajt a pak potřebujeme na výstup pouze jeden bit, přijměte prosím požadovaný bit až do posledního bajtu a poté jej znovu odešlete na port. To je problém. Přidáním z 0x08 je nutné jednotku trvale zredukovat na třetí kategorii. Pamatujete si na světlo svíček? Samotná osa je přidána a zahrnuje osvětlení. Poté se zavolá funkce přenosu bajtu na sběrnici. Bylo o ní napsáno mnoho. Poté je byte přenesen přes sběrnici do mikroobvodu. Poté vložte trasování do jednotky E, což se provede logickým přidáním bajtu z 0x04. Po vymazání E. Tímto způsobem můžete odeslat příkaz na displej, aniž byste předali samotný příkaz jako argument. void init(void) (_delay_ms(30); // Pauza po podávání jídla com(0x30); // Přechod do 4bitového režimu _delay_us(40); // Oříznutí na příkaz Vikonannya com(0x30); // Přechod do 4bitového režimu _delay_us(40); // Oříznutí na příkaz Vikonannya com(0x30); // Přechod do 4bitového režimu _delay_us(40); // Oříznutí na příkaz Vikonannya com(0x20); // Přechod do 4bitového režimu _delay_us(40); // Oříznutí na příkaz Vikonannya com(0x20); // Nastavení parametrů com(0x80); // Nastavení parametrů com(0x00); // Vimicable display com(0x80); // Vimicable display com(0x00); // Vymazání displeje com(0x10); // Vymazání displeje com(0x00); // Nastavení režimu zadávání dat com(0x60); // Nastavení režimu zadávání dat com(0x00); // Zapnutí displeje s vybraným kurzorem com(0xCO); // Zapnutí displeje s vybraným kurzorem } Tato funkce nedělá nic jiného než inicializaci displeje. Posloupnost příkazů je převzata z datového listu na displeji RK. void char_out(BYTE data) ( BYTE data_h = ((data & 0xF0) + 0x09); BYTE data_l = ((data // Přenos nejvýznamnějších 4 bitů data_h |= 0x04; pcf8574_byte_out(data_h, ADD)); // Přenese nejvyšší 4 bity data_h &= 0xF9; pcf8574_byte_out(data_h, ADD); // Přenese nejvyšší 4 bity pcf8574_byte_out(data_l, ADD); // Přenos mladších 4 bitů data_l | = 0x04; pcf8574_byte_out(data_l, ADD); // Přenos mladších 4 bitů data_l &= 0xF9; pcf8574_byte_out(data_l, ADD); // Přenos mladších 4 bitů } Tato funkce přenáší RC data na displej. Dopadne to stejně jako příkazy za tím, že se bajt přenese nejprve se starším bajtem a poté s mladším. A znovu to samé. void str_out(BYTE *str) ( while((*str) != "\0") ( char_out(*str); str++; ) ) Tato funkce je čistě pro přenos řádku na displej. Vlasné až po naše, ti co nedostanou sto centů.

Projekt pro AtmelStudio 6.2

Gramotní 01.08.15 17:11

Kóma minula. Správně: "AHOJ, SWIT!" Toto příslušenství není určeno pouze pro HD44780. Pull-up rezistory jsou umístěny na straně masteru. Podle specifikace jsou data zaznamenávána řadičem LCD po poklesu E. První funkce je zapsána: void com (BYTE com) (com | = 0x08; // přepínání pcf8574_byte_out (com | 0x04, ADD); / / Zobrazená data pcf8574_byte_out , ADD);// E na nulu) Totéž lze provést méně. Například void char_out(BYTE data) bude vyžadovat pouze dvě kliknutí a zejména bez dalších změn. Inicializace LCD byla zakázána kvůli porušeným specifikacím časování.

Oleksiy 02.08.15 19:11

Díky nepřítomnosti kómatu není displej ovlivněn. Toto zařízení je umístěno pod displejem se stejným nebo podobným ovladačem. A samotná osa mikroobvodu je opravdu jednoduchým rozšířením portu. Dobře, jsem dost dobrý. Jsou nutné další změny. Pokud předáte argument funkci pomocí logiky, mohou se objevit závady. Už jsem se takhle zasekl. Inicializace skončí bez narušení časování. Dokumentace říká, že mezi příkazy je umístěna pauza 40 µs. Protože přenos probíhá po sběrnici i2c, a ta je svým způsobem naprogramovaná, musíte si dělat starosti. Pokud stále neleníte, tak napište svou verzi a pošlete mi ji. zveřejním to. Zreshtoyu tato stránka schůzek pro amatérské publikum a kůži, kdo chcete, může vyjádřit své myšlenky a nápady pro život MK.

Oleksiy 06.08.15 09:14

Přidání časování při inicializaci displeje s ohledem na „kompetentní“

Dmitro 14. 6. 2016 21:57

Dobré odpoledne Oleksiy. Do generátoru kódu můžete přidat knihovnu pro roboty s PCF8574.

Oleksiy 14. 6. 2016 22:32

Budu myslet.))

ruslan 21.12.16 19:54
Oleksij 21. 12. 2016 21:53

Ach tak. Zejména kód v ASMI. Inženýři Arduinu to opět ocení)))

P.C.
No, nebuďte překvapeni ASM, program je napsán pro řadič PIC. Jsou tyto informace „ještě více“ užitečné pro specialisty na AVR? zejména pro začátečníky))) Nemám nic proti PIC, ale pravdou je, že PIC a AVR jsou odlišné. A z pohonu jsou detaily fungování RC displeje, můžete se mrknout))) Pravda, psal jsem i pod CVAVR a všechny příkazy pro třídění a řazení do regálů. Kdybyste náhodou měli nouzi, měli byste se sami přesvědčit, co je napsáno tak jasně))) Autor píše, čtenář sbírá.

GeK 1. 4. 2017 12:52

"I2C adresy mikroobvodů (ve výchozím nastavení je to 0x4E")

Nejvyšší 4 bity adresy jsou pevné,
prefix PCF8574 je 0100 a PCF8574A je 0111
Mladší 3 bity leží na vstupech mikroobvodů A2-A0. Po připojení jsou všechny 3 propojky rozpojené, indikující adresu mikroobvodu, zobrazí se hodnota 0111111.
// A2 A1 A0 PCF8574 PCF8574A
// 1 1 1 0x20 0x38
// 1 1 0 0x21 0x39
// 1 0 1 0x22 0x3A
// 1 0 0 0x23 0x3B
// 0 1 1 0x24 0x3C
// 0 1 0 0x25 0x3D
// 0 0 1 0x26 0x3E
// 0 0 0 0x27 0x3F

Oleksij 4. 1. 17 14:27

Vypadá to, že jste se spletl.
Vityag s dokumentací pro mikroobvod

0b01001110 ce 0x4E
Zde je tedy vše správně. A pokud potřebujete změnit adresu, pak ji stačí změnit v Define.

Jurij 14.12.17 21:26

Hezký den! A můžete také najít kód funkcí lcdgotoxy a lcdclear pro práci s adaptérem pro PCF8574.

Oleksandr 20.05.18 18:14

Hezký den! Jak vytisknete ruský text?

Oleksiy 20.5.2018 23:04

Jedná se o zcela nový displej vyrobený společností MELT. V paměti má pevně zapsanou azbuku.

Oleksandr 21.05.18 04:55

Hezký den! Píšu, že máte projekt pro AtmelStudio 6.2 „ЁPҐBET MҐP!“ pak je to normálně vidět
a pokud napíšete "AHOJ SWIT!" vynášet všechny možné nesmysly. mám dva
Varianty zobrazení v jednom jsou psány azbukou. další Číňan.

Oleksiy 21.05.18 09:22

Raději napíšu testovací program. Iteruje celou pamětí se zobrazením symbolů a jejich adres. A pak pochopíme, v čem je problém. Nejdůležitější je, že tabulka symbolů není shodná s tabulkou ascii.

Andriy 03.09.18 08:32

Dobrý den!

Můžete mi poslat schéma zapojení pro Proteus?

Andriy 03.09.18 10:22

Zkontroloval jsi někoho v Proteuse?

Andriy 03.09.18 10:56

Rozіbravsya main_init

Pavlo 30.05.19 23:35

Tsikava rich, adresy displeje jsou 0x4E a pokud stejný displej připojíte k Arduinu, pak adresy jsou 0x27

Pavlo 31.05.19 11:04

Děkuji za vaši práci! Od cílených aplikací, kromě vaší, se bez výdělku očekává přerušení celého internetu. Jedna věc, ve funkci archivovaného projektu inicializace zobrazení není zpoždění _delay_ registrováno, a proto nefunguje

Oleksij 6. 1. 2019 9:52

No, tohle je spíš demonstrační projekt. Je dobře, že je potřeba přepsat knihovnu axlib, ale vzhledem k tomu, že STM32 a STM8 mílovými kroky kolabují, smysl v AVR už není ve vzduchu.

Pavlo 6. 5. 2019 12:57

STM nevyžaduje balíčky DIP, což usnadňuje použití jiných desek. Pro mé projekty je AVR vyprodáno na jeden Atmega 8

Oleksiy 6/05/19 15:20

Takže, kolik to stojí Atmega8 a stm8s003)))

Dmitro 6. 7. 2019 00:41

Ahoj, Oleksie.
Řekněte mi, laskavě, jak je nutné číst z pcf8574 do portu?
Chci vytvořit externí blok, 8 GPIO přes sběrnici i2c - to je vše.

Dmitro 6. 7. 2019 17:56

Jsem si jistý sám sebou
Funkce otočí byte - port portu mikroobvodu
uint8_t pcf8574_byte_rcv(uint8_t addr)
{
uint8_t ask = ACK;
adr | = 0b01; //ČÍST
uint8_t data=0;
i2c_start();
ask = i2c_send_byte(addr);
if(!zeptat se) data = i2c_read_byte(NACK);
i2c_stop();

Návratová data;
}

Pavlo 6. 7. 2019 20:37

Kolik to stojí, 150 rublů, za cenu hole) a jak platíte za STM? LUT je nespolehlivé, CNC frézka nefunguje, co můžu vzít (aniž bych to zkusil)

LCD displej- Častý host projektů Arduino. Ve skládacích obvodech však můžeme mít problém s nedostatkem Arduino portů kvůli nutnosti připojení obrazovky, která má spoustu kontaktů. Cesta z této situace může být I2C/IIC Adaptér, který připojuje prakticky standardní obrazovku Arduino 1602 k deskám Uno, Nano nebo Mega s dalšími 4 piny. Tento článek ukazuje, jak můžete připojit obrazovku LCD s rozhraním I2C, jak získat přístup ke knihovnám, napsat krátký příklad a podívat se na typické aplikace.

Displej z tekutých krystalů LCD 1602 Je to první volba pro zobrazení řad symbolů v různých projektech. Je to levné, s různými úpravami s různými barvami podsvícení snadno vytvoříte hotové knihovny pro skicu Arduino. Ale od neohroženého krátkotrvajícího Tsoogo Ekran є tato skutečnost, zobrazení 16. května digiribru Visnovkiv, s Yakiki -Ism alespoň 6. Vikoristán Tsoogo LCD bez I2C SERYOZHEND na Arduino UNO Poen Nano. Pokud nejsou žádné kontakty, budete si muset koupit desku Arduino Mega nebo chránit kontakty, včetně připojení displeje přes i2c.

Krátký popis LCD 1602 pinů

Podívejme se blíže na technologii LCD1602:

Slupka vinné révy má svůj vlastní význam:

  1. Uzemnění GND;
  2. Kharchuvannya 5;
  3. Nastavení kontrastu monitoru;
  4. Tým, data;
  5. Záznam a čtení dat;
  6. Umožnit;

7-14. Datové linky;

  1. Plus podpora;
  2. Mínus osvětlení.

Specifikace displeje:

  • Symbolický typ zobrazení - možnost zavedení symbolů;
  • LED podsvícení;
  • Ovladač HD44780;
  • Živé napětí 5V;
  • Formát 16x2 znaků;
  • Rozsah provozních teplot: -20°С až +70°С, rozsah skladovacích teplot: -30°С až +80°С;
  • Podívám se kolem 180 stupňů.

Schéma připojení LCD k desce Arduino bez i2C

Standardní schéma pro připojení monitoru přímo k mikrokontroléru Arduino bez I2C vypadá takto.

Vzhledem k velkému počtu kontaktů, které jsou připojeny, nemusí být dostatek místa pro přijetí požadovaných prvků. I2C přepínač změní počet šipek na 4 a počet obsazených kolků na 2.

Kde koupit LCD obrazovky a štíty pro Arduino

LCD obrazovka 1602 (a verze 2004) je velmi oblíbená, takže ji snadno najdete jak v místních internetových obchodech, tak na zahraničních trzích. Pojďme se podívat na dostupné možnosti:

Modul LCD1602+I2C s modrou obrazovkou v kombinaci s Arduinem Jednoduchý displej LCD1602 (zelené podsvícení) levnější než 80 rublů Velká obrazovka LCD2004 s I2C HD44780 pro Arduino (modré a zelené podsvícení)
Displej 1602 s adaptérem IIC a modrými světly Další verze LCD1602 s pájeným I2C modulem Port IIC/I2C/TWI/SPI modul adaptéru pro obrazovku 1602, vhodný pro Arduino
Displej s RGB přepínači! LCD 16×2 + klávesnice + Buzzer Shield pro Arduino Štít pro Arduino s tlačítky a obrazovkou LCD1602 LCD 1602 LCD displej pro 3D tiskárnu (Smart Controller pro RAMPS 1.4, Text LCD 20×4), modul čtečky karet SD a MicroSD

Popis protokolu I2C

Nejprve si krátce promluvme o připojení displeje k Arduinu přes adaptér i2c, pojďme si krátce promluvit o samotném protokolu i2C.

I2C/IIC(Inter-Integrated Circuit) je protokol, který byl původně vytvořen pro připojení integrovaných obvodů uprostřed elektronického zařízení. Design vychází z firmy Philips. Protokol i2c je založen na 8bitové sběrnici vicorstan, která je nutná pro propojení bloků v elektronice, která jej řídí, a na adresovacím systému, který lze připojit po stejných vodičích zařízení coma. Jednoduše dodáváme data do toho či onoho zařízení, přičemž k datovým paketům přidáváme identifikátor požadovaného prvku.

Nejjednodušší obvod I2C pojme jedno kabelové zařízení (obvykle mikrokontrolér Arduino) a mnoho zařízení (například LCD displej). Každé zařízení má adresu v rozsahu od 7 do 127. Dvě zařízení se stejnou adresou nemusí být ve stejném obvodu.

Deska Arduino podporuje i2c na hardwarové úrovni. Pro připojení zařízení pomocí tohoto protokolu můžete použít kolíky A4 a A5.

V robotu I2C můžete vidět řadu výhod:

  • Práce vyžaduje minimálně 2 linky – SDA (datová linka) a SCL (synchronizační linka).
  • Připojení velkého počtu kabelových zařízení.
  • Změna hodiny neklidu.
  • K ovládání celé sady zařízení je zapotřebí pouze jeden mikrokontrolér.
  • Libovolný počet mikroobvodů, které jsou připojeny k jedné sběrnici, je obklopen pouze hraniční kapacitou.
  • Vysoká úroveň ukládání dat pomocí speciálního filtru potlačuje rozstřiky vznikající v obvodech.
  • Jednoduchý postup pro diagnostiku vzniklých závad a jejich odstranění.
  • Sběrnice je již integrována do samotného Arduina, není tedy potřeba rozhraní sběrnice dále rozšiřovat.

Nedoliky:

  • Základní předpětí linky je 400 pF.
  • Je důležité naprogramovat řadič I2C, protože na sběrnici je řada různých zařízení.
  • U velkého počtu zařízení je obtížné lokalizovat poruchu, protože jedno z nich mírně instaluje nízkoúrovňový faktor.

i2c modul pro LCD 1602 Arduino

Nejlepším a nejjednodušším způsobem, jak nainstalovat i2c displej do Arduina, je zakoupení hotové obrazovky s vestavěným protokolem. Ale takové obrazovky ten smrad nevydrží, není to levné. A osa různých standardních obrazovek již vytvořila velkou sílu. Proto je dnes nejdostupnější a nejoblíbenější možností nákup a výměna sousedního modulu I2C - adaptéru, který vypadá takto:

Na jedné straně modulu jsou i2c piny - zem, životnost a 2 pro přenos dat. Z jiného adaptéru použijeme růže vnějšího života. A na desce je samozřejmě holé dno, navíc je modul připájen ke standardním součástkám obrazovky.


Pro připojení k platbě Arduino použijte odhlášení i2c. V případě potřeby připojíme externí napájení pro osvětlení. Pomocí vestavěného trim rezistoru můžeme upravit nastavení kontrastu J

Na trhu najdete moduly LCD 1602 s pájenými adaptéry, jejich instalace je maximálně zjednodušena. Pokud jste si koupili stejný adaptér, budete jej muset k modulu předem připájet.

Připojení obrazovky RK k Arduinu přes I2C

K připojení potřebujete samotnou desku Arduino, displej, breadboard, konektory a potenciometr.

Pokud používáte speciální adaptér i2c, budete jej muset nejprve připájet k modulu obrazovky. Je důležité mít slitování, můžete se zapojit do takového plánu.


Před zaplacením dalších čtyř šipek je připojen RCD monitor s podporou i2c - dvě šipky pro data, dvě šipky pro život.

  • Připojení GND je spojeno s GND na desce.
  • VCC je na 5V.
  • SCL je připojen na pin A5.
  • SDA je připojen na pin A.

To je vše! Dlouhé sítě cest, ve kterých je snadné se ztratit. V tomto případě můžeme veškerou složitost implementace i2C protokolu jednoduše svěřit knihovnám.

Knihovny pro roboty s i2c LCD displejem

Pro komunikaci mezi Arduinem a LCD 1602 přes I2C sběrnici budete potřebovat alespoň dvě knihovny:

  • Knihovna Wire.h pro práci s I2C je již součástí standardního programu Arduino IDE.
  • Knihovna LiquidCrystal_I2C.h, která obsahuje širokou škálu příkazů pro ovládání monitoru přes I2C sběrnici, umožňuje vytvořit jednodušší a kratší skicu. Je nutné dodatečně nainstalovat knihovnu Po připojení obrazovky je potřeba nainstalovat knihovnu LiquidCrystal_I2C.h

Po připojení všech potřebných knihoven ke skice vytvoříme objekt a můžeme upravit jeho funkce. Pro testování je důležité použít standardní skicu na zadku.

#zahrnout #zahrnout // Připojení knihovny //#include // Připojení alternativní knihovny LiquidCrystal_I2C lcd(0x27,16,2); // Pokazum I2C adresa (Night -shine), já jsem parametr Ekran (v LCD 1602 - 2 řádky 16. symbolů ve skinu // Liquidcrystal_pf8574 LCD (0x27); // Wareant pro nastavení Blacks PCF8574 VOOID (LCD .init ( ); // Inicializace displeje lcd.backlight(); // Připojení displeje lcd.setCursor(0,0); // Umístěte kurzor na začátek prvního řádku lcd.print("Ahoj "); .setCursor(0,1); // Umístěte kurzor na začátek dalšího řádku lcd.print("ArduinoMaster"); // Napište text na jiný řádek ) void loop() ( )

Popis funkcí a metod knihovny LiquidCrystal_I2C:

  • home() a clear() – první funkce umožňuje otočit kurzor do horní části obrazovky a zároveň zobrazit vše, co bylo předtím na monitoru.
  • write(ch) – umožňuje napsat na obrazovku jeden znak ch.
  • kurzor() a noCursor() – zobrazí/skryje kurzor na obrazovce.
  • blink() a noBlink() – kurzor bliká/nebliká (pokud bylo jeho zobrazení dříve povoleno).
  • display() a noDisplay() – umožňuje připojit/zapnout displej.
  • scrollDisplayLeft() a scrollDisplayRight() – posouvá obrazovku o jeden znak pro levou/pravou ruku.
  • autoscroll() a noAutoscroll() – umožňuje zapnout/vypnout režim autoscroll. Pro který režim vzhledu se nový symbol zaznamená na stejné místo, které bylo dříve napsáno na obrazovce.
  • leftToRight() a rightToLeft() – Přímá instalace zobrazeného textu – zleva doprava nebo zprava doleva.
  • createChar(ch, bitmap) – vytvoří znak s kódem ch (0 – 7) pomocí pole bitmapových bitmap k vytvoření černých a bílých bodů.

Alternativní knihovna pro roboty s i2c displejem

V některých případech, kdy dojde k poškození přiřazené knihovny se zařízeními vybavenými řadiči PCF8574, může dojít k chybám. Alternativou k této možnosti je knihovna LiquidCrystal_PCF8574.h. Rozšiřuje LiquidCrystal_I2C, což není příčinou problémů viktoriánů.

Problémy s připojením i2c LCD displeje

Pokud po kliknutí na skicu nevidíte na displeji požadovanou zprávu, zkuste kliknout na tyto akce.

V první řadě můžete zvýšit nebo změnit kontrast monitoru. Postavy často jednoduše nejsou vidět přes režim kontrastu a osvětlení.

Pokud to nepomůže, zkontrolujte, zda jsou kontakty správně připojeny a zda je připojeno živé napájení. Pokud jste použili kompatibilní adaptér i2c, zkontrolujte znovu pájecí bod kontaktů.

Dalším častým důvodem chybějícího textu na obrazovce mohou být nesprávné adresy i2c. Zkuste si v náčrtech zapamatovat adresu zařízení s 0x27 0x20 nebo 0x3F. Různí distributoři mohou mít různé adresy pro platbu. Pokud to nepomůže, můžete spustit náčrt skeneru i2c, který se podívá na všechna připojení zařízení a určí jejich adresy pomocí metody hrubé síly. Skica zadku i2c skeneru.

Pokud obrazovka stále nefunguje, zkuste připájet adaptér a připojit LCD jako obvykle.

Višňovok

V tomto článku jsme se podívali na hlavní napájecí zdroj pro LCD obrazovku ve skládacích Arduino projektech, pokud potřebujeme ušetřit peníze navíc na desce. Jednoduchý a levný adaptér i2c umožňuje připojit obrazovku 1602 LCD pouze pomocí 2 analogových kolíků. Ve více situacích můžete být ještě důležitější. Poplatek za dostupnost - nutnost použití přídavného modulu - převodníku a knihovny. Cena za flexibilitu není dle našeho názoru nijak vysoká a doporučujeme tuto flexibilitu v projektech využít.

Tento článek je založen na tom, jak používat modul rozhraní I2C pro připojení LCD displeje (2x16/20x4) pomocí Arduina. Tento modul umožňuje změnit počet řídicích obvodů a nahradit tak 8 nebo 4bitové připojení, vyžadující pouze 2 vstupy (SDA a SCL).

Technická charakteristika

Podpora displeje: LCD 16×02/20×04
Dodatkovo: úprava kontrastu
Napětí je živé. 5V
Rozhraní: I2C
Rozměry: 54 mm x 19 mm x 15 mm

Podrobnosti o modulu rozhraní I2C

Velké množství kontaktů na ovladačích Arduino je propojeno a často, když dojdou různé senzory a moduly, je potřeba je šetřit, pro tyto typy případů je modul rozbitý, k čemuž je možná další pomoc Studie přenosu přes dva kontakty (SDA a SCL).

Nyní trochu o samotném modulu, o mikroobvodu PCF8574T. Rezistory R8 (4,7k) a R9 (4,7k) jsou nutné pro natažení linek SDA a SCL v ideálním případě, když jsou přes I2C sběrnici připojena dvě nebo více zařízení, je nutné vytáhnout pouze na jednom zařízení Ano, já; Později napíšu proč. Na přenosové desce jsou tři propojky (za schématem je vidět, že linky A0, A1, A2 jsou vytaženy přes odpory R4, R5, R6), nutné pro změnu adresování zařízení, celkem je 8 možností. Změna adresování umožňuje připojit až osm zařízení přes sběrnici IC2 s mikroobvodem PCF8574T možnost zobrazení adresy zařízení (po změně adresy zařízení 0x27). Modul je dále vybaven potenciometrem R11, kterým můžete měnit i kontrast LCD displeje.

Na modulu jsou tři skupiny kontaktů pro připojení:

Persha skupina:
SCL: hodinová linka (Serial Clock)
SDA: datová linka (sériová data)
VCC: "+" jídlo
GND: "-" jídlo

Další skupina:
VSS: "-" jídlo
VDD: "+" jídlo
VO: Vividednya keruvannya naopak
RS: Vyberte registr
RW: čtení/zápis (režim zápisu při připojení k zemi)
E: Povolit (stroboskop při poklesu)
DB0-DB3: Mladší bity rozhraní
DB4-DB7: Vysoké bity rozhraní
A: „+“ podpora života
K: „-“ podpora života

Třetí skupina: (za bitvami byl instalován jumper)
VCC:
LCD pohled:

Připojení k Arduinu

Požadované podrobnosti:
Arduino UNO R3 x 1 ks.
LCD displej 1602A (2×16, 5V, Modrý) x 1 ks.
Modul rozhraní I2C, IIC, TWI pro LCD x 1 ks.
DuPont drát, 2,54 mm, 20 cm, F-M (samice - samec) x 1 ks.
USB 2.0 A-B kabel x 1 ks.

Spojení:
Nejprve připájíme I2C modul k LCD displeji, poté potřebujeme připojit displej k Arduino UNO. Pro ty, kteří používají kabeláž DuPont, jsou zapojení uvedena v tabulce níže.

Abych byl přesnější, dám vám ještě jeden diagram.

Pro tento experiment si musíte stáhnout a nainstalovat knihovnu „LiquidCrystal_I2C“. Poté zkopírujte a vložte tento kód do programu Arduino IDE a připojte jej k ovladači.

/* Testováno na Arduino IDE 1.6.11 Datum testu 15.09.2016. */ #zahrnout #zahrnout LiquidCrystal_I2C lcd(0x27,16,2); // Nastavení adresy a velikosti zobrazení void setup() ( lcd.init(); // Inicializace lcd lcd.backlight(); // Povolení podsvícení lcd.setCursor(0,0); // Instalace kurzoru na hlavu 1. řádku lcd .print("Ahoj, světe"); // Zobrazený text lcd.setCursor(0,1 // Umístění kurzoru na 2. řádek lcd.print("www.robotchip.ru"); // Zobrazený text) void loop() ( )

Zabavte program

Pokud jste vše provedli správně, ale na displeji nejsou požadované symboly, zkuste zvýšit kontrast potenciometrem.


Posilannya
Okouzlete knihovnu LiquidCrystal_I2C
Dokumentace k čipu PCF8574T
Dokumentace až do LCD1602A

Koupit na Aliexpress