Სარჩევი:

დაფის კლავიატურა LCD ეკრანით და Arduino Uno: 9 ნაბიჯი
დაფის კლავიატურა LCD ეკრანით და Arduino Uno: 9 ნაბიჯი

ვიდეო: დაფის კლავიატურა LCD ეკრანით და Arduino Uno: 9 ნაბიჯი

ვიდეო: დაფის კლავიატურა LCD ეკრანით და Arduino Uno: 9 ნაბიჯი
ვიდეო: Control 10 output pins or relay using 10 push button switch with 1 Arduino input pin ANPB-V2 2024, ნოემბერი
Anonim
Image
Image
დაფის კლავიატურა LCD ეკრანით და Arduino Uno
დაფის კლავიატურა LCD ეკრანით და Arduino Uno
დაფის კლავიატურა LCD ეკრანით და Arduino Uno
დაფის კლავიატურა LCD ეკრანით და Arduino Uno

ეს არის მატრიცის კლავიატურა, რომელიც მუშაობს LCD ეკრანთან და Arduino Uno– სთან ერთად, ყველაზე ძირითადი, რაც დღეს არსებობს. ამ კონფიგურაციის მიზანია შექმნას პროგრამა, რომელიც იღებს მატრიცის კლავიატურაზე აკრეფილ პაროლს, ადარებს მას სწორ პაროლთან და აჩვენებს დადასტურების შეტყობინებას ეკრანზე.

მნიშვნელოვანია გვახსოვდეს, რომ ორივე მატრიცის კლავიატურა და ეს ჩვენება მუშაობს ESP8266 და ESP32.

როგორც ხედავთ, ჩვენ ვრთავთ მიკროსქემს Arduino– სთან USB– ით, რადგან ჩვენ არ ვიყენებთ გარე წყაროს. რვა მავთული, რომელიც ძალიან მარტივად არის დაკავშირებული არდუინოს პორტებთან, ქმნის ჩვენს კლავიატურას. ამ კლავიატურას არ აქვს ძალა და არის პასიური, რაც მნიშვნელოვნად უწყობს ხელს კავშირებს.

ეკრანი უკავშირდება Arduino– ს UART– ის, სერიული პორტის საშუალებით, რომელიც ასევე აძლიერებს მოწყობილობას.

დემონსტრაციისას ჩვენ ვაჩვენებთ ვიდეოში ჩვენს წრეს, რომელიც ამოწმებს კლავიატურაზე აკრეფილი პაროლი სწორია თუ არა.

PDF– ში, რომელიც გამოიყენება ვიდეოში და ხელმისაწვდომია აქ, ჩვენ გვაქვს ჩიპის სრული პინოტი, რომელიც გამოიყენება.

ნაბიჯი 1: სერიული ჩვენება

სერიული ჩვენება
სერიული ჩვენება
სერიული ჩვენება
სერიული ჩვენება

ეს არის სერიული ჩვენება, რომელიც ურთიერთობს UART– თან, ეს არის RS TXRX– ით. ის ასევე არსებობს I2C ვერსიებში, მაგრამ სხვა მოდელები დარჩება მომავალი ასამბლეისთვის. ამ შემთხვევაში, ეს ჩვენება მუშაობს UART– ის მიერ RS– ს მიერ.

ნაბიჯი 2: მატრიცის კლავიატურა

მატრიცის კლავიატურა
მატრიცის კლავიატურა

მატრიცის კლავიატურის მაგალითი, რომელსაც ჩვენ ვიყენებთ არის ფოტოსურათი და ის არის მარჯვენა მხარეს. ჩვენ გვაქვს დიაგრამა, რომელიც აჩვენებს როგორ მუშაობს. სინამდვილეში მას მხოლოდ 4x4 სტრიქონი აქვს. ამდენად, იგი იყენებს მავთულის მინიმალურ რაოდენობას; თითო მავთული თითოეული რიგისა და სვეტისთვის, ისე რომ სულ რვა მავთულია.

მას არ სჭირდება ენერგია, რადგან ის მუშაობს შემდეგნაირად: როდესაც 7 დაჭერილია, კლავიატურა იღებს 7 -ს და უკავშირდება ხაზს და სვეტს, რაც იდენტიფიკაციის შესაძლებლობას იძლევა ალგორითმის ავტომატური სკანირებით.

მნიშვნელოვანია გვახსოვდეს, რომ ნებისმიერი 4x4 კლავიატურა, რომელიც არის წერტილოვანი მატრიცა, იმუშავებს ამ ასამბლეაზე.

ნაბიჯი 3: შეკრება

შეკრება
შეკრება

ზოგადი სქემით, ჩვენ რვა მავთულს პირდაპირ ვუკავშირდებით არდუინოს პორტებს, რადგან კლავიატურას ძალა არ აქვს. ეკრანზე ჩვენ გვაქვს RS 232 სიგნალი და დადებითი და უარყოფითი ძალა. Backlight ჯერ კიდევ არსებობს, რომელიც ასევე უკვე დაკავშირებულია (იდენტიფიცირებულია BKL– ით).

ნაბიჯი 4: წყაროს კოდი

ამ პროექტის წყაროს კოდში თქვენ უნდა შეიყვანოთ სერია და კლავიატურა. მას აქვს კომპლექტი RX_PIN და TX_PIN, რომელიც აუცილებელია სერიული პროგრამისთვის და ასევე INVERTED 1. ეს მოთავსებულია ქვემოთ სიგნალის გასაძლიერებლად, რომელიც იყენებს შეყვანას ინვერსიული ლოგიკით.

// ბიბლიოთეკა პასუხები pela comunicação com ეკრანის 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 or backlight 254, 1 limpa a tela 254, 253, 1 configura or contraste em nível alto 254, 13 liga or cursor paraficar piscando */const char configInicial = {254, 254, 254, 1, 254, 253, 1, 254, 13};

ნაბიჯი 6: კლავიატურის მოქმედება

როგორ მუშაობს კლავიატურა? პირველი, ის აყენებს მასივს. ეს მასივი არის იმ ხასიათისა, რომელიც რეალურად იქნება ნაჩვენები იქ. ასე რომ, თუ მე დააყენა X, როდესაც მე დააჭირეთ პირველ მარცხენა ღილაკს ზედა, ეს არის ნაჩვენები. ეს არის კლავიატურის შინაარსი, რასაც ის ბრძანებს.

სხვა რამ, რაც ჩვენ გვაქვს განმარტება არის რიგის ნომერი 4 და სვეტის ნომერი 4, ამ კლავიატურის ARRAY შემთხვევაში. ჩვენ ჯერ კიდევ გვაქვს ხაზების ქინძისთავები, რომლებიც არის არდუინოს ქინძისთავები და სვეტის ქინძისთავები. ჩვენ ჯერ კიდევ გვაქვს პერსონალური კლავიატურის კლავიატურის შემქმნელი, რომელსაც აქვს სიმბოლო, პინი, მწკრივი და სვეტის პარამეტრები.

კონსტ ბაიტი LINHAS = 4; // número de linhas do tecladoconst byte COLUNAS = 4; // número de colunas do teclado // განსაზღვრეთ uma matriz com os simbolos 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}; // აღნიშნავენ, როგორც colunas do teclado // instancia de Keypad, საპასუხოდ შეგიძლიათ დააკონკრეტოთ და გამოიყენოთ სპეციალური კლავიატურა customKeypad = Keypad (makeKeymap (SIMBOLOS), PINOS_LINHA, PINOS_COLUNA, LINHAS, COLUNAS);

ნაბიჯი 7: პაროლის დაყენება

ამ ნაწილში ჩვენ განვსაზღვრავთ პაროლს, შემდეგ კი ჩვენ გვჭირდება პაროლის შეყვანა, რომელიც არის ცარიელი სტრიქონი. ქვემოთ ჩვენ ვდებთ პროგრამული უზრუნველყოფის სერიის მაგალითს.

// ვრცელი არმაზენარის სახით senhasconst სიმებიანი SENHA_ESPERADA = "1234ABCD"; სიმებიანი SENHA_DIGITADA = ""; // პროგრამის ინსტანცია პროგრამული უზრუნველყოფისათვის არა კომუნიკაციისთვის, ჩვენება სერიული პროგრამული უზრუნველყოფის საშუალებით სერიული ჩვენება სერიული = პროგრამული უზრუნველყოფა სერიული (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 de 2400 displaySerial.begin (2400); // tempo de espera pela inicialização ჩვენების დაყოვნება (700); // seta configuração inicial do display displaySerial.print (configInicial); დაგვიანება (10); inicio (); } // função respondável por imprimir na tela a menagem para digitar senha // é chamada toda vez q a senha foi digitada და comparada, também quando // a tecla limpar ჩვენება foi pressionada. void inicio () {displaySerial.print ("Senha:"); }

ნაბიჯი 9: მარყუჟი

მარყუჟში, ჩვენ ვქმნით customKey = customKeypad.getKey () და თანმიმდევრობით, ჩვენ შევიყვანთ შეცვლის ბრძანებას.

// 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 საქმე 'A': case 'B': case 'C': case 'D': case '0': case '1': case '2': case '3': საქმე '4': საქმე '5': საქმე '6': საქმე '7': საქმე '8': საქმე '9': // შეაერთეთ ახალ სიმბოლოში და შეიტანეთ ციფრული მნიშვნელობა 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 as 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);

გირჩევთ: