Vsak radioamater po nekaj preprostem DIY delu pride do cilja izdelati nekaj velikega z uporabo senzorjev in gumbov. Navsezadnje je veliko bolj zanimivo prikazovati podatke na zaslonu kot na monitorju vrat. Toda potem se postavlja vprašanje: kateri zaslon izbrati? In na splošno, kako ga povezati, kaj je potrebno za povezavo? Odgovori na ta vprašanja bodo obravnavani v tem članku.
LCD 1602
Med številnimi možnostmi med zasloni bi izpostavil zaslon LCD1602, ki temelji na krmilniku HD4478. Ta zaslon je v dveh barvah: bele črke na modri podlagi, črne črke na rumeni podlagi. Tudi povezovanje LCD 1602 z Arduinom ne bo povzročalo težav, saj je vgrajena knjižnica in vam ni treba prenesti ničesar dodatnega. Zasloni se ne razlikujejo le po ceni, ampak tudi po velikosti. Radioamaterji pogosto uporabljajo 16x 2, torej 2 vrstici po 16 znakov. Obstaja pa tudi 20 x 4, kjer so 4 vrstice po 20 znakov. Dimenzije in barva ne igrajo nobene vloge pri povezovanju lcd 1602 zaslona na Arduno, povezani so na enak način. Kot gledanja je 35 stopinj, odzivni čas zaslona je 250 ms. Lahko deluje pri temperaturah od -20 do 70 stopinj Celzija. Pri delu uporablja 4 mA za zaslon in 120 mA za osvetlitev ozadja.
Kje se uporablja?
Ta zaslon je priljubljen ne le med radioamaterji, ampak tudi med velikimi proizvajalci. Na primer, tiskalniki, kavni avtomati uporabljajo tudi LCD1602. To je posledica nizke cene, na kitajskih spletnih mestih ta zaslon stane 200-300 rubljev. Tam se splača kupiti, saj so v naših trgovinah marže za ta zaslon zelo visoke.
Poveži se na Arduino
Priključitev LCD 1602 na Arduino Nano in Uno ni nič drugačna. Z zaslonom lahko delate v dveh načinih: 4-bitni in 8-bitni. Pri delu z 8-bitnim zaslonom se uporabljajo tako nižji kot višji bit, pri 4-bitnem pa samo nižji. Pri delu z 8-bitnim ni posebnega smisla, saj bodo za povezavo dodani še 4 kontakti, kar ni priporočljivo, ker hitrost ne bo večja, omejitev posodobitve zaslona je 10-krat na sekundo. Na splošno se za povezavo LCD 1602 z Arduinom uporablja veliko žic, kar povzroča nekaj nevšečnosti, vendar obstajajo posebni ščiti, a o tem kasneje. Fotografija prikazuje povezavo zaslona z Arduino Uno:
Primer kode:
vključi //Dodajte zahtevano knjižnico LiquidCrystal lcd(7, 6, 5, 4, 3, 2); // (RS, E, DB4, DB5, DB6, DB7) void setup(){ lcd.begin(16, 2); // Nastavi dimenzijo zaslona lcd.setCursor(0, 0); // Nastavi kazalko na začetek 1. vrstice lcd.print("Pozdravljeni, svet!"); // Prikaz besedila lcd setCursor(0, 1); // Nastavi kazalko na začetek vrstice 2 lcd.print("fb.ru"); // Izhod besedila } void loop(){ }
Kaj naredi koda? Najprej je povezana knjižnica za delo z zaslonom. Kot je navedeno zgoraj, je ta knjižnica že vključena v Arduino IDE in vam je ni treba dodatno prenesti in namestiti. Nato so definirani kontakti, ki so povezani z zatiči: RS, E, DB4, DB5, DB6, DB7 oz. Nato se nastavi velikost zaslona. Ker delamo z različico s 16 znaki in 2 vrsticama, zapišemo takšne vrednosti. Kazalec nastavimo na začetek prve vrstice in prikažemo naše prvo besedilo Hello World. Nato postavite kazalec v drugo vrstico in prikažite ime spletnega mesta. To je vse! Upoštevali smo povezavo LCD 1602 z Arduino Uno.
Kaj je I2C in zakaj je potreben?
Kot že omenjeno, povezovanje zaslona zahteva veliko zatičev. Na primer, pri delu z več senzorji in LCD zaslonom 1602 kontakti morda preprosto ne bodo dovolj. Pogosto radioamaterji uporabljajo različice Uno ali Nano, kjer ni veliko stikov. Potem so si ljudje omislili posebne ščite. Na primer, I2C. Omogoča vam povezavo zaslona s samo 4 nožicami. To je dvakrat manj. Modul I2C se prodaja tako ločeno, kjer ga morate sami spajkati, kot tudi že prispajanLCD zaslon 1602.
Povezava z modulom I2C
Povezovanje LCD 1602 z Arduino Nano z I2C zavzame malo prostora, samo 4 nožice: ozemljitev, napajanje in 2 podatkovna izhoda. Napajanje in ozemljitev povežemo na 5V in GND na Arduinu. Preostala dva kontakta: SCL in SDA sta povezana s katerim koli analognim zatičem. Na fotografiji lahko vidite primer povezovanja lcd 1602 na arduino z modulom I2C:
Programska koda
Če je bilo za delo z zaslonom brez modula potrebno uporabiti samo eno knjižnico, sta za delo z modulom potrebni dve knjižnici. Eden od njih je že v Arduino IDE - Wire. Drugo knjižnico, LiquidCrystal I2C, je treba prenesti ločeno in namestiti. Za namestitev knjižnice v Arduino je treba vsebino prenesenega arhiva naložiti v korensko mapo Libraries. Primer kode z uporabo I2C:
include include LiquidCrystal_I2C lcd(0x27, 16, 2); // Nastavi prikaz void setup() { lcd.init(); lcd.backlight();// Vklop osvetlitve zaslona lcd.print("FB.ru"); lcd.setCursor(8, 1); lcd.print("LCD 1602"); } void loop() { // Nastavi kazalec na drugo vrstico in ničelni znak. lcd.setCursor(0, 1); // Natisne število sekund, odkar se je arduino začel lcd.print(millis()/1000); }
Kot vidite, je koda skoraj enaka.
Kako dodam svoj simbol?
Težava s temi zasloni je, da nipodpora za cirilico in simbole. Na primer, na zaslon morate naložiti nekaj znakov, da ga lahko odraža. Če želite to narediti, vam zaslon omogoča, da ustvarite do 7 vaših znakov. Predstavite tabelo:
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 |
Če je 0 - tam ni ničesar, če je 1 - je zasenčeno območje. V zgornjem primeru lahko vidite ustvarjanje lika "nasmejanega smeška". Če uporabite primer programa v Arduinu, bi bilo videti takole:
include include // Vključi zahtevano knjižnico // bajt bitne maske simbola nasmeha smile[8]={ B00010, B00001, B11001, B00001, B11001, B00001, B00010, }; LCD s tekočimi kristali (7, 6, 5, 4, 3, 2); // (RS, E, DB4, DB5, DB6, DB7) void setup(){ lcd.begin(16, 2); // Nastavi dimenzijo zaslona lcd.createChar(1, nasmeh); // Ustvari številko znaka 1 lcd.setCursor(0, 0); // Nastavi kazalko na začetek 1. vrstice lcd.print("\1"); // Prikaži smeška (številka znaka 1) - "\1" } void loop(){ }
Kot vidite, je bil ustvarjenbitna maska je enaka tabeli. Ko je ustvarjen, ga lahko izpišete kot spremenljivko na zaslon. Ne pozabite, da lahko v pomnilnik shranite le 7 znakov. Načeloma je to dovolj. Na primer, če želite prikazati simbol stopnje.
Težave, pri katerih zaslon morda ne bo deloval
Obstajajo časi, ko zaslon ne deluje. Na primer, vklopi se, vendar ne prikaže znakov. Ali pa se sploh ne vklopi. Najprej preverite, ali ste pravilno povezali kontakte. Če ste lcd 1202 priključili na Arduino brez I2C, se je zelo enostavno zapletati v žice, kar lahko povzroči nepravilno delovanje zaslona. Prav tako morate paziti, da je kontrast zaslona povečan, saj pri minimalnem kontrastu niti ni vidno, ali je LCD 1602 vklopljen ali ne. Če to ne pomaga, potem je morda težava v spajkanju kontaktov, to je pri uporabi modula I2C. Pogost razlog, zakaj zaslon morda ne deluje, je tudi nepravilna nastavitev naslova I2C. Dejstvo je, da obstaja veliko proizvajalcev in lahko nastavijo drugačen naslov, tukaj ga morate popraviti:
LiquidCrystal_I2C lcd(0x27, 16, 2);
V oklepajih lahko vidite dve vrednosti, 0x27 in 16, 2 (16, 2 je velikost zaslona, 0x27 pa je samo naslov I2C). Namesto teh vrednosti lahko poskusite postaviti 0x37 ali 0x3F. No, drugi razlog je preprosto okvarjen LCD 1602. Glede na to, da je skoraj vse za Arduino narejeno na Kitajskem, ne morete biti 100% prepričani, da je kupljenoizdelek ni pokvarjen.
LCD 1602 prednosti in slabosti
Oglejmo si prednosti in slabosti LCD-ja 1602.
Pros
- Cena. Ta modul je mogoče kupiti po zelo ugodni ceni v kitajskih trgovinah. Cena je 200-300 rubljev. Včasih se prodaja celo z modulom I2C.
- Enostavna povezava. Verjetno danes nihče ne poveže LCD 1602 brez I2C. In s tem modulom povezava traja le 4 nožice, ne bo nobenih "mrež" žic.
- Programiranje. Zahvaljujoč že pripravljenim knjižnicam je delo s tem modulom enostavno, vse funkcije so že registrirane. In če morate dodati svoj lik, traja le nekaj minut.
Proti
V času uporabe na tisoče radioamaterjev ni bilo ugotovljenih velikih minusov, le primeri so nakupa zakonske zveze, saj se uporabljajo predvsem kitajske možnosti prikaza
Ta članek je razpravljal o povezovanju zaslona LCD 1602 z Arduinom in predstavil vzorčne programe za delo s tem zaslonom. Res je eden najboljših v svoji kategoriji, ne gre samo za to, da ga na tisoče radioamaterjev izbere za svoje projekte!