Mündəricat:

LCD Ekran və Arduino Uno ilə Tablosuna Klaviatura: 9 Addım
LCD Ekran və Arduino Uno ilə Tablosuna Klaviatura: 9 Addım

Video: LCD Ekran və Arduino Uno ilə Tablosuna Klaviatura: 9 Addım

Video: LCD Ekran və Arduino Uno ilə Tablosuna Klaviatura: 9 Addım
Video: DVD 7-сегментный светодиодный дисплей и мембранная клавиатура 4x4 с Arduino Nano 2024, Noyabr
Anonim
Image
Image
LCD Ekran və Arduino Uno ilə Tablosuna Klaviatura
LCD Ekran və Arduino Uno ilə Tablosuna Klaviatura
LCD Ekran və Arduino Uno ilə Tablosuna Klaviatura
LCD Ekran və Arduino Uno ilə Tablosuna Klaviatura

Bu, LCD displey və Arduino Uno ilə birlikdə işləyən bir matris klaviaturadır, bu gün mövcud olan ən əsasdır. Bu quraşdırmanın məqsədi, matris klaviaturasında yazılmış bir parol alan, onu düzgün parolla müqayisə edən və ekranda bir təsdiq mesajı göstərən bir proqram yaratmaqdır.

Həm matris klaviaturasının, həm də bu ekranın ESP8266 və ESP32 ilə işlədiyini xatırlamaq vacibdir.

Gördüyünüz kimi, xarici bir mənbədən istifadə etmədiyimiz üçün dövrə USB ilə Arduino ilə təchiz edirik. Arduino limanlarına çox sadə bir şəkildə bağlanan səkkiz tel klaviaturamızın əlaqəsini təmin edir. Bu klaviatura heç bir gücə malik deyil və əlaqələri xeyli asanlaşdıran passivdir.

Ekran Arduino ilə UART vasitəsilə əlaqələndirilir, bu da cihazı gücləndirir.

Bir nümayiş olaraq, videoda klaviaturada yazılan parolun düzgün olub olmadığını yoxlayan dövranımızı göstəririk.

Videoda istifadə olunan və burada mövcud olan PDF -də, istifadə olunan çipin tam pinoutuna sahibik.

Addım 1: Serial Ekran

Serial Ekran
Serial Ekran
Serial Ekran
Serial Ekran

Bu, TXRX ilə RS olan UART ilə əlaqə quran serial ekrandır. I2C versiyalarında da mövcuddur, lakin digər modellər qarşıdakı montaj üçün qalacaq. Bu vəziyyətdə, bu ekran UART tərəfindən RS tərəfindən işləyir.

Addım 2: Matrix Klaviatura

Matrix klaviatura
Matrix klaviatura

İstifadə etdiyimiz matris klaviatura nümunəsi fotoşəkildir və sağ tərəfdədir. Bunun necə işlədiyini göstərən bir diaqramımız var. Əslində yalnız 4x4 xəttdən ibarətdir. Beləliklə, minimum miqdarda tel istifadə edir; hər satır və sütun üçün bir tel, beləliklə cəmi səkkiz tel var.

Gücə ehtiyac yoxdur, çünki aşağıdakı kimi işləyir: 7 -yə basıldıqda klaviatura 7 -ni götürür və alqoritmi avtomatik olaraq tarayaraq identifikasiyanı mümkün edən xəttə və sütuna qoşulur.

Dot matrix olan hər hansı bir 4x4 klaviaturanın bu montajda işləyəcəyini xatırlamaq vacibdir.

Addım 3: Montaj

Məclis
Məclis

Ümumi sxemdə səkkiz teli birbaşa Arduino portlarına bağlayırıq, çünki klaviaturada heç bir güc yoxdur. Ekranda RS 232 siqnalı və müsbət və mənfi güc var. Arxa işıq hələ də mövcuddur, bu da artıq bağlıdır (BKL tərəfindən müəyyən edilir).

Addım 4: Mənbə Kodu

Bu layihənin mənbə koduna serial və klaviatura daxil etməlisiniz. Seriyalı proqram təminatı üçün lazım olan RX_PIN və TX_PIN dəstinə malikdir, eyni zamanda İNVERTED 1. Bu, ters çevrilmiş məntiqlə girişdən istifadə edən siqnalın gücləndirilməsi üçün altına yerləşdirilmişdir.

// biblioteca cavablar üçün ekran LCD ekran daxil edin #daxildir // biblioteca cavabları heç bir yerdə yoxlanılmamalıdır #daxil edin // SoftwareSerialda heç bir müqavilə sahibi yoxdur #RX_PIN 255 -i təyin edin. LCD displey #define TX_PIN 3 // Rx e Tx, LOW como YÜKSƏK və ya əksinə #tərif edin INVERTED 1

Addım 5: əmrləri göstərin

Əmr əmrləri
Əmr əmrləri

Əhəmiyyətli: Bu ekranda sadəcə bir sim qoymaq kifayət deyil. Nəzarət simvollarını göndərməlisiniz. PDF, bu ekranın təlimatına sahib olduğunuz saytın bağlantısını ehtiva edir. Ancaq başqa bir markanın seriyalı ekranına sahibsinizsə, bununla əlaqəli nəzarət kodlarına baxmaq yaxşıdır. Bu modeldə, məsələn, müəyyən bir nəzarət göndərdiyimizdə (məsələn, bu ekran üçün məlumatlar), ünsiyyəti təmin etmək üçün 254 nömrəli bir prefiks göndərməliyik.

İşləri asanlaşdırmaq üçün bir rəqəmsal indekslə əldə edilən dəyişənlər toplusu olan bir ARRAY qurduq. Bu ilkin konfiqurasiya olaraq ekrana göndəriləcək.

// hər hansı bir iş görmək üçün limconTela = {254, 1}; // rəsmi konfiqurasiya/ * 254, 254 və ya arxa işığı 254, 254, 253, 1 konfiqurasiya və ya 254, 13 düyməli konfiqurasiya * və const char configInicial = {254, 254, 254, 1, 254, 253, 1, 254, 13};

Addım 6: Klaviatura Əməliyyatı

Klaviatura necə işləyir? Birincisi, bir sıra bağlayır. Bu sıra, həqiqətən orada göstəriləcək xarakterdəndir. Beləliklə, bir X qoysam, yuxarıdakı ilk sol düyməni basdığımda göstərilir. Klaviaturanın məzmunu budur, əmr etdiyi budur.

Tərifə sahib olduğumuz digər şeylər, bu klaviaturanın ARRAY vəziyyətində 4 nömrəli sütun və 4 nömrəli sütundur. Hələ də Arduino sancaqları olan xətlərin pinləri və sütunun sancaqları var. Hələ də simvolu, pin, satır və sütun parametrləri olan xüsusi bir Keypad Keypad qurucumuz var.

const baytı LINHAS = 4; // nəhayət, baytar COLUNAS = 4; // nağıllar yığmaqla // SIMBOLOS [LINHAS] [COLUNAS] = {{'A', '1', '2', '3'}, { 'B', '4', '5', '6'}, {'C', '7', '8', '9'}, {'D', 'c', '0', 'e '}}; bayt PINOS_LINHA [LINHAS] = {8, 9, 10, 11}; // PINOS_COLUNA [COLUNAS] = {4, 5, 6, 7} baytlarının necə işlədiyini göstərir; // Klaviatura düymələri ilə əlaqəli məlumatlar göstərilir // Klaviatura, cavablar və ya xüsusi klaviatura düymələri üçün xüsusi düymələr Klaviatura = Keypad (makeKeymap (SIMBOLOS), PINOS_LINHA, PINOS_COLUNA, LINHAS, COLUNAS);

Addım 7: Şifrə Ayarı

Bu hissədə şifrəni təyin edirik və sonra boş bir sətir olan bir parol daxil etməliyik. Aşağıda softwareSerial nümunəsini qoyduq.

// dəyişən sətirlərin siyahısı kimi SENHA_ESPERADA = "1234ABCD"; SENHA_DIGITADA = "" sətri; // SoftwareSerial -ın komunik proqramları serial SoftwareSerial DisplaySerial = SoftwareSerial vasitəsilə göstər (RX_PIN, TX_PIN, INVERTED);

Addım 8: Quraşdırma

Quraşdırmaya gəldikdə, burada sürətlə əlaqəli displaySerial.begin (2, 400) var. Bizim vəziyyətimizdə bu, bir bayt göndərmək üçün kifayətdir. Bunun ardınca 700 millisaniyə gözləmə var. DisplaySerial.print'i (initialConfig) ilkin konfiqurasiyadan 10 milisaniyəlik yeni gecikmə ilə daxil edirik və başlanğıc funksiyasına keçirik. Başlat funksiyasında displaySerial.print ("parol:") qoyuruq.

void setup () {Serial.begin (2400); // komunikasiya üçün bir seriya açılır // 2400 displaySerial.begin (2400); // gecikmə göstərmə gecikməsi (700); // rəsmi olaraq DisplaySerial.print (configInicial) göstərmək üçün konfiqurasiya qurun; gecikmə (10); inicio (); } // funksiyaların cavablandırılması ilə bağlı məlumatların sayına və ya tarixinə görə cavab vermək lazımdır // bir neçə gündən sonra hər hansı bir rəqəmlə müqayisə oluna bilərsə, bir düyməni basmaq olar. void inicio () {displaySerial.print ("Senha:"); }

Addım 9: Döngə

Döngədə bir customKey = customKeypad.getKey () yaradırıq və ardıcıllıqla bir Switch əmri daxil edirik.

// CustomKey = customKeypad.getKey (); // düyməni basmaqla (customKey) {Serial.println (customKey); keçid (customKey) { /… /}}

Loop Switch 1 -ci hissə

Switch əmrinin içərisində: basıldığı təqdirdə çap edilə bilən düymələrin imkanlarının siyahısını göstərir və şifrəni artırır: customKey alır və daxil edilmiş şifrəni birləşdirir. Sonra, displaySerial.print (customKey) əsas məzmunu göstərir.

keçid (customKey) {// caso alguma das teclas instimíveis foi pressionada case 'A': case 'B': case 'C': case 'D': case '0': case '1': case '2': case '3': dava '4': dava '5': hal '6': hal '7': hal '8': hal '9': // bir -biri ilə əlaqə qurmaq SENHA_DIGITADA+= customKey; Serial.println (SENHA_DIGITADA); // ekran görüntüsünü göstərmək üçün DisplaySerial.print (customKey); fasilə;

Döngə keçid hissəsi 2

Bu kodda CLEAR düyməsinə basıldığı üçün bir ssenari göstəririk. C hərfini yazsanız və yazdığınız şifrəni saxlayan dəyişəni silsəniz, ekranı silmək əmrini çağırır və yenidən başlayır.

// CLEAR düyməsini basaraq "c" düyməsini sıxın: // bir neçə gündən sonra hər hansı bir rəqəmi yoxlayın SENHA_DIGITADA = ""; // telefonu göstərə biləcəyiniz haldaSerial.print (limparTela); // konfiqurasiya etmək üçün rəqəmsal parametrlər (); fasilə;

Döngə açarı 3 hissə

Başqa bir ehtimal E hərfini yazmağınızdır. Bu halda daxil edilmiş parol düzgün və ya səhv olarsa ekran təmizlənəcək və təhlil ediləcək. Sonra, 2 saniyəlik yeni bir gecikmə verəcəyik, ekranı siləcəyik, parol dəyişənini sıfırlayacağıq və əvvəldən qayıdacağıq.

// ENTER düyməsini basın və "e" ilə müqayisə edin: // bir tela displaySerial.print (limparTela); // bir ESPERADA ifa etmək lazımdırsa (SENHA_ESPERADA == SENHA_DIGITADA) {Serial.println ("Senha Correta!"); // senha correta displaySerial.print ("Senha Correta !!!"); } // caso senha esteja errada başqa {Serial.println ("Senha Incorreta!"); // senha incorreta displaySerial.print ("Senha Incorreta!"); } // tarix 2 gecəyə qədər gecikmə ilə əlaqədardır (2000); displaySerial.print (limparTela);

Tövsiyə: