Мазмуну:

LCD дисплейи менен Arduino Uno панелинин клавиатурасы: 9 кадам
LCD дисплейи менен Arduino Uno панелинин клавиатурасы: 9 кадам

Video: LCD дисплейи менен Arduino Uno панелинин клавиатурасы: 9 кадам

Video: LCD дисплейи менен Arduino Uno панелинин клавиатурасы: 9 кадам
Video: Lesson 98: Arduino 10 LED Push button Projects, Potentiometer LED Voltmeter and Traffic Light 2024, Июль
Anonim
Image
Image
LCD дисплейи жана Arduino Uno менен башкаруу панели клавиатурасы
LCD дисплейи жана Arduino Uno менен башкаруу панели клавиатурасы
LCD дисплейи жана Arduino Uno менен панелдин клавиатурасы
LCD дисплейи жана Arduino Uno менен панелдин клавиатурасы

Бул LCD дисплейи жана Arduino Uno менен иштөөчү матрицалык клавиатура, бүгүнкү күндө эң негизгиси. Бул орнотуунун максаты - матрицанын клавиатурасында терилген паролду алган, аны туура сырсөз менен салыштырган жана дисплейде ырастоо билдирүүсүн көрсөтүүчү программаны түзүү.

Матрицалык клавиатура да, бул дисплей да ESP8266 жана ESP32 менен иштээрин эстен чыгарбоо керек.

Көрүнүп тургандай, биз тышкы булакты колдонбогондуктан, биз схеманы USB менен Arduino менен кубаттайбыз. Arduino портторуна өтө жөнөкөй жол менен туташкан сегиз зым клавиатурабыздын байланышын түзөт. Бул клавиатура эч кандай күчкө ээ эмес жана пассивдүү, бул байланыштарды абдан жеңилдетет.

Дисплей Arduino менен UART аркылуу туташат, ал портту сериялык порт менен камсыз кылат, ал дагы түзмөктү кубаттайт.

Демонстрацияда биз клавиатурада терилген сырсөздүн туура же туура эместигин текшерген схемабызды көрсөтөбүз.

Видеодо колдонулган жана бул жерде жеткиликтүү болгон PDFте, биз колдонгон микросхеманын толук чекитине ээбиз.

1 -кадам: Сериялык дисплей

Сериялык дисплей
Сериялык дисплей
Сериялык дисплей
Сериялык дисплей

Бул UXT менен байланышкан сериялык дисплей, бул TXRX менен RS. Бул I2C версияларында да бар, бирок башка моделдер алдыдагы жыйынга калат. Бул учурда, бул дисплей RS тарабынан UART тарабынан иштейт.

2 -кадам: Matrix баскычтобу

Matrix баскычтобу
Matrix баскычтобу

Биз колдонгон матрицалык клавиатуранын мисалы сүрөттө жана ал оң жагында. Бизде анын кантип иштээрин көрсөткөн диаграмма бар. Ал чынында 4х4 саптан гана турат. Ошентип, ал зымдардын минималдуу өлчөмүн колдонот; ар бир сап жана мамыча үчүн бир зым, ошондо бардыгы сегиз зым болот.

Ал күчкө муктаж эмес, анткени ал төмөнкүдөй иштейт: 7 басылганда, клавиатура 7ди алат жана сызыкка жана мамыга туташат, бул алгоритмди автоматтык түрдө сканерлөө аркылуу идентификациялоону мүмкүн кылат.

Бул чогулушта чекиттүү матрицадан турган 4х4 баскычтоп иштээрин эстен чыгарбоо керек.

3 -кадам: Ассамблея

Ассамблея
Ассамблея

Жалпы схемада биз сегиз зымды Ардуинонун портторуна туташтырабыз, анткени клавиатуранын күчү жок. Дисплейде бизде RS 232 сигналы жана оң жана терс күч бар. Арткы жарык дагы эле бар, ал дагы туташкан (BKL тарабынан аныкталган).

4 -кадам: Булак коду

Бул долбоордун баштапкы кодуна сериялык жана баскычтопту кошуу керек. Бул сериялык программалык камсыздоо үчүн керектүү RX_PIN жана TX_PIN топтомуна ээ, ошондой эле INVERTED 1. Бул астынкы логика менен киргизүүнү колдонгон сигналды күчөтүү үчүн коюлган.

// библиотека жоопкерчилиги комментарий дисплейи LCD #камтыйт // библиотека жооптору басылганда эч кандай жабуу жок #кошуу // программалык камсыздоонун эч кандай салымы жок SoftwareSerial #dexine RX_PIN 255 // pino TX da nossa ligaç ЖК дисплейи #define TX_PIN 3 // Rx e Tx, LOW como HIGH жана тескерисинче #аныктоо INVERTED 1

5 -кадам: Дисплей буйруктары

Командаларды көрсөтүү
Командаларды көрсөтүү

Маанилүү: Бул дисплейде ага жөн эле жип коюу жетишсиз. Сиз көзөмөлдөөчү белгилерди жөнөтүшүңүз керек. PDF бул дисплейдин колдонмосу бар сайттын шилтемесин камтыйт. Эгерде сизде башка бренддин сериялык дисплейи бар болсо, анда буга тиешелүү болгон алардын контролдук коддорун кароо жакшы. Бул моделде, мисалы, биз белгилүү бир көзөмөлдү жөнөткөндө (мисалы, бул дисплей үчүн маалымат), биз байланышты иштетүү үчүн 254 номериндеги префиксти жөнөтүшүбүз керек.

Ошентип, биз нерселерди жеңилдетүү үчүн ARRAY орноттук, бул сандык индекс менен кирүүчү өзгөрмөлөрдүн жыйындысы. Бул дисплейге баштапкы конфигурация катары жөнөтүлөт.

// comando para limpar toda to show a displayconst char limparTela = {254, 1}; // конфигурация расмий эмес/ * 254, 254 254, 254, 254, 254, 1 чырактар жана 254, 13 конфигурациялары жана конфигурациялары 254, 13 лига же курсор парафикардык курсу */const char configInicial = {254, 254, 254, 1, 254, 253, 1, 254, 13};

6 -кадам: Баскычтоптун иштеши

Клавиатура кантип иштейт? Биринчиден, ал массивди орнотот. Бул массив чындыгында ошол жерде көрсөтүлө турган мүнөздө. Ошентип, эгерде мен X коём, анда мен үстүңкү сол жактын биринчи баскычын бассам, ал көрсөтүлөт. Бул буйрук бере турган клавиатуранын мазмуну.

Биз аныктаган башка нерселер бул клавиатуранын ARRAY учурда 4 -сап жана 4 -мамыча. Бизде дагы эле линиялардын казыктары бар, алар Arduino казыктары жана мамычанын казыктары. Бизде дагы эле customKeypad Keypad куруучусу бар, символу, пин, сап жана мамычанын параметрлери.

const байт LINHAS = 4; // катталуучу байт COLUNAS = 4; // Колдонмону иштетүү // чечүү 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_COLUNA [COLUNAS] = {4, 5, 6, 7}; // баскычтар баскычтар менен көрсөтүлөт // клавиатура, жооптор баскычын басуу жана басуу клавиатура customKeypad = клавиатура (makeKeymap (SIMBOLOS), PINOS_LINHA, PINOS_COLUNA, LINHAS, COLUNAS);

7 -кадам: Сырсөздү коюу

Бул бөлүктө биз сырсөздү аныктайбыз, андан кийин бош сап болгон сырсөздү киргизишибиз керек. Төмөндө, softwareSerialдин мисалын койдук.

// ар кандай жооптор String SENHA_ESPERADA = "1234ABCD" катары; SENHA_DIGITADA сабы = ""; // Программалык камсыздоонун инстанциялары comunicar com Serial DisplaySerial DisplaySerial = SoftwareSerial аркылуу көрсөтүү (RX_PIN, TX_PIN, INVERTED);

8 -кадам: Орнотуу

Орнотууга келсек, бул жерде displaySerial.begin (2, 400), бул ылдамдык жөнүндө. Биздин учурда, бул байт жөнөтүү үчүн жетиштүү. Мунун артынан 700 миллисекунд күтүү бар. Биз DisplaySerial.print (initialConfig) баштапкы конфигурациясынан 10 миллисекундка кечиктирүү менен киргизебиз жана биз баштоо функциясына өтөбүз. Баштоо функциясында displaySerial.print ("пароль:") коебуз.

void setup () {Serial.begin (2400); // индикаторлоштуруу сериялык комуникалоо // дисплейдин маанилүүлүгү 2400 displaySerial.begin (2400); // дисплейдин кечигүүсүнүн темпи кечигүү (700); // конфигурациялоо расмий түрдө көрсөтүлөт displaySerial.print (configInicial); кечигүү (10); inicio (); } // função Respável жооп берүү үчүн, сиз өзүңүздү эсептөөңүз керек // сизди салыштыруу үчүн, сиз өзүңүздүн алдыңызда бир нерсени көрөсүз, же болбосо, // экрандын алдында дисплейди ачуу керек. void inicio () {displaySerial.print ("Senha:"); }

9 -кадам: Loop

Укурукта биз customKey = customKeypad.getKey () түзөбүз жана ырааттуулукта Switch командасын киргизебиз.

// керектүү баскычты басыңыз 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 insprimíveis foi pressionada case case 'A': case 'B': case 'C': case 'D': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': // new or símbolo a sha que estasos digitalando SENHA_DIGITADA+= customKey; Serial.println (SENHA_DIGITADA); // ImSpime же DisplaySerial.print (customKey) баскычтарын басыңыз; тыныгуу;

Loop Switch 2 -бөлүк

Бул коддо биз CLEAR баскычы басылганда сценарийди көрсөтөбүз. Эгерде сиз С тамгасын терсеңиз жана сиз жазып жаткан сырсөздү кармаган өзгөрмөнү тазаласаңыз, анда ал экранды тазалоо буйругун чакырып, кайра баштайт.

// CLEAR ТЕЗ АРАЛЫК баскычын басуу 'c': // башка варианттар жана чектөөлөр SENHA_DIGITADA = ""; // чалуу же телекөрсөтүүSerial.print (limparTela); // конфигурациялоо үчүн сиз конфигурациялай аласыз (); тыныгуу;

Loop Switch 3 -бөлүк

Дагы бир мүмкүнчүлүк, эгерде сиз Е тамгасын терсеңиз. Бул учурда, киргизилген сырсөз туура же туура эмес болсо, экран тазаланат жана анализденет. Андан кийин, биз 2 секундга жаңы кечигүүнү беребиз, экранды тазалап, сырсөздүн өзгөрмөсүн баштапкы абалга келтиребиз жана башына кайтабыз.

// ECO КИРГИЗҮҮ баскычын басыңыз, жана "e" абалын салыштырып көрүңүз: // тела DisplaySerial.print (limparTela); // эгерде сиз ESPERADA болсо, анда (SENHA_ESPERADA == SENHA_DIGITADA) {Serial.println ("Senha Correta!"); // сенса коррета дисплейSerial.print ("Senha Correta !!!"); } // caso senha esteja errada else {Serial.println ("Senha Incorreta!"); // сенсациялардын экраны DisplaySerial.print ("Senha Incorreta!"); } // 2 -күндүн аягына чейин каралбай калуу үчүн кечигүү керек (2000); displaySerial.print (limparTela);

Сунушталууда: