Mündəricat:

Arduino Nano üçün LCD COG: 3 addım
Arduino Nano üçün LCD COG: 3 addım

Video: Arduino Nano üçün LCD COG: 3 addım

Video: Arduino Nano üçün LCD COG: 3 addım
Video: Lesson 98: Arduino 10 LED Push button Projects, Potentiometer LED Voltmeter and Traffic Light 2024, Iyul
Anonim
Arduino Nano üçün LCD COG
Arduino Nano üçün LCD COG

Bu Təlimat, Arduino Nano ilə bir COG LCD -nin necə istifadə olunacağını təsvir edir.

COG LCD displeyləri ucuzdur, lakin interfeysi bir qədər çətindir. (COG "Chip On Glass" deməkdir.) İstifadə etdiyim UC1701 sürücü çipini ehtiva edir. Arduinonun yalnız 4 sancağı tələb olunur: SPI-saat, SPI-data, çip seçin və əmr/məlumat.

UC1701 SPI avtobusu tərəfindən idarə olunur və 3.3V -də işləyir.

Burada bir Arduino Nano ilə necə istifadə edəcəyimi izah edirəm. Arduino Mini və ya Uno ilə də işləməlidir - tezliklə sınayacağam.

Bu mənim ilk Arduino layihəmdir və onilliklər ərzində C yazmamışam, buna görə də açıq -aşkar səhvlər edirəmsə, mənə bildirin.

Addım 1: Avadanlıq qurmaq

Avadanlıq qurmaq
Avadanlıq qurmaq
Avadanlıq qurmaq
Avadanlıq qurmaq
Avadanlıq qurmaq
Avadanlıq qurmaq

UC1701 çipi olan bir COG LCD alın. Paralel interfeysdən çox SPI avtobusundan istifadə edilməlidir. Aşağıda sadalananlar kimi adlarla etiketlənəcək təxminən 14 sancağa sahib olacaq. (D0, D1, D2 etiketli daha çox sancaqlar olan paralel bir interfeys istəmirsiniz …)

Aldığım: https://www.ebay.co.uk/itm/132138390168 Və ya "12864 LCD COG" üçün eBay -də axtarış edə bilərsiniz.

1,27 mm aralı sancaqlar olan kifayət qədər geniş quyruğu olan birini seçin - daha incə sancaqlar lehimləmək çətin olacaq. Bir UC1701 çipi olduğundan əmin olun. Ebay səhifəsindəki altıncı şəkildəki "KONNEKTOR: COG/UC1701" yazıldığına diqqət yetirin.

Ekran şəffafdır və hansının ön və arxa olduğunu bilmək çətindir. Şəkillərimi diqqətlə öyrənin. 1 və 14 sancaqlarının harada olduğuna diqqət yetirin - quyruqda qeyd olunur.

Çevik quyruğu lehimləmək olduqca asandır, ancaq bir çörək taxtasına qoşa biləcəyiniz üçün bir adapter tələb edir. Aldım: https://www.ebay.co.uk/itm/132166865767 Və ya "Adapter Smd SSOP28 DIP28" üçün eBay -da axtarış edə bilərsiniz.

Adapterin bir tərəfində 28 pinli SOP çipi, digər tərəfində isə 28 pinli SSOP çipi var. Bir SOP çipinin pin aralığı, LCD -nin quyruğu ilə eyni olan 0,05 (1,27 mm) məsafədədir.

Ayrıca bəzi başlıq pinlərinə ehtiyacınız olacaq. Nə vaxt bir Arduino və ya başqa bir modul alsam, ehtiyac duyulduğundan daha çox başlıq pinləri ilə gəlir, buna görə də ehtimal ki, onsuz da var. Əks halda, eBay -də "2.54mm başlıq pinləri" axtarın.

Başlıq sancaqlarının 14 -ü adapterə bağlanır. Onları sonuna qədər itələməyin - adapterin arxası düz olsa daha yaxşıdır. İğnələrin çuxurlara çox uzanmaması üçün skamyanıza düz qoyun. Pimlərin lövhənin SOP tərəfində olduğundan əmin olun (yəni daha böyük çip).

Quyruq yastıqları bir növ pəncərədədir. Hər iki tərəfini lehimlə qalaylayın. Adapterin yastıqlarını qalaylayın. Adapterin quyruğunu yerində saxlayın, sonra hər yastığa lehimləmə dəmiri ilə toxunun (kifayət qədər incə bir ucu lazımdır).

Gərginliyi azaltmaq üçün adapterin deliklərindən bir az ip bağlayın. ("Transformator teli" ndən istifadə etdim).

Yanlış bir şəkildə lehimləyirsinizsə, quyruğunu lehimləməyə çalışmayın. Sancaqları bir -bir çıxarın və lövhənin digər tərəfinə köçürün. (Bəli, bu səhvi etdim və quyruğunu yenidən lehimlədim, buna görə fotoda bir az qarışıqlıq var.)

Addım 2: Arduinoya qoşulun

Arduino ilə əlaqə
Arduino ilə əlaqə
Arduino ilə əlaqə
Arduino ilə əlaqə

Bu bölmədə bir Arduino Nanoya necə bağlanılacağı izah edilir. Mini və ya Uno üçün çox oxşar olacaq, amma hələ sınamamışam.

Dövrə diaqramını öyrənin.

USB portuna qoşulmuş Arduino Nano 5V -də işləyir. LCD 3.3V gərginlikdə işləyir. Buna görə də, LCD -ni Nano -nun 3V3 pinindən gücləndirmək və hər bir idarəetmə pinindəki gərginliyi 5V -dan 3.3V -ə endirmək lazımdır.

LCD -nin çıxışı aşağıdakı kimidir:

  • 1 CS
  • 2 RST
  • 3 CD
  • 4
  • 5 CLK
  • 6 SDA
  • 7 3V3
  • 8 0V Gnd
  • 9 VB0+
  • 10 VB0-
  • 11
  • 12
  • 13
  • 14

CS Chip-Select-dir. UC1701 çipini seçmək (aktivləşdirmək) üçün aşağıya çəkilir. (CS -yə CS0 və ya En və ya bənzəri deyilə bilər.)

RST sıfırlanır. Çipi sıfırlamaq üçün aşağıya çəkilir. (RST Reset adlandırıla bilər.)

CD əmr/məlumatdır. SPI üzərindən çipə əmr göndərərkən aşağı çəkilir. Məlumat göndərərkən yüksəkdir. (CD A0 adlandırıla bilər.)

CLK və SDA SPI avtobus pinləridir. (SDA SPI-Data adlandırıla bilər. CLK SCL və ya SPI-Clock ola bilər.)

VB0+ və VB0- UC1701-in daxili yükləmə nasosu tərəfindən istifadə olunur. Şarj pompası, LCD üçün lazım olan tək gərginliklər yaradır. VB0+ və VB0- arasında 100n kondansatör bağlayın. UC1701 sənədləri 2uF tövsiyə edir, lakin bu xüsusi LCD ilə fərq görmədim.

LCD-də VB1+ və VB1 pinləri varsa, aralarında 100n kondansatör də bağlayın. (LCD -də VLCD pin varsa, VLCD ilə Gnd arasında 100n kondansatör bağlamağa cəhd edə bilərsiniz. Mənim LCD ilə heç bir fərqi yox idi.)

LCD -ni Nano -ya aşağıdakı kimi bağlayın:

  • 1 CS = D10 *
  • 2 RST = D6 *
  • 3 CD = D7 *
  • 5 CLK = D13 *
  • 6 SDA = D11 *
  • 7 3V3 = 3V3
  • 8 0V = Gnd

("*", gərginliyi azaltmaq üçün potensial bölücü istifadə etmək deməkdir. Arduino müstəqil bir təchizatdan 3V3 -də işləyirsə, rezistorlara ehtiyacınız olmayacaq.)

3.3V Nano tərəfindən çıxarıldı və LCD üçün kifayət qədər cərəyan təmin edə bilər. (Ekran təxminən 250 uA çəkir.)

5V də Nano tərəfindən istehsal olunur və arxa işığı gücləndirmək üçün istifadə edilə bilər. 100 ohm rezistorla cərəyanı arxa işığa məhdudlaşdırın.

Nano'da sancaqlar çatışmırsa, RST -ni 3V3 -ə qoşa bilərsiniz - o zaman başqa bir şey üçün D6 -dan istifadə edə bilərsiniz. U1701, SPI üzərindəki bir əmr ilə proqramda sıfırlana bilər. Bununla heç vaxt problem yaşamamışam, ancaq səs -küylü bir mühitdə öz dövrənizi istifadə edirsinizsə, hardware sıfırlamasından istifadə etmək daha yaxşı olar.

Addım 3: Proqram təminatı

Proqram təminatı
Proqram təminatı

Teorik olaraq, UC1701 -i U8g2 kitabxanasından (və ya Ucglib və ya digər kitabxanalardan) idarə edə bilərsiniz. İşləmək üçün günlərlə mübarizə apardım və uğursuz oldum. U8g2 kitabxanası bir canavardır, çünki çox sayda çip sürə bilir və kodu izləmək çox çətindir. Buna görə imtina etdim və öz kiçik kitabxanamı yazdım. Arduino -da daha az yer tutur (təxminən 3400 bayt və şriftlər).

Kitabxanamı buradan yükləyə bilərsiniz (bu səhifədəki Yükləmə düyməsi). Nümunə eskiz və istifadəçi təlimatı daxil edilmişdir. Https://www.arduino.cc/en/Guide/Libraries veb səhifəsi kitabxananın necə idxal olunacağını təsvir edir; ".zip Kitabxanasını İdxal Et" bölməsinə keçin.

LCD -ni işə salın

UC1701Begin ();

UC1701Begin, pinləri dəyişdirmək və ya RST pininə məhəl qoymamaq üçün parametrlər götürə bilər. Kitabxana yalnız hardware SPI -dən istifadə edir (bir proqram SPI təmin edilmir). Ekranı x və y oxlarında çevirmək olar. LCD -ni fərqli bir istiqamətə bağlamaq istəyirsinizsə bu faydalıdır.

U8g2 kitabxanasından bir neçə prosedur təkrarlandı:

  • DrawLine
  • DrawPixel
  • DrawHLine
  • DrawVLine
  • DrawBox
  • DrawFrame
  • DrawCircle
  • DrawDisc
  • DrawFilledEllipse
  • DrawEllipse
  • DrawTriangle
  • UC1701 SetCursor
  • UC1701 Təmiz Ekran

Bəzi prosedurlar bir az fərqlidir:

  • etibarsız DrawChar (uint8_t c, söz Fontu);
  • etibarsız DrawString (char * s, Font word);
  • etibarsız DrawInt (int i, söz Fontu);

String rəsm prosedurları Şrift indeksindən keçir. Şriftlər Arduino flash yaddaşında elan olunduğundan qiymətli SRAM -ı tutmurlar. Üç şrift təqdim olunur (kiçik, orta və böyük). Flaş yaddaşdan istifadə edirsinizsə, yalnız əlaqələndirilir və tutur (hər biri təxminən 500-2000 bayt).

"Rəng" U8g2 kitabxanasından fərqli olaraq işlənir. LCD silindikdə qaranlıq bir fon var. MakeMark (qlobal dəyişən) doğru olarsa, rəsm ağ rəngdə aparılır. MakeMark yalan olarsa, rəsm qaranlıqda aparılır.

Bəzi prosedurlar UC1701 -ə xasdır:

SetInverted ağ-qara deyil, ağ-qara rəngdə çəkir.

boş SetInverted (bool inv);

UC1701 -in parlaqlığı və kontrastı aşağıdakılar tərəfindən müəyyən edilir:

  • boş SetContrast (uint8_t dəyəri); // təklif 14 -dir
  • boş SetResistor (uint8_t dəyəri); // təklif olunan 7 -dir

Birlikdə olduqca qeyri -qənaətbəxş bir şəkildə işləyirlər.

SetEnabled LCD -ni aşağı salır:

vahid SetEnabled (bool en);

Yatarkən ekran 4uA çəkir. Arxa işığı da söndürməlisiniz - onu Nano pinindən çıxarın. Yenidən aktivləşdirildikdən sonra UC1701 sıfırlanacaq; ekran silinir və Kontrast və Rezistor standart dəyərlərinə qaytarılacaq.

Nəticədə, COG displeyləri ucuz və layiqli ölçüdədir. Arduinoya qoşulmaq asandır.

Tövsiyə: