İçindekiler:

Arduino Nano için LCD COG: 3 Adım
Arduino Nano için LCD COG: 3 Adım

Video: Arduino Nano için LCD COG: 3 Adım

Video: Arduino Nano için LCD COG: 3 Adım
Video: Arduino LCD Ekran Kullanımı | I2C modüllü 2x16 LCD Ekran 2024, Temmuz
Anonim
Arduino Nano için LCD COG
Arduino Nano için LCD COG

Bu Eğitim Tablosu, bir COG LCD'nin Arduino Nano ile nasıl kullanılacağını açıklar.

COG LCD ekranlar ucuzdur ancak arayüz oluşturması biraz daha zordur. (COG, "Cam On Chip" anlamına gelir.) Kullandığım, bir UC1701 sürücü yongası içeriyor. Arduino'nun sadece 4 pinine ihtiyaç duyar: SPI-clock, SPI-data, chip-select ve komut/veri.

UC1701, SPI veri yolu tarafından kontrol edilir ve 3.3V'de çalışır.

Burada Arduino Nano ile nasıl kullanılacağını anlatıyorum. Ayrıca bir Arduino Mini veya Uno ile de çalışması gerekir - yakında deneyeceğim.

Bu benim ilk Arduino projem ve onlarca yıldır C yazmadım, bu yüzden bariz bir hata yapıyorsam lütfen bana bildirin.

Adım 1: Donanımı Oluşturma

Donanımı İnşa Etme
Donanımı İnşa Etme
Donanımı İnşa Etme
Donanımı İnşa Etme
Donanımı İnşa Etme
Donanımı İnşa Etme

UC1701 çipi içeren bir COG LCD satın alın. Paralel bir arabirim yerine SPI veri yolunu kullanıyor olmalıdır. Aşağıda listelenenler gibi isimlerle etiketlenecek yaklaşık 14 pime sahip olacaktır. (D0, D1, D2… etiketli çok daha fazla pinli bir paralel arayüz istemezsiniz)

Satın aldığım ürün: https://www.ebay.co.uk/itm/132138390168 Veya eBay'de "12864 LCD COG" için arama yapabilirsiniz.

1.27 mm aralıklı pimlerle oldukça geniş bir kuyruğa sahip olanı seçin - daha ince pimleri lehimlemek zor olacaktır. Bir UC1701 çipine sahip olduğundan emin olun. Ebay sayfasındaki altıncı resimde "CONNECTOR: COG/UC1701" yazdığına dikkat edin.

Ekran şeffaf ve hangisinin ön ve arka olduğunu bilmek zor. Resimlerimi dikkatlice inceleyin. 1 ve 14 numaralı pimlerin nerede olduğuna dikkat edin - kuyrukta işaretlenmiştir.

Esnek kuyruğun lehimlenmesi oldukça kolaydır ancak bir adaptör gerektirir, böylece onu bir devre tahtasına takabilirsiniz. Satın aldım: https://www.ebay.co.uk/itm/132166865767 Veya eBay'de "Adaptör Smd SSOP28 DIP28" için arama yapabilirsiniz.

Adaptör, bir tarafta 28 pinli bir SOP çipi veya diğer tarafta 28 pinli bir SSOP çipi alır. Bir SOP yongası, LCD'nin kuyruğu ile aynı olan 0,05 (1,27 mm) pin aralığına sahiptir.

Ayrıca bazı başlık pinlerine de ihtiyacınız olacak. Ne zaman bir Arduino veya başka bir modül satın alsam, ihtiyaç duyulandan daha fazla başlık pini ile birlikte gelir, bu yüzden muhtemelen zaten sahip olmuşsunuzdur. Aksi takdirde, "2,54 mm başlık pimleri" için eBay'i arayın.

Başlık pimlerinin 14'ünü adaptöre lehimleyin. Onları sonuna kadar itmeyin - adaptörün arkasının düz olması daha iyidir. Pimlerin deliklere çok fazla itilmemesi için tezgahın üzerine düz bir şekilde koyun. Pimlerin kartın SOP tarafında olduğundan emin olun (yani daha büyük çip).

Kuyruğun yastıkları bir çeşit pencerededir. Her iki tarafını da lehimle kalaylayın. Adaptörün pedlerini kalaylayın. Adaptörün ucunu yerinde tutun ve ardından her bir pede havya ile dokunun (oldukça ince bir uca ihtiyacınız olacak).

Gerginliği azaltmak için adaptördeki deliklerden biraz iplik geçirin. ("Transformatör teli" kullandım).

Yanlış şekilde lehimlerseniz, kuyruğu çözmeye çalışmayın. Pimleri birer birer çıkarın ve tahtanın diğer tarafına taşıyın. (Evet, bu hatayı yaptım ve kuyruğu yeniden lehimledim, bu yüzden fotoğrafta biraz karışıklık var.)

Adım 2: Arduino'ya Bağlanma

Arduino'ya bağlanma
Arduino'ya bağlanma
Arduino'ya bağlanma
Arduino'ya bağlanma

Bu bölüm bir Arduino Nano'ya nasıl bağlanılacağını açıklar. Mini veya Uno için çok benzer olacak ama henüz denemedim.

Devre şemasını inceleyin.

Bir USB bağlantı noktasına bağlı bir Arduino Nano, 5V'da çalışır. LCD 3.3V ile çalışır. Bu yüzden LCD'yi Nano'nun 3V3 pininden beslemeniz ve her kontrol pinindeki voltajı 5V'den 3.3V'a düşürmeniz gerekiyor.

LCD'nin pin çıkışı:

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

CS, Chip-Select'tir. UC1701 yongasını seçmek (etkinleştirmek) için aşağı çekilir. (CS, CS0 veya En veya benzeri olarak adlandırılabilir.)

RST Sıfırlanır. Çipi sıfırlamak için aşağı çekilir. (RST, Sıfırlama olarak adlandırılabilir.)

CD komut/veridir. SPI üzerinden çipe komut gönderirken aşağı çekilir. Veri gönderirken yüksek. (CD, A0 olarak adlandırılabilir.)

CLK ve SDA, SPI veri yolu pinleridir. (SDA, SPI-Data olarak adlandırılabilir. CLK, SCL veya SPI-Clock olabilir.)

VB0+ ve VB0-, UC1701'in dahili şarj pompası tarafından kullanılır. Şarj pompası, LCD'nin ihtiyaç duyduğu tek voltajları üretir. VB0+ ve VB0- arasına 100n'lik bir kapasitör bağlayın. UC1701 belgeleri 2uF'yi önerir ancak bu LCD ile bir fark göremedim.

LCD'nizde VB1+ ve VB1- pinleri varsa, aralarına 100n'lik bir kapasitör de bağlayın. (LCD'nizde VLCD pini varsa VLCD ile Gnd arasına 100n'lik bir kondansatör bağlamayı deneyebilirsiniz. Benim LCD'mde fark yaratmadı.)

LCD'yi Nano'ya aşağıdaki gibi bağlayın:

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

("*", voltajı azaltmak için potansiyel bir bölücü kullanmak anlamına gelir. Arduino bağımsız bir kaynaktan 3V3'te çalışıyorsa, dirençlere ihtiyacınız olmayacaktır.)

3.3V, Nano tarafından verilir ve LCD için yeterli akım sağlayabilir. (Ekran yaklaşık 250uA çeker.)

5V ayrıca Nano tarafından verilir ve arka ışığa güç vermek için kullanılabilir. Akımı 100ohm'luk bir dirençle arka ışıkla sınırlayın.

Nano'da pin sıkıntısı çekiyorsanız, RST'yi 3V3'e bağlayabilirsiniz - o zaman D6'yı başka bir şey için kullanabilirsiniz. U1701, SPI üzerindeki bir komutla yazılımda sıfırlanabilir. Bununla ilgili hiç sorun yaşamadım ama kendi devrenizi gürültülü bir ortamda kullanıyorsanız, donanım sıfırlaması kullanmak daha iyi olabilir.

3. Adım: Yazılım

Yazılım
Yazılım

Teoride, UC1701'i U8g2 kitaplığından (veya Ucglib veya mevcut diğer kitaplıklardan) çalıştırabilirsiniz. Çalıştırmak için günlerce uğraştım ve başarısız oldum. U8g2 kütüphanesi bir canavar çünkü çok çeşitli çipleri çalıştırabiliyor ve kodu takip etmek çok zor. Bu yüzden pes ettim ve kendi küçük kütüphanemi yazdım. Arduino'da çok daha az yer kaplar (yaklaşık 3400 bayt artı yazı tipleri).

Kütüphanemi buradan indirebilirsiniz (bu sayfadaki İndir düğmesi). Örnek bir çizim ve bir kullanım kılavuzu dahildir. https://www.arduino.cc/en/Guide/Libraries web sayfası bir kitaplığın nasıl içe aktarılacağını açıklar; ".zip Kitaplığını İçe Aktarma" bölümüne gidin.

LCD'yi şununla başlatın:

UC1701Başla();

UC1701Begin, pinleri değiştirmek veya RST pinini yok saymak için parametreler alabilir. Kitaplık yalnızca donanım SPI'sini kullanır (bir yazılım SPI'si sağlanmaz). Ekran x ve y eksenlerinde çevrilebilir. LCD'yi farklı bir yönde monte etmek istiyorsanız bu kullanışlıdır.

U8g2 kitaplığından birkaç prosedür kopyalandı:

  • Çizgi çiz
  • BeraberlikPiksel
  • BeraberlikHline
  • ÇizVLine
  • Beraberlik Kutusu
  • Çizim Çerçevesi
  • BeraberlikÇember
  • DrawDisc
  • BeraberlikDoluElips
  • BeraberlikElips
  • BeraberlikÜçgen
  • UC1701Setİmleç
  • UC1701NetEkran

Bazı prosedürler biraz farklıdır:

  • void DrawChar(uint8_t c, yazı tipi kelimesi);
  • void DrawString(char * s, word Font);
  • void DrawInt(int i, kelime Yazı Tipi);

Dize çizim prosedürleri bir Font dizininden geçirilir. Fontlar, Arduino'nun flash belleğinde bildirilir, böylece değerli SRAM'ı işgal etmezler. Üç yazı tipi sağlanır (küçük, orta ve büyük). Yalnızca, bunları kullanırsanız bağlanırlar ve flash bellekte yer kaplarlar (her biri yaklaşık 500 ila 2000 bayt).

"Renk", U8g2 kitaplığından farklı şekilde işlenir. LCD temizlendiğinde koyu bir arka plana sahiptir. MakeMark (global bir değişken) true ise çizim beyaz yapılır. MakeMark false ise çizim karanlıkta yapılır.

Bazı prosedürler UC1701'e özgüdür:

SetInverted, siyah üzerine beyaz yerine beyaz üzerine siyah çizer.

geçersiz SetInverted(bool inv);

UC1701'in parlaklık ve kontrastı şu şekilde belirlenir:

  • geçersiz SetContrast(uint8_t değeri); // önerilen 14
  • void SetResistor(uint8_t değeri); // önerilen 7

Birlikte oldukça tatmin edici olmayan bir şekilde çalışırlar.

SetEnabled LCD'yi kapatır:

geçersiz SetEnabled(bool en);

Uyurken ekran 4uA alır. Ayrıca arka ışığı da kapatmalısınız - Nano'nun bir piminden sürün. Yeniden etkinleştirdikten sonra UC1701 sıfırlanmış olacaktır; ekran temizlenir ve Kontrast ve Direnç varsayılan değerlerine sıfırlanır.

Sonuç olarak, COG ekranları ucuz ve iyi bir boyutta. Arduino'ya bağlanmak kolaydır.

Önerilen: