Мазмуну:

Сандык баскычтопту Arduino менен колдонуу: 4 кадам
Сандык баскычтопту Arduino менен колдонуу: 4 кадам

Video: Сандык баскычтопту Arduino менен колдонуу: 4 кадам

Video: Сандык баскычтопту Arduino менен колдонуу: 4 кадам
Video: Lesson 98: Arduino 10 LED Push button Projects, Potentiometer LED Voltmeter and Traffic Light 2024, Ноябрь
Anonim
Arduino менен сандык баскычтопторду колдонуу
Arduino менен сандык баскычтопторду колдонуу

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

1 -кадам: Баштоо

Баштоо
Баштоо

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

Маалымат баракчасы маанилүү, анткени ал саптар жана мамылар үчүн клавиатурада кайсы казык же туташтыргычтар бар экенин айтып берет. Эгерде сизде маалымат баракчасы жок болсо - саптар жана мамылар үчүн кайсы байланыштар бар экенин кол менен аныктооңуз керек болот.

Бул мультиметрдин үзгүлтүксүздүгүн (ызылдагыч) колдонуу менен жасалышы мүмкүн. Бир зондду 1 -пинге, экинчисин 2 -пинге коюп, ачкычтарды бирден басыңыз. Бир баскычтын схеманы бүтүргөнүн жазып алыңыз, андан кийин кийинки пинге өтүңүз. Көп өтпөй кайсынысы экенин билесиз. Мисалы, мисалда 1 жана 5 клавиатура төөнөгүчтөрү "1 ″, 2 жана 5" 4 ″ ж.

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

2 -кадам: 12 цифралуу баскычтопту колдонуу

Биз кичинекей кара баскычтопту, Arduino Uno менен шайкеш келгенди жана дисплей максаттары үчүн I2C интерфейси бар LCDди колдонобуз. Эгерде сизде ЖК жок болсо, анын ордуна текстти сериялык мониторго дайыма жөнөтө аласыз.

ЖКны зым менен кошуп, клавиатураны Arduino менен төмөнкүдөй туташтырыңыз: Ариптакта 1 -сап Arduino санариптик 5Кейпад 2 -катар Arduino санариптик 4Кейпад катар 3 Ардуино санарип 3Кейпад катар 4 Arduino санарип 7Keypad тилкеси 3 Arduino санарип 6га чейин Эгерде сиздин баскыч баскычыңыз биздикинен айырмаланса, анда эскиздеги сызыктарга көңүл буруңуз:

// баскычтоптун түрүн аныктоо

Сиз катарлардагы сандарды rowPins [ROWS] жана colPins [COLS] өзгөртүшүңүз керек. Тиешелүү түрдө баскычтоптун саптарына жана мамыларына туташкан санарип пин номерлерин киргизиңиз.

Мындан тышкары, массив баскычтары белгилүү бир баскыч басылганда ЖКда көрсөтүлгөн баалуулуктарды сактайт. Сиз аны колдонулган физикалык баскычтоп менен дал келтиргенибизди көрө аласыз, бирок аны керектүү нерсеге өзгөртө аласыз. Азырынча, катар/пин номеринин бөлүштүрүлүшүнө ыраазы болгондон кийин, төмөнкү эскизди киргизиңиз жана жүктөңүз:

/ * Сандык баскычтоп жана I2C LCD https://tronixstuff.com Arduino үчүн баскычтоп китепканасын колдонот https://www.arduino.cc/playground/Code/Keypad by Mark Stanley, Alexander Brevig */

#"Keypad.h" кошуу

#кошуу "Wire.h" // I2C LCD үчүн #кошуу "LiquidCrystal_I2C.h" // I2C шинасынын LCD модулу үчүн // https://www.dfrobot.com/wiki/index.php/I2C/TWI_LCD1602_Module_(SKU: _DFR0063) LiquidCrystal_I2C lcd (0x27, 16, 2); // 16 дарек жана 2 саптуу дисплей үчүн ЖК дарегин 0x27 деп коюңуз

// баскычтоптун түрүн аныктоо

const байт ROWS = 4; // төрт катар const байт COLS = 3; // үч мамыча char баскычтары [ROWS] [COLS] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'}};

байт rowPins [ROWS] = {

5, 4, 3, 2}; // баскычтоптун байт colPins'инин катарына туташуу [COLS] = {8, 7, 6}; // баскычтоптун мамычанын пинуттарына туташуу

int count = 0;

Баскычтоп баскычы = Баскычтоп (makeKeymap (баскычтар), rowPins, colPins, ROWS, COLS);

жараксыз орнотуу ()

{lcd.init (); // lcd lcd.backlight инициализациялоо (); // LCD арткы жарыгын күйгүзүү}

боштук цикл ()

{char key = keypad.getKey (); if (key! = NO_KEY) {lcd.print (key); count ++; if (count == 17) {lcd.clear (); count = 0; }}}

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

3 -кадам: 16 цифралуу баскычтопту колдонуу

Биз чоңураак 4 × 4 баскычтопту колдонобуз, Arduino Uno менен шайкеш келет жана дисплей максаттары үчүн Akafuguдан I2C ЖКны өзгөртүү үчүн. Дагы, эгерде сизде ЖК жок болсо, анын ордуна текстти дайыма сериялык мониторго жөнөтө аласыз. ЖКны зым менен кошуп, андан кийин баскычтопту Arduino менен төмөнкүдөй туташтырыңыз:

  • Баскычтоп 1 -катар (8 -пин) Arduino санарип 5ке
  • Ариптакта 2 (пин 1) Arduino санарип 4
  • Ариптакта 3 -сап (2 -пин) Arduino санарип 3
  • Ариптакта 4 (пин 4) Arduino санарип 2ге
  • Ариптакта 1 (пин 3) Arduino санарип 9га
  • Ариптакта 2 (пин 5) Arduino санарип 8ге
  • Ариптакта 3 (пин 6) Arduino санарип 7ге
  • Баскычтоп мамычасы 4 (пин 7) Arduino санарип 6га

Эми эскиз үчүн - биз чоңураак сандык баскычтопту кантип жайгаштырганыбызга көңүл буруңуз: массивдеги кошумча тилке char баскычтары colPins массивиндеги кошумча пин жана COLS = 4 байты.

/ * Сандык баскычтоп жана I2C LCD https://tronixstuff.com Arduino үчүн баскычтоп китепканасын колдонот https://www.arduino.cc/playground/Code/Keypad by Mark Stanley, Alexander Brevig */

#"Keypad.h" кошуу

#clude "Wire.h" // I2C LCD үчүн #include "TWILiquidCrystal.h" // https://store.akafugu.jp/products/26 LiquidCrystal lcd (12, 11, 5, 4, 3, 2);

const байт ROWS = 4; // төрт катар

const байт COLS = 4; // төрт мамычанын чар баскычтары [ROWS] [COLS] = {{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'}}; байт rowPins [ROWS] = {5, 4, 3, 2}; // баскычтоптун байт colPins'инин катарына туташуу [COLS] = {9, 8, 7, 6}; // клавиатуранын мамыча түйүндөрүнө туташуу int count = 0;

Баскычтоп баскычы = Баскычтоп (makeKeymap (баскычтар), rowPins, colPins, ROWS, COLS);

жараксыз орнотуу ()

{Serial.begin (9600); lcd.begin (16, 2); lcd.print ("Баскычтопту текшерүү!"); кечигүү (1000); lcd.clear (); }

боштук цикл ()

{char key = keypad.getKey (); if (key! = NO_KEY) {lcd.print (key); Serial.print (key); count ++; if (count == 17) {lcd.clear (); count = 0; }}}

Жана дагы видеодон жогорудагы эскиздин жыйынтыгын көрө аласыз.

Эми мисал проекти үчүн, балким, сандык баскычтоптун эң көп суралган колдонулушу …

4 -кадам: Долбоордун мисалы - PINге кирүү тутуму

Сандык баскычтоп үчүн эң көп колдонулган нерсе "PIN" стилиндеги колдонмо окшойт, мында Arduino клавиатурага туура номердин негизинде бир нерсе кылууга буйрук берилет. Төмөнкү эскиз мурунку эскиз үчүн сүрөттөлгөн аппараттык жабдууларды колдонот жана алты орундуу PIN киргизүү системасын ишке ашырат.

Иш -аракеттерди туураPIN () жана туура эмес PIN () функцияларына киргизсе болот. Жана PIN массив char PIN [6] коюлган. Бир аз кошумча иш менен сиз өзүңүздүн PIN-өзгөртүү функцияңызды түзө аласыз.

// 16 орундуу сандык баскыч менен PIN которгуч // https://tronixstuff.com #include "Keypad.h" #include #include LiquidCrystal lcd (12, 11, 5, 4, 3, 2);

const байт ROWS = 4; // төрт катар

const байт COLS = 4; // төрт мамычанын чар баскычтары [ROWS] [COLS] = {{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'}}; байт rowPins [ROWS] = {5, 4, 3, 2}; // баскычтоптун байт colPins'инин катарына туташуу [COLS] = {9, 8, 7, 6}; // баскычтоптун мамычанын пинуттарына туташуу

Баскычтоп баскычы = Баскычтоп (makeKeymap (баскычтар), rowPins, colPins, ROWS, COLS);

char PIN [6] = {

'1', '2', 'A', 'D', '5', '6'}; // биздин жашыруун (!) сандык чар аракети [6] = {'0', '0', '0', '0', '0', '0'}; // салыштыруу үчүн колдонулат int z = 0;

жараксыз орнотуу ()

{Serial.begin (9600); lcd.begin (16, 2); lcd.print ("PIN Lock"); кечигүү (1000); lcd.clear (); lcd.print ("PIN кодду киргизиңиз …"); }

void correctPIN () // туура PIN киргизилген болсо, муну жасаңыз

{lcd.print (" * Туура PIN *"); кечигүү (1000); lcd.clear (); lcd.print ("PIN кодду киргизиңиз …"); }

туура эмес PIN киргизилген болсо, муну жасаңыз

{lcd.print (" * Кайталап көрүңүз *"); кечигүү (1000); lcd.clear (); lcd.print ("PIN кодду киргизиңиз …"); }

жараксыз checkPIN ()

{int туура = 0; int i; үчүн (i = 0; i <6; i ++) {

эгер (аракет == PIN )

{туура ++; }} if (туура == 6) {correctPIN (); } else {туура эмесPIN (); }

for (int zz = 0; zz <6; zz ++) {аракет [zz] = '0'; }}

жараксыз окууKeypad ()

{char key = keypad.getKey (); if (key! = NO_KEY) {аракет [z] = ачкыч; z ++; switch (key) {case '*': z = 0; тыныгуу; case '#': z = 0; кечиктирүү (100); // кошумча чыгаруу үчүн lcd.clear (); checkPIN (); тыныгуу; }}}

боштук цикл ()

{readKeypad (); }

Долбоор видеодо көрсөтүлгөн.

Ошентип, азыр сиз Arduino системаңыз менен он эки жана он алты баскычтуу баскычтарды колдоно аласыз. Мен ишенем, сиз жакын арада клавиатураларды колдонуу менен пайдалуу жана кызыктуу нерсени ойлоп табасыз.

Бул билдирүү сизге pmdway.com тарабынан жеткирилген - бүткүл дүйнө жүзү боюнча бекер жеткирүү менен, өндүрүүчүлөр жана электроника ышкыбоздору үчүн.

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