Talaan ng mga Nilalaman:

LCD COG para sa isang Arduino Nano: 3 Hakbang
LCD COG para sa isang Arduino Nano: 3 Hakbang

Video: LCD COG para sa isang Arduino Nano: 3 Hakbang

Video: LCD COG para sa isang Arduino Nano: 3 Hakbang
Video: How to Check SMD Resistors Good or Bad 2024, Hulyo
Anonim
LCD COG para sa isang Arduino Nano
LCD COG para sa isang Arduino Nano

Inilalarawan ng Tagubilin na ito kung paano gumamit ng isang COG LCD sa isang Arduino Nano.

Ang mga pagpapakita ng COG LCD ay mura ngunit medyo mahirap na mag-interface. (Ang COG ay nangangahulugang "Chip On Glass".) Ang ginagamit ko ay naglalaman ng isang chip ng driver ng UC1701. Nangangailangan lamang ito ng 4 na mga pin ng Arduino: SPI-clock, SPI-data, chip-select at command / data.

Ang UC1701 ay kinokontrol ng SPI bus at tumatakbo sa 3.3V.

Narito ako nag-decribe kung paano ito gamitin sa isang Arduino Nano. Dapat din itong gumana sa isang Arduino Mini o Uno - susubukan ko ito sa lalong madaling panahon.

Ito ang aking unang proyekto ng Arduino at hindi ko nasusulat ang C sa mga dekada kaya kung gumawa ako ng anumang halatang pagkakamali, mangyaring ipaalam sa akin.

Hakbang 1: Pagbuo ng Hardware

Pagbuo ng Hardware
Pagbuo ng Hardware
Pagbuo ng Hardware
Pagbuo ng Hardware
Pagbuo ng Hardware
Pagbuo ng Hardware

Bumili ng isang COG LCD na naglalaman ng isang chip ng UC1701. Dapat itong gumagamit ng SPI bus sa halip na isang parallel interface. Magkakaroon ito ng humigit-kumulang na 14 na mga pin na kung saan ay may label na may mga pangalan tulad ng nakalista sa ibaba. (Hindi mo nais ang isang parallel interface na may maraming mga pin na may label na D0, D1, D2…)

Ang binili ko ay: https://www.ebay.co.uk/itm/132138390168 O maaari kang maghanap sa eBay para sa "12864 LCD COG".

Pumili ng isa na may isang malawak na buntot na may mga puwang na spaced sa 1.27mm - ang mga pinong pinong ay mahirap na maghinang. Tiyaking mayroon itong chip na UC1701. Pansinin kung paano sa ikaanim na larawan sa pahina ng ebay, sinasabi nito na "CONNECTOR: COG / UC1701".

Ang display ay transparent at mahirap malaman kung alin ang harap at likod. Pag-aralan mong mabuti ang aking mga larawan. Pansinin kung nasaan ang mga pin 1 at 14 - minarkahan ang mga ito sa buntot.

Ang nababaluktot na buntot ay medyo madaling maghinang ngunit nangangailangan ito ng isang adapter upang mai-plug mo ito sa isang breadboard. Bumili ako: https://www.ebay.co.uk/itm/132166865767 O maaari kang maghanap sa eBay para sa "Adapter Smd SSOP28 DIP28".

Ang adapter ay tumatagal ng isang 28-pin SOP chip sa isang gilid o isang 28-pin SSOP chip sa kabilang panig. Ang isang SOP chip ay may pin spacing na 0.05 (1.27mm) na kapareho ng buntot ng LCD.

Kakailanganin mo rin ang ilang mga header pin. Tuwing bibili ako ng isang Arduino o iba pang module, ito ay may kasamang mas maraming mga header pin kaysa sa kinakailangan kaya marahil mayroon ka na. Kung hindi man, maghanap sa eBay para sa "2.54mm mga header pin".

Ang panghinang 14 ng mga pin ng header papunta sa adapter. Huwag itulak ang lahat sa kanila - mas maganda kung ang likod ng adapter ay patag. Ilagay ito nang patag sa iyong bangko upang ang mga pin ay hindi maitulak nang napakalayo sa mga butas. Tiyaking ang mga pin ay nasa gilid ng SOP ng board (ibig sabihin, ang mas malaking maliit na maliit na tilad).

Ang mga pad ng buntot ay nasa isang uri ng window. Tin ang magkabilang panig ng mga ito na may panghinang. Tin ang pads ng adapter. Hawakan ang buntot ng adapter sa lugar pagkatapos ay hawakan ang bawat pad gamit ang soldering iron (kakailanganin mo ng isang medyo pinong tip).

Itali ang ilang mga thread sa pamamagitan ng mga butas sa adapter upang kumilos bilang kaluwagan. (Gumamit ako ng "transformer wire").

Kung hinihinang mo ito sa maling paraan, huwag subukang alisin ang buntot. Alisin ang mga pin nang paisa-isa at ilipat ang mga ito sa kabilang panig ng pisara. (Oo, nakagawa ako ng pagkakamali na iyon at muling hinang ang buntot na dahilan kung bakit medyo gulo ito sa larawan.)

Hakbang 2: Kumokonekta sa Arduino

Kumokonekta sa Arduino
Kumokonekta sa Arduino
Kumokonekta sa Arduino
Kumokonekta sa Arduino

Ipinapaliwanag ng seksyong ito kung paano kumonekta sa isang Arduino Nano. Ito ay magiging halos kapareho para sa isang Mini o Uno ngunit hindi ko pa ito nasubukan.

Pag-aralan ang diagram ng circuit.

Ang isang Arduino Nano na konektado sa isang USB port ay tumatakbo sa 5V. Ang LCD ay tumatakbo sa 3.3V. Kaya kailangan mong i-power ang LCD mula sa 3V3 pin ng Nano at upang mabawasan ang boltahe sa bawat control pin mula 5V hanggang 3.3V.

Ang pinout ng LCD ay:

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

Ang CS ay Chip-Select. Ito ay hinila pababa upang mapili (paganahin) ang UC1701 chip. (Maaaring tawagan ang CS na CS0 o En o katulad.)

Ang RST ay I-reset. Hinila ito pababa upang mai-reset ang maliit na tilad. (Maaaring tawaging I-reset ang RST.)

Ang CD ay utos / data. Ito ay hinila pababa kapag nagpapadala ng mga utos sa maliit na tilad sa SPI. Mataas ito kapag nagpapadala ng data. (Ang CD ay maaaring tawaging A0.)

Ang CLK at SDA ay ang mga SPI bus pin. (Ang SDA ay maaaring tawaging SPI-Data. Ang CLK ay maaaring SCL o SPI-Clock.)

Ang VB0 + at VB0- ay ginagamit ng internal charge pump ng UC1701. Bumubuo ang singil na bomba ng mga kakaibang boltahe na kinakailangan ng LCD. Ikonekta ang isang 100n capacitor sa pagitan ng VB0 + at VB0-. Inirekomenda ng dokumentasyon ng UC1701 ang 2uF ngunit hindi ko makita ang pagkakaiba sa partikular na LCD na ito.

Kung ang iyong LCD ay may VB1 + at VB1- pin, ikonekta din ang isang 100n capacitor sa pagitan nila. (Kung ang iyong LCD ay may isang VLCD pin, maaari mong subukang ikonekta ang isang 100n capacitor sa pagitan ng VLCD at Gnd. Wala itong pagkakaiba sa aking LCD.)

Ikonekta ang LCD sa Nano tulad ng sumusunod:

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

("*" ay nangangahulugang gumamit ng isang potensyal na divider upang mabawasan ang boltahe. Kung ang Arduino ay tumatakbo sa 3V3 mula sa isang independiyenteng supply, hindi mo kakailanganin ang mga resistors.)

Ang 3.3V ay output ng Nano at maaaring magbigay ng sapat na kasalukuyang para sa LCD. (Ang display ay kumukuha sa paligid ng 250uA.)

Ang 5V ay output din ng Nano at maaaring magamit upang magaan ang backlight. Limitahan ang kasalukuyang sa backlight na may isang risistor na 100ohm.

Kung nagpapatakbo ka ng maikling mga pin sa Nano, maaari mong ikonekta ang RST sa 3V3 - pagkatapos ay maaari mong gamitin ang D6 para sa iba pa. Ang U1701 ay maaaring i-reset sa software sa pamamagitan ng isang utos sa SPI. Hindi ako nagkaroon ng anumang problema sa iyon ngunit kung gumagamit ka ng iyong sariling circuit sa isang maingay na kapaligiran, maaaring mas mahusay na gumamit ng isang pag-reset ng hardware.

Hakbang 3: Software

Software
Software

Sa teorya, maaari mong himukin ang UC1701 mula sa U8g2 library (o Ucglib o iba pang mga aklatan na magagamit). Nagpumiglas ako ng ilang araw upang maisagawa ito at mabigo. Ang silid-aklatan ng U8g2 ay isang halimaw dahil maaari itong maghimok ng isang iba't ibang mga chips at napakahirap sundin ang code. Kaya't sumuko ako at sumulat ng sarili kong maliit na silid-aklatan. Tumatagal ng mas kaunting puwang sa Arduino (tinatayang 3400 bytes kasama ang mga font).

Maaari mong i-download ang aking library mula dito (ang pindutang Mag-download sa pahinang ito). Ang isang sample na sketch at isang gabay ng gumagamit ay kasama. Inilalarawan ng web page https://www.arduino.cc/en/Guide/Libraries kung paano mag-import ng isang silid-aklatan; pumunta sa seksyong "Pag-import ng isang.zip Library".

Ipasimula ang LCD sa

UC1701Begin ();

Maaaring kumuha ng mga parameter ang UC1701Begin upang baguhin ang mga pin o upang balewalain ang RST pin. Gumagamit lamang ang library ng hardware SPI (hindi ibinigay ang isang software SPI). Ang display ay maaaring baligtad sa x at y axes. Kapaki-pakinabang iyon kung nais mong i-mount ang LCD sa ibang oryentasyon.

Maraming mga pamamaraan ang na-duplicate mula sa U8g2 library:

  • DrawLine
  • DrawPixel
  • Iguhit angHLine
  • Iguhit angVLine
  • DrawBox
  • DrawFrame
  • DrawCircle
  • Iguhit ang Diskusyon
  • DrawFilledEllipse
  • Iguhit angEllipse
  • DrawTriangle
  • UC1701SetCursor
  • UC1701ClearDisplay

Ang ilang mga pamamaraan ay bahagyang naiiba:

  • walang bisa ang DrawChar (uint8_t c, salitang Font);
  • walang bisa ang DrawString (char * s, word Font);
  • walang bisa ang DrawInt (int i, salitang Font);

Ang mga pamamaraan ng pagguhit ng string ay naipasa ang index ng isang Font. Ang mga font ay idineklara sa flash memory ng Arduino kaya't hindi nila sinasakop ang mahalagang SRAM. Tatlong mga font ang ibinigay (maliit, katamtaman at malaki). Naka-link lamang sila at sakupin ang memorya ng flash kung gagamitin mo ang mga ito (tinatayang 500 hanggang 2000 bytes bawat isa).

Ang "Kulay" ay hawakan nang naiiba mula sa U8g2 library. Kapag na-clear ang LCD mayroon itong madilim na background. Kung ang MakeMark (isang pandaigdigang variable) ay totoo, ang pagguhit ay ginagawa sa puti. Kung ang MakeMark ay hindi totoo, ang pagguhit ay tapos na sa madilim.

Ang ilang mga pamamaraan ay natatangi sa UC1701:

Ang SetInverted ay gumuhit ng black-on-white kaysa sa white-on-black.

walang bisa ang SetInverted (bool inv);

Ang ningning at kaibahan ng UC1701 ay itinakda ng:

  • walang bisa ang SetContrast (uint8_t halaga); // iminungkahi ay 14
  • walang bisa ang SetResistor (uint8_t halaga); // iminungkahi ay 7

Nagtutulungan sila sa isang medyo hindi kasiya-siyang paraan.

Ang mga kapangyarihan ng SetEnabled ay bumaba sa LCD:

walang bisa ang SetEnabled (bool en);

Ang display ay tumatagal ng 4uA kapag natutulog. Dapat mo ring patayin ang backlight - itaboy ito mula sa isang pin ng Nano. Pagkatapos muling paganahin, ang UC1701 ay mare-reset; ang display ay na-clear at ang Contrast at Resistor ay nai-reset sa kanilang mga default na halaga.

Kaya, bilang konklusyon, ang mga ipinapakita ng COG ay mura at disenteng laki. Madali silang kumonekta sa isang Arduino.

Inirerekumendang: