Isi kandungan:

COG LCD untuk Arduino Nano: 3 Langkah
COG LCD untuk Arduino Nano: 3 Langkah

Video: COG LCD untuk Arduino Nano: 3 Langkah

Video: COG LCD untuk Arduino Nano: 3 Langkah
Video: Ternyata begini!!! cara mudah mengakses i2c lcd dengan Arduino 2024, Julai
Anonim
COG LCD untuk Arduino Nano
COG LCD untuk Arduino Nano

Instructable ini menerangkan cara menggunakan COG LCD dengan Arduino Nano.

Paparan COG LCD murah tetapi agak sukar untuk dihubungkan. (COG bermaksud "Chip On Glass".) Yang saya gunakan mengandungi cip pemacu UC1701. Ia hanya memerlukan 4 pin Arduino: jam SPI, data SPI, pilih cip dan arahan / data.

UC1701 dikendalikan oleh bas SPI dan berjalan pada 3.3V.

Di sini saya menjelaskan cara menggunakannya dengan Arduino Nano. Ia juga mesti berfungsi dengan Arduino Mini atau Uno - Saya akan mencubanya tidak lama lagi.

Ini adalah projek Arduino pertama saya dan saya tidak menulis C dalam beberapa dekad, jadi jika saya membuat kesilapan yang jelas, sila beritahu saya.

Langkah 1: Membina Perkakasan

Membina Perkakasan
Membina Perkakasan
Membina Perkakasan
Membina Perkakasan
Membina Perkakasan
Membina Perkakasan

Beli LCD COG yang mengandungi cip UC1701. Ia harus menggunakan bas SPI dan bukannya antara muka yang selari. Ia akan mempunyai sekitar 14 pin yang akan dilabelkan dengan nama seperti yang disenaraikan di bawah. (Anda tidak mahu antara muka yang selari dengan lebih banyak pin berlabel D0, D1, D2 …)

Yang saya beli ialah: https://www.ebay.co.uk/itm/132138390168 Atau anda boleh mencari di eBay untuk "12864 LCD COG".

Pilih satu yang mempunyai ekor yang agak lebar dengan pin pada jarak 1,27 mm - pin yang lebih halus sukar dipateri. Pastikan ia mempunyai cip UC1701. Perhatikan bagaimana dalam gambar keenam di halaman ebay, tertera "CONNECTOR: COG / UC1701".

Paparannya telus dan sukar untuk mengetahui bahagian depan dan belakang. Kaji gambar saya dengan teliti. Perhatikan di mana pin 1 dan 14 - mereka ditandakan di ekor.

Ekor yang fleksibel cukup mudah disolder tetapi memerlukan penyesuai sehingga anda boleh memasangkannya ke papan roti. Saya membeli: https://www.ebay.co.uk/itm/132166865767 Atau anda boleh mencari di eBay untuk "Adapter Smd SSOP28 DIP28".

Penyesuai mengambil cip SOP 28-pin di satu sisi atau cip SSOP 28-pin di sisi lain. Cip SOP mempunyai jarak pin 0,05 (1,27 mm) yang sama dengan ekor LCD.

Anda juga memerlukan beberapa pin pengepala. Setiap kali saya membeli Arduino atau modul lain, ia dilengkapi dengan pin header daripada yang diperlukan sehingga anda mungkin sudah mempunyai beberapa. Jika tidak, cari eBay untuk "pin header 2.54mm".

Solder 14 pin header ke penyesuai. Jangan tolak sepanjang jalan - lebih baik jika bahagian belakang penyesuai rata. Letakkannya rata di bangku anda sehingga pin tidak dapat ditolak terlalu jauh ke lubang. Pastikan pin berada di bahagian SOP papan (iaitu cip yang lebih besar).

Pembalut ekor berada di sejenis tingkap. Tin kedua sisi mereka dengan pateri. Tin pad penyesuai. Pegang ekor penyesuai di tempat kemudian sentuh setiap pad dengan besi pematerian (anda memerlukan hujung yang agak halus).

Ikat beberapa utas melalui lubang pada penyesuai untuk bertindak sebagai penahan regangan. (Saya menggunakan "wayar pengubah").

Sekiranya anda mengatasinya dengan cara yang salah, jangan cuba memecahkan ekornya. Keluarkan pin satu demi satu dan alihkan ke sisi papan yang lain. (Ya, saya membuat kesilapan itu dan menyisipkan semula ekornya. Itulah sebabnya ia sedikit merosakkan dalam foto.)

Langkah 2: Menyambung ke Arduino

Bersambung ke Arduino
Bersambung ke Arduino
Bersambung ke Arduino
Bersambung ke Arduino

Bahagian ini menerangkan cara menyambung ke Arduino Nano. Ia akan serupa dengan Mini atau Uno tetapi saya belum mencubanya.

Kaji rajah litar.

Arduino Nano yang disambungkan ke port USB berjalan pada 5V. LCD berjalan pada 3.3V. Oleh itu, anda perlu menghidupkan LCD dari pin 3V3 Nano dan mengurangkan voltan pada setiap pin kawalan dari 5V hingga 3.3V.

Lekapan LCD adalah:

  • 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 adalah Chip-Select. Ia ditarik rendah untuk memilih (mengaktifkan) cip UC1701. (CS mungkin disebut CS0 atau En atau yang serupa.)

RST adalah Tetapkan Semula. Ia ditarik rendah untuk menetapkan semula cip. (RST mungkin dipanggil Reset.)

CD adalah arahan / data. Ia ditarik rendah ketika menghantar arahan ke cip melalui SPI. Ia tinggi semasa menghantar data. (CD mungkin dipanggil A0.)

CLK dan SDA adalah pin bas SPI. (SDA mungkin disebut SPI-Data. CLK mungkin SCL atau SPI-Jam.)

VB0 + dan VB0- digunakan oleh pam cas dalaman UC1701. Pam pengecas menghasilkan voltan ganjil yang diperlukan oleh LCD. Sambungkan kapasitor 100n antara VB0 + dan VB0-. Dokumentasi UC1701 mengesyorkan 2uF tetapi saya tidak dapat melihat perbezaan dengan LCD ini.

Sekiranya LCD anda mempunyai pin VB1 + dan VB1-, sambungkan juga kapasitor 100n di antara keduanya. (Sekiranya LCD anda mempunyai pin VLCD, anda boleh mencuba menyambungkan kapasitor 100n antara VLCD dan Gnd. Tidak ada bezanya dengan LCD saya.)

Sambungkan LCD ke Nano seperti berikut:

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

("*" bermaksud menggunakan pembahagi berpotensi untuk mengurangkan voltan. Sekiranya Arduino berjalan pada 3V3 dari bekalan bebas, anda tidak memerlukan perintang.)

3.3V dihasilkan oleh Nano dan dapat memberikan arus yang mencukupi untuk LCD. (Paparan sekitar 250uA.)

5V juga dihasilkan oleh Nano dan dapat digunakan untuk menghidupkan lampu latar. Hadkan arus ke lampu belakang dengan perintang 100ohm.

Sekiranya anda kekurangan pin di Nano, anda boleh menyambungkan RST ke 3V3 - maka anda boleh menggunakan D6 untuk sesuatu yang lain. U1701 boleh diset semula dalam perisian dengan perintah pada SPI. Saya tidak pernah menghadapi masalah dengan itu, tetapi jika anda menggunakan litar sendiri dalam persekitaran yang bising, mungkin lebih baik menggunakan tetapan semula perkakasan.

Langkah 3: Perisian

Perisian
Perisian

Secara teori, anda boleh memandu UC1701 dari perpustakaan U8g2 (atau Ucglib atau perpustakaan lain yang ada). Saya bertungkus lumus berhari-hari untuk berjaya dan gagal. Perpustakaan U8g2 adalah raksasa kerana dapat memacu pelbagai jenis cip dan sangat sukar untuk mengikuti kodnya. Oleh itu, saya menyerah dan menulis perpustakaan saya yang lebih kecil. Dibutuhkan lebih sedikit ruang di Arduino (kira-kira 3400 byte ditambah fon).

Anda boleh memuat turun perpustakaan saya dari sini (butang Muat turun di halaman ini). Contoh lakaran dan panduan pengguna disertakan. Halaman web https://www.arduino.cc/en/Guide/Libraries menerangkan cara mengimport perpustakaan; pergi ke bahagian "Mengimport Perpustakaan.zip".

Permulaan LCD dengan

UC1701Begin ();

Permulaan UC1701 boleh mengambil parameter untuk menukar pin atau mengabaikan pin RST. Perpustakaan hanya menggunakan perkakasan SPI (perisian SPI tidak disediakan). Paparan boleh dibalik pada paksi x dan y. Itu berguna jika anda ingin memasang LCD dalam arah yang berbeza.

Beberapa prosedur telah diduplikasi dari perpustakaan U8g2:

  • DrawLine
  • DrawPixel
  • DrawHLine
  • DrawVLine
  • DrawBox
  • DrawFrame
  • Lukis Lingkaran
  • DrawDisc
  • DrawFilledEllipse
  • DrawEllipse
  • DrawTriangle
  • UC1701SetCursor
  • UC1701ClearDisplay

Beberapa prosedur sedikit berbeza:

  • batal DrawChar (uint8_t c, perkataan Font);
  • batal DrawString (char * s, word Font);
  • batal DrawInt (int i, perkataan Font);

Prosedur melukis rentetan dilewatkan indeks Font. Fon dinyatakan dalam memori kilat Arduino sehingga mereka tidak menggunakan SRAM yang berharga. Tiga fon disediakan (kecil, sederhana dan besar). Mereka hanya dihubungkan dan menggunakan memori flash jika anda menggunakannya (masing-masing sekitar 500 hingga 2000 bait).

"Warna" ditangani secara berbeza dari perpustakaan U8g2. Apabila LCD dibersihkan, ia mempunyai latar belakang gelap. Sekiranya MakeMark (pemboleh ubah global) benar, lukisan dilakukan dengan warna putih. Sekiranya MakeMark salah, gambar dilakukan dalam gelap.

Beberapa prosedur unik untuk UC1701:

Undian SetInvert dalam warna hitam-putih dan bukannya putih-hitam.

batal SetInverted (bool inv);

Kecerahan dan kontras UC1701 ditetapkan oleh:

  • batal SetContrast (nilai uint8_t); // dicadangkan ialah 14
  • batal SetResistor (nilai uint8_t); // dicadangkan ialah 7

Mereka bekerjasama dengan cara yang tidak memuaskan.

SetEnabled mematikan LCD:

batal SetEnabled (bool en);

Paparan mengambil 4uA ketika tidur. Anda juga harus mematikan lampu latar - pandu dari pin Nano. Setelah diaktifkan semula, UC1701 akan diset semula; paparan dibersihkan dan Kontras dan Perintang akan diset semula ke nilai lalai mereka.

Oleh itu, kesimpulannya, paparan COG adalah murah dan saiznya layak. Mereka mudah dihubungkan ke Arduino.

Disyorkan: