Talaan ng mga Nilalaman:

Paggamit ng Numeric Keypads Sa Arduino: 4 na Hakbang
Paggamit ng Numeric Keypads Sa Arduino: 4 na Hakbang

Video: Paggamit ng Numeric Keypads Sa Arduino: 4 na Hakbang

Video: Paggamit ng Numeric Keypads Sa Arduino: 4 na Hakbang
Video: How to use 4 channel Relay to control AC load with Arduino code 2024, Nobyembre
Anonim
Paggamit ng Numeric Keypads Sa Arduino
Paggamit ng Numeric Keypads Sa Arduino

Ang mga numerong keypad ay maaaring magbigay ng isang simpleng kahalili ng end-user para sa iba't ibang mga interface para sa iyong mga proyekto. O kung kailangan mo ng maraming mga pindutan, maaari ka nilang makatipid ng maraming oras patungkol sa konstruksyon. Tumatakbo kami sa pamamagitan ng pagkonekta sa kanila, gamit ang Arduino library at pagkatapos ay tapusin sa isang kapaki-pakinabang na halimbawa ng sketch.

Hakbang 1: Pagsisimula

Nagsisimula
Nagsisimula

Hindi alintana kung saan mo nakuha ang iyong mga keypad, siguraduhing makukuha mo ang sheet ng data - sapagkat mapapadali nito ang buhay kapag nag-wire up ang mga ito. Halimbawa - ang imahe sa hakbang na ito.

Mahalaga ang sheet ng data dahil sasabihin nito sa iyo kung aling mga pin o konektor sa keypad ang para sa mga hilera at haligi. Kung wala kang data sheet - kakailanganin mong manu-manong matukoy kung aling mga contact ang para sa mga hilera at haligi.

Maaari itong magawa gamit ang pagpapatuloy na pagpapaandar ng isang multimeter (ang buzzer). Magsimula sa pamamagitan ng paglalagay ng isang probe sa pin 1, ang iba pang pagsisiyasat sa pin 2, at pindutin ang isa-isa ng mga pindutan. Gumawa ng isang tala kung kailan nakumpleto ng isang pindutan ang circuit, pagkatapos ay lumipat sa susunod na pin. Malapit mong malaman ang alin. Halimbawa, sa halimbawang keypad pin 1 at 5 ay para sa pindutang “1 ″, 2 at 5 para sa“4 ″, atbp…

Sa puntong ito mangyaring mag-download at mag-install ng keypad Arduino library. Ipapakita namin ngayon kung paano gamitin ang parehong mga keypad sa simpleng mga halimbawa.

Hakbang 2: Paggamit ng isang 12 Digit Keypad

Gagamitin namin ang maliit na itim na keypad, isang Arduino Uno-compatible at isang LCD na may isang interface ng I2C para sa mga layuning ipakita. Kung wala kang isang LCD maaari mong palaging ipadala ang teksto sa serial monitor sa halip.

Wire up ang iyong LCD pagkatapos ikonekta ang keypad sa Arduino sa sumusunod na pamamaraan: Keypad row 1 hanggang Arduino digital 5Keypad row 2 to Arduino digital 4Keypad row 3 to Arduino digital 3Keypad row 4 to Arduino digital 2Keypad column 1 to Arduino digital 8Keypad column 2 to Arduino digital 7Keypad haligi 3 hanggang Arduino digital 6 Kung ang iyong keypad ay naiiba sa amin, tandaan ang mga linya sa sketch mula sa:

// kahulugan ng uri ng keypad

Tulad ng kailangan mong baguhin ang mga numero sa mga arrays rowPins [ROWS] at colPins [COLS]. Ipasok mo ang mga digital na numero ng pin na konektado sa mga hilera at haligi ng keypad ayon sa pagkakabanggit.

Bukod dito, ang mga array key ay nag-iimbak ng mga halagang ipinapakita sa LCD kapag ang isang partikular na pindutan ay pinindot. Makikita mong naitugma namin ito sa ginamit na pisikal na keypad, subalit maaari mo itong palitan sa anumang kailangan mo. Ngunit sa ngayon, ipasok at i-upload ang sumusunod na sketch kapag nasiyahan ka sa mga paglalaan ng row / pin number:

/ * Numeric keypad at I2C LCD https://tronixstuff.com Gumagamit ng library ng Keypad para sa Arduino https://www.arduino.cc/playground/Code/Keypad ni Mark Stanley, Alexander Brevig * /

# isama ang "Keypad.h"

# isama ang "Wire.h" // para sa I2C LCD # isama ang "LiquidCrystal_I2C.h" // para sa I2C bus LCD module // https://www.dfrobot.com/wiki/index.php/I2C/TWI_LCD1602_Module_(SKU: _DFR0063) LiquidCrystal_I2C lcd (0x27, 16, 2); // itakda ang LCD address sa 0x27 para sa isang 16 chars at 2 line display

// kahulugan ng uri ng keypad

const byte ROWS = 4; // four row const byte COLS = 3; // three columns char keys [ROWS] [COLS] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'}};

byte rowPins [ROWS] = {

5, 4, 3, 2}; // kumonekta sa mga row ng pinout ng keypad byte colPins [COLS] = {8, 7, 6}; // kumonekta sa mga pinout ng haligi ng keypad

int count = 0;

Keypad keypad = Keypad (makeKeymap (key), rowPins, colPins, ROWS, COLS);

walang bisa ang pag-setup ()

{lcd.init (); // ipasimula ang lcd lcd.backlight (); // i-on ang LCD backlight}

walang bisa loop ()

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

At ang mga resulta ng sketch ay ipinapakita sa video. Kaya't nakikita mo ngayon kung paano maisasalin ang mga pagpindot sa pindutan sa data para magamit sa isang sketch. Uulitin namin ngayon ang demonstrasyong ito sa mas malaking keypad.

Hakbang 3: Paggamit ng isang 16 Digit Keypad

Gagamitin namin ang mas malaking 4 × 4 keypad, isang Arduino Uno-compatible at para sa pagbabago ng I2C LCD mula sa Akafugu para sa mga layuning ipakita. Muli, kung wala kang isang LCD maaari mong palaging ipadala ang teksto sa serial monitor sa halip. I-wire ang LCD at pagkatapos ay ikonekta ang keypad sa Arduino sa sumusunod na pamamaraan:

  • Ang row ng Keypad 1 (i-pin ang walo) sa Arduino digital 5
  • Ang row ng Keypad 2 (pin 1) sa Arduino digital 4
  • Keypad row 3 (pin 2) sa Arduino digital 3
  • Ang row ng Keypad 4 (pin 4) sa Arduino digital 2
  • Ang haligi ng Keypad 1 (pin 3) sa Arduino digital 9
  • Ang haligi ng Keypad 2 (pin 5) sa Arduino digital 8
  • Ang haligi ng Keypad 3 (pin 6) sa Arduino digital 7
  • Ang haligi ng Keypad 4 (pin 7) sa Arduino digital 6

Ngayon para sa sketch - tandaan kung paano namin tinanggap para sa mas malaking numerong keypad: ang sobrang haligi sa mga array char key ang sobrang pin sa array colPins at ang byte COLS = 4.

/ * Numeric keypad at I2C LCD https://tronixstuff.com Gumagamit ng library ng Keypad para sa Arduino https://www.arduino.cc/playground/Code/Keypad ni Mark Stanley, Alexander Brevig * /

# isama ang "Keypad.h"

# isama ang "Wire.h" // para sa I2C LCD # isama ang "TWILiquidCrystal.h" // https://store.akafugu.jp/products/26 LiquidCrystal lcd (12, 11, 5, 4, 3, 2);

const byte ROWS = 4; // apat na hilera

const byte COLS = 4; // four columns char keys [ROWS] [COLS] = {{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'}}; byte rowPins [ROWS] = {5, 4, 3, 2}; // kumonekta sa mga row ng pinout ng keypad byte colPins [COLS] = {9, 8, 7, 6}; // kumonekta sa mga pinout ng haligi ng keypad int count = 0;

Keypad keypad = Keypad (makeKeymap (key), rowPins, colPins, ROWS, COLS);

walang bisa ang pag-setup ()

{Serial.begin (9600); lcd.begin (16, 2); lcd.print ("Keypad test!"); pagkaantala (1000); lcd.clear (); }

walang bisa loop ()

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

At muli mong makikita ang mga resulta ng sketch sa itaas sa video.

Ngayon para sa isang halimbawa ng proyekto, isa na marahil ang pinaka-hiniling na paggamit ng numerong keypad …

Hakbang 4: Halimbawa ng Proyekto - PIN Access System

Ang pinakahihiling na paggamit para sa isang numerong keypad ay tila isang application na "PIN" na istilo, kung saan ang Arduino ay inatasan na gumawa ng isang bagay batay sa isang tamang numero na ipinasok sa keypad. Ang sumusunod na sketch ay gumagamit ng hardware na inilarawan para sa nakaraang sketch at nagpapatupad ng isang anim na digit na sistema ng pagpasok ng PIN.

Ang mga pagkilos na magaganap ay maaaring ipasok sa mga pagpapaandar na tamangPIN () at malingPIN (). At ang PIN ay nakatakda sa array char PIN [6]. Sa isang maliit na labis na trabaho maaari kang lumikha ng iyong sariling pag-andar din ng PIN-pagbabago.

// PIN switch with 16-digit numeric keypad // https://tronixstuff.com #include "Keypad.h" #include #include LiquidCrystal lcd (12, 11, 5, 4, 3, 2);

const byte ROWS = 4; // apat na hilera

const byte COLS = 4; // four columns char keys [ROWS] [COLS] = {{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'}}; byte rowPins [ROWS] = {5, 4, 3, 2}; // kumonekta sa mga row ng pinout ng keypad byte colPins [COLS] = {9, 8, 7, 6}; // kumonekta sa mga pinout ng haligi ng keypad

Keypad keypad = Keypad (makeKeymap (key), rowPins, colPins, ROWS, COLS);

char PIN [6] = {

'1', '2', 'A', 'D', '5', '6'}; // our secret (!) number char trial [6] = {'0', '0', '0', '0', '0', '0'}; // ginamit para sa paghahambing int z = 0;

walang bisa ang pag-setup ()

{Serial.begin (9600); lcd.begin (16, 2); lcd.print ("PIN Lock"); pagkaantala (1000); lcd.clear (); lcd.print ("Enter PIN…"); }

void correctPIN () // gawin ito kung ang tamang PIN ay ipinasok

{lcd.print ("* Tamang PIN *"); pagkaantala (1000); lcd.clear (); lcd.print ("Enter PIN…"); }

walang bisaPIN () // gawin ito kung maling PIN ang ipinasok

{lcd.print ("* Subukang muli *"); pagkaantala (1000); lcd.clear (); lcd.print ("Enter PIN…"); }

walang bisa ang checkPIN ()

{int tama = 0; int i; para sa (i = 0; i <6; i ++) {

kung (pagtatangka == PIN )

{tama ++; }} kung (tama == 6) {correctPIN (); } iba pa {maliPIN (); }

para sa (int zz = 0; zz <6; zz ++) {pagtatangka [zz] = '0'; }}

walang bisa ang readKeypad ()

{char key = keypad.getKey (); kung (key! = NO_KEY) {pagtatangka [z] = key; z ++; switch (key) {case '*': z = 0; pahinga; kaso '#': z = 0; pagkaantala (100); // para sa dagdag na debounce lcd.clear (); checkPIN (); pahinga; }}}

walang bisa loop ()

{readKeypad (); }

Ang proyekto ay ipinakita sa video.

Kaya ngayon mayroon kang kakayahang gumamit ng labing dalawa at labing-anim na mga pindutan ng keypad sa iyong mga system ng Arduino. Sigurado akong makakaisip ka ng isang bagay na kapaki-pakinabang at kawili-wili gamit ang mga keypad sa malapit na hinaharap.

Ang post na ito ay dinala sa iyo ng pmdway.com - lahat para sa mga tagagawa ng tagahanga at electronics, na may libreng paghahatid sa buong mundo.

Inirerekumendang: