Բովանդակություն:

Վահանակի ստեղնաշար `LCD էկրանով և Arduino Uno- ով` 9 քայլ
Վահանակի ստեղնաշար `LCD էկրանով և Arduino Uno- ով` 9 քայլ

Video: Վահանակի ստեղնաշար `LCD էկրանով և Arduino Uno- ով` 9 քայլ

Video: Վահանակի ստեղնաշար `LCD էկրանով և Arduino Uno- ով` 9 քայլ
Video: Ինչպես պատրաստել LDmicro Arduino PLC I2C LCD- ով 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- ի ՝ սերիական պորտի միջոցով, որը նաև սնուցում է սարքը:

Aույցի ժամանակ մենք տեսանյութում ցույց ենք տալիս մեր սխեման, որը ստուգում է ՝ ստեղնաշարի վրա մուտքագրված գաղտնաբառը ճիշտ է, թե ոչ:

Տեսանյութում օգտագործված և այստեղ հասանելի PDF- ում մենք ունենք օգտագործվող չիպի ամբողջական եզրագիծը:

Քայլ 1: Սերիայի ցուցադրում

Սերիական ցուցադրում
Սերիական ցուցադրում
Սերիական ցուցադրում
Սերիական ցուցադրում

Սա սերիական ցուցադրում է, որը շփվում է UART- ի հետ, որը RS է TXRX- ով: Այն գոյություն ունի նաև I2C տարբերակներում, սակայն մյուս մոդելները կմնան առաջիկա հավաքի համար: Այս դեպքում այս ցուցադրումն աշխատում է UART- ի կողմից RS- ի կողմից:

Քայլ 2: Մատրիցային ստեղնաշար

Մատրիցային ստեղնաշար
Մատրիցային ստեղնաշար

Մատրիցային ստեղնաշարի օրինակը, որը մենք օգտագործում ենք, լուսանկարի օրինակն է, և այն գտնվում է աջ կողմում: Մենք ունենք դիագրամ, որը ցույց է տալիս, թե ինչպես է այն աշխատում: Այն իրականում ունի ընդամենը 4x4 տող: Այսպիսով, այն օգտագործում է լարերի նվազագույն քանակը. յուրաքանչյուր շարքի և սյունակի համար մեկ մետաղալար, այնպես որ ընդհանուր առմամբ ութ լար կա:

Այն էներգիայի կարիք չունի, քանի որ այն աշխատում է հետևյալ կերպ. 7 -ը սեղմելիս ստեղնաշարը վերցնում է 7 -ը և միանում տողին և սյունակին, ինչը նույնականացման հնարավորություն է տալիս ալգորիթմը ինքնաբերաբար սկանավորելով:

Կարևոր է հիշել, որ ցանկացած 4x4 ստեղնաշար, որը կետային մատրիցա է, կաշխատի այս հավաքում:

Քայլ 3: Հավաքում

Ժողով
Ժողով

Ընդհանուր սխեմայում մենք ութ լար ենք միացնում անմիջապես Arduino- ի նավահանգիստներին, քանի որ ստեղնաշարը ուժ չունի: Էկրանի վրա մենք ունենք RS 232 ազդանշան և դրական և բացասական ուժ: Backlight- ը դեռ առկա է, որը նույնպես արդեն միացված է (նույնականացվել է BKL- ի կողմից):

Քայլ 4: Աղբյուրի ծածկագիր

Այս նախագծի աղբյուրի կոդի մեջ դուք պետք է ներառեք սերիան և ստեղնաշարը: Այն ունի մի շարք RX_PIN և TX_PIN, որոնք անհրաժեշտ են սերիական ծրագրաշարի համար, ինչպես նաև INVERTED 1. Սա դրված է ներքևում ՝ ազդանշանը ուժեղացնելու համար, որն օգտագործում է մուտքը շրջված տրամաբանությամբ:

// biblioteca responsável pela comunicação com էկրան LCD #ներառել // biblioteca responsável for capturar a tecla que foi pressionada no teclado #include // pino invalido apenas usado no contrutor do SoftwareSerial #define RX_PIN 255 // pino TX da nossa ligação Arduino Displayուցադրել LCD #define TX_PIN 3 // inverte a lógica dos pinos Rx e Tx, tratando LOW como HIGH e հակառակը #սահմանել INVERTED 1

Քայլ 5: Displayուցադրել հրամանները

Displayուցադրել հրամաններ
Displayուցադրել հրամաններ

Կարևոր. Այս ցուցադրման մեջ բավական չէ միայն դրա վրա տող դնել: Դուք պետք է ուղարկեք կառավարման նիշ: 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- ի դեպքում: Մենք դեռ ունենք գծերի կապեր, որոնք Արդուինոյի կապումներն են և սյունակի կապերը: Մենք դեռ ունենք CustomKeypad Keypad կառուցող ՝ խորհրդանիշի, կապի, տողի և սյունակի պարամետրերով:

const բայթ LINHAS = 4; // número de linhas do tecladoconst byte COLUNAS = 4; // número de colunas do teclado // սահմանել 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: Գաղտնաբառի կարգավորում

Այս մասում մենք սահմանում ենք գաղտնաբառը, այնուհետև մենք պետք է մուտքագրենք գաղտնաբառ, որը դատարկ տող է: Ստորև մենք տեղադրում ենք ծրագրակազմի սերիալը:

// variáveis resposnsáveis por armazenar as senhasconst String SENHA_ESPERADA = "1234ABCD"; Լար SENHA_DIGITADA = ""; // instancia de SoftwareSerial para no no comunicar com o Displayուցադրել սերիական 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 or baud rate ser de 2400 displaySerial.begin (2400); // tempo de espera pela inicialização do display delay (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) { /… /}}

Loop Switch Մաս 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); ընդմիջում;

Loop Switch Մաս 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); // configura a mensagem para digitar a senha inicio (); ընդմիջում;

Loop Switch Մաս 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);

Խորհուրդ ենք տալիս: