فهرست مطالب:

صفحه کلید داشبورد با صفحه نمایش LCD و Arduino Uno: 9 مرحله
صفحه کلید داشبورد با صفحه نمایش LCD و Arduino Uno: 9 مرحله

تصویری: صفحه کلید داشبورد با صفحه نمایش LCD و Arduino Uno: 9 مرحله

تصویری: صفحه کلید داشبورد با صفحه نمایش LCD و Arduino Uno: 9 مرحله
تصویری: 50 مبتکرانه ترین حمل و نقل شخصی 2021 - 2022 2024, نوامبر
Anonim
Image
Image
صفحه کلید داشبورد با صفحه نمایش LCD و Arduino Uno
صفحه کلید داشبورد با صفحه نمایش LCD و Arduino Uno
صفحه کلید داشبورد با صفحه نمایش LCD و Arduino Uno
صفحه کلید داشبورد با صفحه نمایش LCD و Arduino Uno

این صفحه کلید ماتریسی است که به همراه صفحه نمایش LCD و Arduino Uno کار می کند ، اصلی ترین چیزی که امروزه وجود دارد. هدف از این راه اندازی ایجاد برنامه ای است که رمز عبور تایپ شده روی صفحه کلید ماتریس را دریافت کرده ، آن را با رمز عبور صحیح مقایسه کرده و یک پیام تأیید بر روی صفحه نمایش دهد.

لازم به یادآوری است که هم صفحه کلید ماتریسی و هم این صفحه نمایش با ESP8266 و ESP32 کار می کنند.

همانطور که می بینید ، ما مدار را با آردوینو با USB تغذیه می کنیم ، زیرا از منبع خارجی استفاده نمی کنیم. هشت سیم که به روشی بسیار ساده به پورت های آردوینو متصل شده اند ، صفحه کلید ما را متصل می کند. این صفحه کلید قدرت ندارد و منفعل است ، که ارتباطات را بسیار تسهیل می کند.

صفحه نمایش با یک آردوینو از طریق UART ، پورت سریال ، که دستگاه را نیز تغذیه می کند ، متصل می شود.

در یک تظاهرات ، ما در ویدئو مدار خود را نشان می دهیم که در حال بررسی این است که آیا گذرواژه تایپ شده روی صفحه کلید صحیح است یا خیر.

در PDF استفاده شده در ویدئو و موجود در اینجا ، ما دارای پینت کامل تراشه مورد استفاده هستیم.

مرحله 1: نمایش سریال

نمایش سریال
نمایش سریال
نمایش سریال
نمایش سریال

این نمایشگر سریالی است که با UART که RS با TXRX است ارتباط برقرار می کند. همچنین در نسخه های I2C وجود دارد ، اما مدلهای دیگر برای مونتاژ آینده باقی می مانند. در این حالت ، این صفحه نمایش توسط UART by RS کار می کند.

مرحله 2: صفحه کلید ماتریس

صفحه کلید ماتریکس
صفحه کلید ماتریکس

مثال صفحه کلید ماتریسی که ما استفاده می کنیم همان عکس است و در سمت راست قرار دارد. ما یک نمودار داریم که نحوه کار آن را نشان می دهد. در واقع فقط 4 خط 4 خط دارد. بنابراین ، از حداقل مقدار سیم استفاده می کند. یک سیم برای هر سطر و ستون ، به طوری که در مجموع هشت سیم وجود دارد.

نیازی به برق ندارد زیرا به صورت زیر عمل می کند: وقتی 7 را فشار می دهید ، صفحه کلید 7 را برداشته و به خط و ستون متصل می شود ، که با اسکن خودکار الگوریتم امکان شناسایی را فراهم می کند.

مهم است که به خاطر داشته باشید که هر صفحه کلید 4x4 که ماتریس نقطه ای دارد در این مجموعه کار می کند.

مرحله 3: مونتاژ

مونتاژ
مونتاژ

در طرح کلی ، ما هشت سیم را مستقیماً به پورت های آردوینو وصل می کنیم ، زیرا صفحه کلید قدرت ندارد. در صفحه نمایش ، ما یک سیگنال RS 232 و قدرت مثبت و منفی داریم. نور پس زمینه هنوز وجود دارد ، که همچنین قبلاً متصل شده است (توسط BKL مشخص شده است).

مرحله 4: کد منبع

در سورس کد این پروژه باید سریال و صفحه کلید را وارد کنید. این مجموعه دارای یک RX_PIN و یک TX_PIN است که برای نرم افزار سریال لازم است ، و همچنین INVERTED 1. این در زیر قرار گرفته است تا سیگنالی را که از ورودی با منطق معکوس استفاده می کند تقویت کند.

// biblioteca responsável pela comunicação com o display LCD #include // biblioteca responsável برای ضبط یک تجربه که در آن فشار بیاورید بدون تجربه #شامل [// pino invalido apenas usado no contrutor do SoftwareSerial #define RX_PIN 255 // pino TX da nossa ligação Arduino نمایش LCD #تعریف TX_PIN 3 // inverte a lógica dos pinos Rx e Tx، tratando LOW como HIGH e برعکس #تعریف INVERTED 1

مرحله 5: نمایش دستورات

نمایش دستورات
نمایش دستورات

مهم: در این صفحه نمایش فقط قرار دادن یک رشته روی آن کافی نیست. شما باید کاراکترهای کنترل را ارسال کنید. PDF شامل پیوند سایتی است که در آن دفترچه راهنمای این صفحه نمایش را دارید. اما اگر شما یک سریال با نام تجاری دیگر دارید ، خوب است به کدهای کنترل آنها که مربوط به این موضوع است نگاه کنید. در این مدل ، به عنوان مثال ، هنگامی که ما کنترل خاصی را ارسال می کنیم (به عنوان مثال اطلاعات مربوط به این صفحه نمایش) ، برای فعال کردن ارتباط باید یک پیش شماره ، شماره 254 را ارسال کنیم.

بنابراین ما یک ARRAY برای تسهیل کارها راه اندازی کردیم که مجموعه ای از متغیرها است که با یک شاخص عددی به آنها دسترسی پیدا می کند. این به عنوان پیکربندی اولیه به صفحه نمایش ارسال می شود.

// comando para limpar toda a tela do displayconst char limparTela = {254، 1}؛ // comandos de configuração inicial/ * 254، 254 acende o backlight 254، 1 limpa a tela 254، 253، 1 configura o contraste em nível alto 254، 13 liga o cursor paraficar piscando */const char configInicial = {254، 254 ، 254 ، 1 ، 254 ، 253 ، 1 ، 254 ، 13} ؛

مرحله 6: عملکرد صفحه کلید

عملکرد صفحه کلید چگونه است؟ ابتدا یک آرایه را نصب می کند. این آرایه از شخصیتی است که در واقع در آنجا نمایش داده می شود. بنابراین اگر X را بگذارم ، وقتی اولین دکمه سمت چپ را در بالا فشار می دهم ، نمایش داده می شود. این محتوای صفحه کلید است ، همان چیزی است که دستور می دهد.

سایر مواردی که ما برای آنها تعریف کرده ایم ردیف شماره 4 و ستون شماره 4 در مورد ARRAY این صفحه کلید است. ما هنوز پین خطوط را داریم که پین های آردوینو هستند و پایه های ستون. ما هنوز یک سازنده صفحه کلید سفارشی با پارامترهای نماد ، پین ، سطر و ستون داریم.

const byte LINHAS = 4؛ // número de linhas do tecladoconst byte COLUNAS = 4؛ // número de colunas do teclado // define uma matriz com os símbolos que deseja ser lido do teclado char SIMBOLOS [LINHAS] [COLUNAS] = {{'A'، '1'، '2'، '3'}، { 'B' ، '4' ، '5' ، '6'} ، {'C' ، '7' ، '8' ، '9'} ، {'D' ، 'c' ، '0' ، 'e '}}؛ بایت PINOS_LINHA [LINHAS] = {8 ، 9 ، 10 ، 11} ؛ // pinos que indicam as linhas do teclado byte PINOS_COLUNA [COLUNAS] = {4، 5، 6، 7}؛ // pinos que indicam as colunas do teclado // instancia de Keypad ، پاسخگویی به منظور استفاده از یک صفحه کلید customKeypad = Keypad (makeKeymap (SIMBOLOS) ، PINOS_LINHA ، PINOS_COLUNA ، LINHAS ، COLUNAS) ؛

مرحله 7: تنظیم رمز عبور

در این قسمت ، رمز عبور را تعریف می کنیم و سپس باید یک رمز عبور وارد کنیم که یک رشته خالی است. در زیر ، نمونه ای از softwareSerial را قرار می دهیم.

// variáveis resposnsáveis por armazenar as senhasconst String SENHA_ESPERADA = "1234ABCD"؛ رشته SENHA_DIGITADA = ""؛ // instancia de SoftwareSerial para nos comunicar com o نمایش از طریق سریال SoftwareSerial displaySerial = SoftwareSerial (RX_PIN ، TX_PIN ، INVERTED) ؛

مرحله 8: راه اندازی

در مورد Setup ، اینجا displaySerial.begin (2 ، 400) است که در مورد سرعت است. در مورد ما ، این برای ارسال یک بایت کافی است. به دنبال آن ، انتظار 700 میلی ثانیه وجود دارد. ما displaySerial.print (initialConfig) را از پیکربندی اولیه با تأخیر جدید 10 میلی ثانیه شامل می کنیم و به تابع شروع می رویم. در تابع شروع ، displaySerial.print ("رمز عبور:") را قرار می دهیم.

void setup () {Serial.begin (2400)؛ // inicializando a serial de comunicação com o display // importante baud rate ser 2400 displaySerial.begin (2400)؛ // tempo de espera pela inicialização do delay display (700)؛ // seta a configuração inicial do display displaySerial.print (configInicial)؛ تأخیر (10) ؛ inicio ()؛ } // função responsável for imprimir na tela a menagem para digitar a senha // é chamada toda vez q a senha foi digitada و comparada، também quando // a tecla limpar display foi pressionada. void inicio () {displaySerial.print ("Senha:")؛ }

مرحله 9: حلقه کنید

در حلقه ، یک customKey = customKeypad.getKey () ایجاد می کنیم و در دنباله ، یک فرمان Switch وارد می کنیم.

// captura a tecla pressionada do teclado char customKey = customKeypad.getKey ()؛ // caso alguma tecla foi pressionada if (customKey) {Serial.println (customKey) ؛ تغییر (customKey) { /… /}}

سوئیچ حلقه قسمت 1

در داخل فرمان Switch: لیست امکانات کلیدهای قابل چاپ را در صورت فشردن نشان می دهد و رمز عبور را افزایش می دهد: customKey را می گیرد و رمز ورود وارد شده را به هم متصل می کند. بعد ، displaySerial.print (customKey) محتویات کلیدی را نشان می دهد.

switch (customKey) {// caso alguma das teclas imprimíveis foi pressionada case 'A': case 'B': case 'C': case 'D': case '0': case '1': case '2': case "3": مورد "4": مورد "5": مورد "6": مورد "7": مورد "8": مورد "9": // concatena o novo símbolo a senha que estamos digitando SENHA_DIGITADA+= customKey؛ Serial.println (SENHA_DIGITADA) ؛ // imrpime na tela or símbolo pressionado displaySerial.print (customKey) ؛ زنگ تفريح؛

سوئیچ حلقه قسمت 2

در این کد ، سناریویی برای فشار دادن کلید CLEAR نشان می دهیم. اگر حرف C را تایپ کرده و متغیری را که گذرواژه ای را که در حال تایپ آن هستید ذخیره می کنید ، پاک کنید ، سپس دستور پاک کردن صفحه را فرا می خواند و راه اندازی مجدد می شود.

// caso a tecla CLEAR tenha sido pressionada case 'c': // limpa a variável que guarda a senha que está sendo digitada SENHA_DIGITADA = ""؛ // chama o comando para limpar a tela displaySerial.print (limparTela)؛ // پیکربندی mensagem para digitar a senha inicio ()؛ زنگ تفريح؛

سوئیچ حلقه قسمت 3

احتمال دیگر این است که اگر حرف E. را تایپ کنید در این صورت ، اگر رمز عبور وارد شده صحیح یا نادرست باشد ، صفحه تمیز و تجزیه و تحلیل می شود. بعد ، 2 ثانیه تأخیر جدید می دهیم ، صفحه را پاک می کنیم ، متغیر رمز عبور را بازنشانی می کنیم و به ابتدا باز می گردیم.

// caso a tecla ENTER seja pressionada، devemos comparer senhas case 'e': // limpa a tela displaySerial.print (limparTela)؛ // se senha digitada foi igual a ESPERADA if (SENHA_ESPERADA == SENHA_DIGITADA) {Serial.println ("Senha Correta!") ؛ // imprime mensagem de senha correta displaySerial.print ("Senha Correta !!!")؛ } // caso senha esteja errada else {Serial.println ("Senha Incorreta!")؛ // imprime mensagem de senha correta displaySerial.print ("Senha Incorreta!") ؛ } // aguarda 2 segundos para limpar a tela novamente e esperar uma nova senha ser digitada delay (2000)؛ displaySerial.print (limparTela)؛

توصیه شده: