תוכן עניינים:

מקלדת לוח מחוונים עם תצוגת LCD ו- Arduino Uno: 9 שלבים
מקלדת לוח מחוונים עם תצוגת LCD ו- Arduino Uno: 9 שלבים

וִידֵאוֹ: מקלדת לוח מחוונים עם תצוגת LCD ו- Arduino Uno: 9 שלבים

וִידֵאוֹ: מקלדת לוח מחוונים עם תצוגת LCD ו- Arduino Uno: 9 שלבים
וִידֵאוֹ: פרויקט ארדואינו קודן דלת LCD RTC מקלדת מנוע סרוו בלוטוס עמל חדרה 2024, נוֹבֶמבֶּר
Anonim
Image
Image
מקלדת לוח מחוונים עם תצוגת LCD ו- Arduino Uno
מקלדת לוח מחוונים עם תצוגת LCD ו- Arduino Uno
מקלדת לוח מחוונים עם תצוגת LCD ו- Arduino Uno
מקלדת לוח מחוונים עם תצוגת LCD ו- Arduino Uno

זוהי מקלדת מטריקס הפועלת יחד עם תצוגת LCD ו- Arduino Uno, הבסיסית ביותר שקיימת כיום. מטרת התקנה זו היא ליצור תוכנית המקבלת סיסמה שהוקלדה במקלדת המטריצה, משווה אותה עם הסיסמה הנכונה ומציגה הודעת אישור בתצוגה.

חשוב לזכור כי גם מקלדת המטריצה וגם תצוגה זו פועלים עם ESP8266 ו- ESP32.

כפי שאתה יכול לראות, אנו מפעילים את המעגל באמצעות ה- Arduino באמצעות USB, מכיוון שאיננו משתמשים במקור חיצוני. שמונה חוטים המחוברים בצורה פשוטה מאוד ליציאות ה- Arduino מבצעים את החיבור של המקלדת שלנו. למקלדת זו אין כוח והיא פסיבית, מה שמקל מאוד על החיבורים.

התצוגה מחוברת עם Arduino באמצעות ה- UART, היציאה הטורית, המפעילה גם את המכשיר.

בהדגמה אנו מראים בסרטון את המעגל שלנו בודק אם הסיסמה שהוקלדה במקלדת נכונה או לא.

בקובץ ה- PDF המשמש בסרטון וזמין כאן, יש לנו את הסימון המלא של השבב בו משתמשים.

שלב 1: תצוגה סדרתית

תצוגה סדרתית
תצוגה סדרתית
תצוגה סדרתית
תצוגה סדרתית

זוהי התצוגה הסדרתית המתקשרת עם ה- UART, שהוא RS עם TXRX. הוא קיים גם בגרסאות I2C, אך דגמים אחרים יישארו להרכבה הקרובה. במקרה זה, תצוגה זו פועלת על ידי UART by RS.

שלב 2: מקלדת מטריקס

מקלדת מטריקס
מקלדת מטריקס

הדוגמה של מקלדת המטריצה שבה אנו משתמשים היא זו של התמונה, והיא נמצאת בצד ימין. יש לנו תרשים המראה כיצד הוא פועל. למעשה יש לו קווים 4x4 בלבד. לפיכך, הוא משתמש בכמות החוטים המינימלית; חוט אחד לכל שורה ועמודה, כך שיהיו שמונה חוטים בסך הכל.

הוא אינו זקוק לחשמל מכיוון שהוא פועל כדלקמן: כאשר לוחצים על 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 por capturar a tecla que foi pressionada no teclado #include // pino invalido apenas usado no controller do SoftwareSerial #define RX_PIN 255 // pino TX da nossa ligação תצוגת LCD #define TX_PIN 3 // inverte a lógica dos pinos Rx e Tx, tratando LOW como HIGH and vice versa #define 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, responsável por capturar a tecla pressionada 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 Display via Serial SoftwareSerial displaySerial = SoftwareSerial (RX_PIN, TX_PIN, INVERTED);

שלב 8: התקנה

באשר להתקנה, הנה displaySerial.begin (2, 400), שזה בערך המהירות. במקרה שלנו, זה מספיק כדי לשלוח בתים. בעקבות זאת, יש המתנה של 700 אלפיות השנייה. אנו כוללים את displaySerial.print (initialConfig) מהתצורה הראשונית עם עיכוב חדש של 10 אלפיות השנייה, ואנו עוברים לפונקציית ההתחלה. בפונקציית ההתחלה שמנו displaySerial.print ("סיסמא:").

הגדרת void () {Serial.begin (2400); // inicializando a serial de comunicação com o display // importante o baud rate ser de 2400 displaySerial.begin (2400); // tempo de espera pela inicialização do display display (700); // seta a configuração inicial do display displaySerial.print (configInicial); עיכוב (10); inicio (); } // função responsável por imprimir na tela a mensagem para digitar a senha // é chamada toda vez q a senha foi digitada e 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

בתוך פקודת הבורר: היא מציגה את רשימת האפשרויות של מקשים להדפסה, אם לוחצים עליה, ומגדילה את הסיסמה: לוקחת את המפתח המותאם אישית ומחברת את הסיסמה שהוזנה. לאחר מכן, 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 o símbolo pressionado displaySerial.print (customKey); לשבור;

מתג לולאה חלק 2

בקוד זה, אנו מציגים תרחיש אם לוחצים על מקש CLEAR. אם אתה מקליד את האות C ומנקה את המשתנה המכיל את הסיסמה שאתה מקליד, הוא קורא לפקודה כדי לנקות את המסך ולהפעיל מחדש.

// caso a tecla CLEAR 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); // configura a mensagem para digitar a senha inicio (); לשבור;

מתג לולאה חלק 3

אפשרות נוספת היא אם תקליד את האות E. במקרה זה, המסך ינוקה וינותח אם הסיסמה שהוזנה נכונה או לא נכונה. לאחר מכן, אנו נותנים עיכוב חדש של 2 שניות, ננקה את המסך, נאפס את משתנה הסיסמה ונחזור להתחלה.

// caso a tecla ENTER seja pressionada, devemos comparar as senhas case 'e': // limpa a tela displaySerial.print (limparTela); // se a 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 incorreta displaySerial.print ("Senha Incorreta!"); } // aguarda 2 segundos para limpar a tela novamente e esperar uma nova senha ser digitada delay (2000); displaySerial.print (limparTela);

מוּמלָץ: