Mündəricat:

I2C Sırt Çantalı 1602 LCD Klaviatura Qalxan Modulu: 6 addım
I2C Sırt Çantalı 1602 LCD Klaviatura Qalxan Modulu: 6 addım

Video: I2C Sırt Çantalı 1602 LCD Klaviatura Qalxan Modulu: 6 addım

Video: I2C Sırt Çantalı 1602 LCD Klaviatura Qalxan Modulu: 6 addım
Video: Tüm Detaylarıyla Çok Kolay Ve Şık Sırt Çantası / Örgü Modelleri 2024, Noyabr
Anonim
I2C Sırt Çantası olan 1602 LCD Klaviatura Qalxan Modulu
I2C Sırt Çantası olan 1602 LCD Klaviatura Qalxan Modulu

Daha böyük bir layihənin bir hissəsi olaraq, LCD ekran və bəzi sadə menyularda naviqasiya üçün klaviatura sahibi olmaq istəyirdim. Digər işlərdə Arduino'da bir çox G/Ç portundan istifadə edəcəyəm, buna görə də LCD üçün I2C interfeysi istədim. Beləliklə, DFRobot -dan 1602 LCD Klaviatura ekran modulu və LCD üçün anonim I2C seriyalı moduldan ibarət bəzi avadanlıqlar aldım. Bunlardan Arduino Nano ilə istifadə etmək istəyirəm. Sonra gördüm ki, bu komponentlərin birlikdə işləməsi üçün bəzi çətinliklər var - amma mümkündür. Buna görə təcrübəmi bölüşmək və bəlkə də başqalarına kömək etmək istəyirəm.

Bu fotoşəkil, mesajları LCD -də göstərə və düymələrə basmağı təyin edə bilən işləyən çörək taxtasıdır. LCD, LCD arxa işıq da daxil olmaqla I2C interfeysi ilə idarə olunur. Açar düymələri Arduino tərəfindən A0 pinində qəbul edilir (I2C interfeysi üçün bağlanmış A4 və A5 istisna olmaqla, hər hansı bir analoq pin ola bilər).

Addım 1: Parçaların Təsviri - LCD Keypad Shield Modulu

Parçaların Təsviri - LCD Klaviatura Qalxan Modulu
Parçaların Təsviri - LCD Klaviatura Qalxan Modulu

LCD Klaviatura ekran modulu, düymələri tutan bir dövrə lövhəsinin üstünə quraşdırılmış və LCD əlaqələrinin bir hissəsini götürərək onları lövhənin altındakı başlıq pinlərinə təqdim edən 1602 LCD -dən ibarətdir. Anlayıram ki, bu lövhənin bir Arduino Uno və ya bənzərinin üstünə quraşdırılması nəzərdə tutulur və bu mühitdə işləməsi üçün düzgün pin düzeni təmin edir. Bu modulu Ebayda Çindəki bir satıcıdan aldım. Lövhənin aşağı (klaviatura) tərəfindəki başlıq pinləri əsasən etiketlidir, lakin yuxarı tərəfdəki LCD interfeys olan sancaqlar etiketlənmir. Bununla birlikdə, LCD -də olan pinlər etiketlidir.

Addım 2: Parçaların Təsviri - I2C Serial Modulu

Parçaların Təsviri - I2C Serial Modulu
Parçaların Təsviri - I2C Serial Modulu

Seriyalı modulda I2C üçün adi 4 pinli başlıq və başa düşdüyüm bir sıra etiketsiz başlıq pinləri birbaşa LCD modulunun altına qoşulmaq üçün nəzərdə tutulmuşdur. LCD üzərindəki etiketləri öyrənərək, serial moduldakı sancaqların funksiyalarını təyin edə bildim.

Bu modul, I2C protokolunu ləğv edən, ünvan nəzarəti üçün 3 sancağa (20 ilə 27 arasında) və P0 ilə P7 arasında 8 rəqəmsal giriş/çıxış pininə malik olan IC PCF8574T -ə əsaslanır. PCF8574T məlumat cədvəlinə görə, hər bir I/O pinində LOW vəziyyəti üçün yerə çəkmək üçün bir FET var və ən azı 20ma bata bilər. Yüksək vəziyyətdə, keçici aktiv bir çəkmə və sonra təxminən 0.1 mA davamlı bir çəkmə cərəyanına malikdir.

Bu modulda, P3 istisna olmaqla, bütün rəqəmsal G/Ç pinləri sadəcə başlıq pinlərinə çıxarılır (fotoşəkildə sağda). P3 vəziyyətində, bir tranzistorun bazasına bağlanır (fotoşəkildə sağ üst sahədə "LED" etiketinin altında görünür). Bu tranzistorun yayıcısı Vss (yerə) və kollektor LCD arxa işığını idarə etmək üçün istifadə edilə bilən başlıq pininə 16 bağlıdır. Transistor səbəbindən məntiq vəziyyəti proqram kitabxanasında qəbul edilənə nisbətən tərsinə çevrilir. Yəni, P3 pin aşağı olduqda LCD arxa işığı AÇIQ, P3 pin isə Yüksək olduqda söndürülür.

Transistordakı etiketdə L6 yazılır, bu da araşdırmama görə ehtimal ki onu minimum cərəyanı 200 olan MMBC1623L6 edir. 0.1 mA baza cərəyanı ilə kollektorunda LOW vəziyyətini saxlaya bilməlidir (Pin Pin 16) ən azı 20mA kollektor cərəyanı ilə.

Əlavə olaraq bu modulda +5 və Ground arasında əlaqəli 10K potansiyometr var, dəyişən qurğusu pin 3 -ə (fotoşəkildə aşağıdan üçüncü) çıxarılır. Birbaşa LCD -yə qoşulduqda, bu qazan LCD -nin kontrastını idarə edəcək. Bununla birlikdə, bu funksiya LCD qalxanında ayrı bir oxşar qazan tərəfindən təmin edildiyindən serial moduldakı bu qazanın heç bir funksiyası yoxdur.

PCF8574T -nin INT pininə heç bir əlaqə tapa bilmədim.

YENİLƏNİŞ 22 Avqust 2019

Yuxarıda qeyd edildiyi kimi, PCF8574 -də 3 ünvan nəzarət pimi var. Bunlar A0, A1 və A2 etiketli sırt çantasındakı yastiqciqlərə çıxarılır. Onları fotoda görmək olar. Bunu sınamamışam, amma bu pinlərdən birini və ya bir neçəsini bitişik yastiqciklərə bağlayaraq I2C ünvanını 20 ilə 27 aralığında idarə edə biləcəyinizə əminəm. PCF8574 ilə eyni funksiyaya malik olan, lakin 0x38 ilə 0x3F arasındakı ünvan aralığını əhatə edən PCF8574A.

Cihazınızın həqiqətən istifadə etdiyi ünvan I2CScanner ilə yoxlanıla bilər. Müxtəlif mənbələrdən əldə edilə bilən bir neçə sadə I2C skaneri var. Https://github.com/farmerkeith/I2CScanner ünvanındakı bu da tapılan bəzi cihazları müəyyən edir.

Addım 3: Bağlantılar

Əlaqələr
Əlaqələr

Aşağıda təsvir olunan əlaqələri əks etdirən Fritzing diaqramını təqdim edən ChaitanyaM17 sayəsində.

Güc:

LCD modulunun alt tərəfində "5.0V" etiketli bir pin var. Sağda, bitişik olaraq hər ikisi də torpaqlanmış iki etiketsiz sancaqdır.

Sol tərəfdə I2C interfeysi olan seriyalı modulu tutaraq, alt kənarında 16 pin var. Bunlardan birincisi torpaqdır, ikincisi isə +5v -dir. Başqa bir seçim, güc üçün I2C interfeysindəki aşağı iki sancağı istifadə etməkdir, amma yuxarıda təsvir edildiyi kimi pinləri istifadə etməyi daha rahat hesab etdim.

I2C interfeysi. Serial modulda, üst pin SCL (saat) və Arduino A5 -ə gedir. Aşağıdakı ikinci pin SDA (məlumat) və Arduino A4 -ə gedir.

LCD çap interfeysi. Serial modulu ilə LCD Klaviatura qalxanı arasında hər biri etiket olmayan pinlər arasında 6 əlaqə var. Onları LCD modulda ilk pinlə 1 -dən sağa -sola sayaraq tanıyacağam. 8 -in 2 bloku var, buna görə 1 -dən 16 -ya qədər gedirəm. I2C seriyalı modulda soldan saya qədər sayaraq tanıyıram. Düzdür, bunlardan 16 -sı da var. Əlavə olaraq, hər bir telə, ardıcıl modul olmadan birbaşa əlaqə olduqda, normal olaraq bu funksiya ilə əlaqəli olan Arduino -da ekvivalent pin olan bir etiket verirəm.

Beləliklə, 6 məlumat bağlantısı:

Arduino ekvivalenti // Serial modul pimi // LCD Klaviatura modulu pin

D4 // 11 // 5 D5 // 12 // 6 D6 // 13 // 7 D7 // 14 // 8 D8 // 4 // 9D9 // 6 // 10

LCD arxa işığa nəzarət: Bu daha bir əlaqə istifadə edir:

Arduino ekvivalenti // Serial modul pimi // LCD Klaviatura modulu pin

D10 // 16 // 11

Klaviatura interfeysi: Bunun alt tərəfindəki "A0" etiketli LCD modul pinindən bir tel istifadə edərək A0 -nu Arduino -ya bağlayın. Ən azından bu olduqca asan idi!

Addım 4: RST düyməsini digər 5 düymələrə bənzər hala gətirmək

RST birbaşa Arduino Nanonun RESTART girişinə qoşula bilər.

Ancaq RST düyməsinin başqa şeylər üçün proqramda istifadə olunmasını istəyirsinizsə, bu, LCD klaviatura qalxanının aşağı tərəfindəki RST pin və A0 pin arasında 15K müqavimət bağlayaraq edilə bilər.

Bu belə işləyir: +5V ilə Sağ düymə arasında 2K müqavimət var. Sonra digər düymələrin hər biri üçün tədricən daha böyük rezistorlar zənciri (YUKARI düyməsinə 330R, AŞAĞI düyməsinə 620R, SOL düyməsinə 1K və SEÇİM düyməsinə 3K3. Bütün düymələr (RST düyməsi daxil olmaqla) 10 bitlik A/D çeviriciyə qoşulduqda (Arduino Nano A0 -a gəldikdə) təxminən aşağıdakı dəyərləri verirlər:

Sağ = 0; Yuxarı = 100; Aşağı = 260; Sol = 410; Seçin = 640.

15 k müqavimət ilə RST, təxminən 850 verir.

Proqram, hansı düymənin basıldığına qərar vermək üçün bu dəyərlər arasındakı orta nöqtələr ətrafında dəyərlərdən istifadə edəcək.

Addım 5: Proqram təminatı

Faydalı proqram, əlbəttə ki, oxucu üçün bir məşqdir. Başlamaq üçün test proqramına baxa bilərsiniz. I2C interfeysi üçün dəstək olan NewLiquidCrystal kitabxanasından istifadə etdim. Kitabxanaları düzgün qurduqdan sonra hamısı işə yaradı.

Əsas işarə, Backlight OFF və ON əmrlərinin polaritesini dəyişdirmək idi (Parçaların Təsviri bölməsində izah edildiyi kimi I2C modulundakı tranzistor səbəbiylə).

YENİLƏNİŞ 22 Avqust 2019

LCD ekranın işləməməsi ilə bağlı probleminiz varsa, lütfən, I2C skanerindən istifadə edərək sırt çantanızın I2C ünvanını yoxlayın. Uyğun bir skaner əlavə olunur. Sonra lazım gələrsə ifadədəki ilk parametri düzəldin

LiquidCrystal_I2C lcd (0x27, 2, 1, 0, 4, 5, 6, 7);

Addım 6: Baxış və Müzakirə

Gördüyünüz kimi, əsas funksiyalar işləyir.

Növbəti niyyətim, bunu başqa bir layihənin bir hissəsi olaraq bir layihə qutusuna qoymaqdır. Ancaq bu yola çıxdıqdan sonra öyrənmədiyim başqa bir çətinliyin olduğunu öyrəndim.

Çətinlik, bu LCD Klaviatura modulunun bir qutuya quraşdırılması üçün qurulmamasıdır. Hər növ qutu. 6 düymənin düymələri LCD ekranın səviyyəsindən xeyli aşağıdadır, belə ki, əgər modul bir panelə (məsələn, qapağın içərisində) LCD elektron lövhənin üstü qapağın alt tərəfi ilə üst -üstə düşərsə, üstləri düymələr qapağın yuxarı hissəsindən təxminən 7 mm aşağıda yerləşir.

Mümkün həllər bunlardır:

a) Dözün. Qapaqdakı giriş deliklərini qazın və düymələrə basmaq üçün bir alət (məsələn, uyğun diametrli kəsilmiş toxuculuq iynəsi) istifadə edin.

b) LCD -ni modul devre kartından çıxarın və klaviaturada əməliyyat aparın ki, iki komponent müstəqil olaraq layihə qutusunun qapağına sabitlənsin (düymələrin çox qısa olması ilə bağlı hələ də problem ola bilər)

c) mövcud düymələri çıxarın və onları daha uzun düymələrlə əvəz edin. Yeni düymələr, layihə qutusunun qapağından idarə oluna bilməsi üçün təxminən 13 mm yüksəklikdə olmalıdır). Dəyişdirmə düymələri 13 mm daxil olmaqla bir çox yüksəklikdə mövcuddur.

d) LCD klaviatura ekran modulunu atın və ayrı LCD və klaviatura bölmələrindən istifadə edin (yəni yenidən başlayın). Çox sayda klaviatura vahidi mövcuddur, lakin bu modulda olduğu kimi eyni 6 düyməli plana malik birini görmədim (yəni Seç, Sol, Yuxarı, Aşağı, Sağ, Yenidən Başlat). Böyük bir problem olmaya bilər, amma bu moduldan başlamağımın səbəblərindən biri də bu açar planın istədiyim şey olduğunu düşünməyim idi.

C) yuxarıdakı həll yolu ilə getməyi və necə getdiyimi görməyi planlaşdırıram.

Maraqlı ola biləcək başqa bir məlumat parçası:

Arxa işıq yanarsa, bu layihənin cari istehlakı: Arduino Nano 21.5 ma; Seriya modulu 3.6 ma; LCD modulu 27.5 mA; Ümumi 52 mA.

Arxa işıq söndürüldükdə, bu layihənin cari istehlakı: Arduino Nano 21.5 ma; Seriya modulu 4.6 ma; LCD modulu 9.8 mA; Ümumi 36 mA.

Tövsiyə: