สารบัญ:

การใช้แป้นตัวเลขกับ Arduino: 4 ขั้นตอน
การใช้แป้นตัวเลขกับ Arduino: 4 ขั้นตอน

วีดีโอ: การใช้แป้นตัวเลขกับ Arduino: 4 ขั้นตอน

วีดีโอ: การใช้แป้นตัวเลขกับ Arduino: 4 ขั้นตอน
วีดีโอ: การใช้ keypad 4x4 ร่วมกับ Arduino 2024, พฤศจิกายน
Anonim
การใช้แป้นตัวเลขกับ Arduino
การใช้แป้นตัวเลขกับ Arduino

แป้นตัวเลขสามารถเป็นทางเลือกสำหรับผู้ใช้ปลายทางสำหรับอินเทอร์เฟซต่างๆ สำหรับโครงการของคุณ หรือถ้าคุณต้องการปุ่มจำนวนมาก ก็สามารถประหยัดเวลาได้มากในการก่อสร้าง เราจะดำเนินการเชื่อมต่อโดยใช้ไลบรารี Arduino แล้วจบด้วยตัวอย่างแบบร่างที่มีประโยชน์

ขั้นตอนที่ 1: เริ่มต้น

เริ่มต้น
เริ่มต้น

ไม่ว่าคุณจะเอาคีย์แพดมาจากที่ใด ตรวจสอบให้แน่ใจว่าได้เอกสารข้อมูลมา เพราะจะทำให้ชีวิตง่ายขึ้นเมื่อเดินสาย ตัวอย่างเช่น - รูปภาพในขั้นตอนนี้

แผ่นข้อมูลมีความสำคัญเนื่องจากจะบอกคุณว่าหมุดหรือขั้วต่อใดบนแป้นพิมพ์สำหรับแถวและคอลัมน์ หากคุณไม่มีแผ่นข้อมูล – คุณจะต้องกำหนดด้วยตนเองว่าผู้ติดต่อรายใดสำหรับแถวและคอลัมน์

สามารถทำได้โดยใช้ฟังก์ชันความต่อเนื่องของมัลติมิเตอร์ (เสียงกริ่ง) เริ่มต้นด้วยการวางโพรบหนึ่งตัวบนพิน 1 โพรบอีกอันบนพิน 2 แล้วกดปุ่มทีละตัว จดบันทึกเมื่อปุ่มเสร็จสิ้นวงจร จากนั้นย้ายไปยังพินถัดไป ในไม่ช้าคุณจะรู้ว่าอันไหน ตัวอย่างเช่น ในตัวอย่าง หมุดปุ่มกด 1 และ 5 ใช้สำหรับปุ่ม “1″, 2 และ 5 สำหรับ “4″, ฯลฯ…

ณ จุดนี้โปรดดาวน์โหลดและติดตั้งไลบรารี Arduino ของปุ่มกด ตอนนี้เราจะสาธิตวิธีใช้ปุ่มกดทั้งสองแบบในตัวอย่างง่ายๆ

ขั้นตอนที่ 2: การใช้ปุ่มกด 12 หลัก

เราจะใช้แป้นพิมพ์สีดำขนาดเล็ก เข้ากันได้กับ Arduino Uno และ LCD พร้อมอินเทอร์เฟซ I2C เพื่อการแสดงผล หากคุณไม่มีจอ LCD คุณสามารถส่งข้อความไปยังจอภาพแบบอนุกรมแทนได้เสมอ

ต่อสาย LCD ของคุณจากนั้นเชื่อมต่อปุ่มกดกับ Arduino ในลักษณะต่อไปนี้: ปุ่มกดแถว 1 ถึง Arduino ดิจิตอล 5Keypad แถว 2 ถึง Arduino ดิจิตอล 4Keypad แถว 3 ถึง Arduino ดิจิตอล 3 ปุ่มกดแถว 4 ถึง Arduino ดิจิตอล 2 คอลัมน์ปุ่มกด 1 ถึง Arduino ดิจิตอล 8 ปุ่มกดคอลัมน์ 2 ถึง Arduino digital 7Keypad คอลัมน์ 3 ถึง Arduino digital 6 หากปุ่มกดของคุณแตกต่างจากของเรา ให้จดบรรทัดในภาพร่างจาก:

// คำจำกัดความประเภทปุ่มกด

เนื่องจากคุณจำเป็นต้องเปลี่ยนตัวเลขในอาร์เรย์ rowPins[ROWS] และ colPins[COLS] ของอาร์เรย์ คุณป้อนหมายเลขพินดิจิทัลที่เชื่อมต่อกับแถวและคอลัมน์ของปุ่มกดตามลำดับ

นอกจากนี้ ปุ่มอาร์เรย์ยังเก็บค่าที่แสดงใน LCD เมื่อกดปุ่มใดปุ่มหนึ่ง คุณจะเห็นว่าเราจับคู่ปุ่มนี้กับแป้นพิมพ์จริงที่ใช้ แต่คุณสามารถเปลี่ยนเป็นอะไรก็ได้ที่คุณต้องการ แต่สำหรับตอนนี้ ให้ป้อนและอัปโหลดภาพร่างต่อไปนี้เมื่อคุณพอใจกับการจัดสรรหมายเลขแถว/พินแล้ว:

/* แป้นตัวเลขและ I2C LCD https://tronixstuff.com ใช้ไลบรารีปุ่มกดสำหรับ Arduino https://www.arduino.cc/playground/Code/Keypad โดย Mark Stanley, Alexander Brevig */

#include "Keypad.h"

#include "Wire.h" // สำหรับ I2C LCD #include "LiquidCrystal_I2C.h" // สำหรับ I2C bus LCD module // https://www.dfrobot.com/wiki/index.php/I2C/TWI_LCD1602_Module_(SKU: _DFR0063) LiquidCrystal_I2C จอแอลซีดี (0x27, 16, 2); // ตั้งค่าที่อยู่ LCD เป็น 0x27 สำหรับอักขระ 16 ตัวและจอแสดงผล 2 บรรทัด

// คำจำกัดความประเภทปุ่มกด

ไบต์ const ROWS = 4; //สี่แถว const ไบต์ COLS = 3; // คีย์อักขระสามคอลัมน์ [ROWS][COLS] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'}};

ไบต์ rowPins [ROWS] = {

5, 4, 3, 2}; //เชื่อมต่อกับ pinouts แถวของแป้นพิมพ์ไบต์ colPins[COLS] = {8, 7, 6}; // เชื่อมต่อกับ pinout ของคอลัมน์ของปุ่มกด

จำนวน int=0;

ปุ่มกดปุ่มกด = ปุ่มกด (makeKeymap (คีย์), rowPins, colPins, ROWS, COLS);

การตั้งค่าเป็นโมฆะ ()

{ lcd.init(); // เริ่มต้น LCD lcd.backlight(); // เปิดไฟหลังจอ LCD }

วงเป็นโมฆะ ()

{ คีย์ถ่าน = keypad.getKey (); ถ้า (คีย์! = NO_KEY) { lcd.print (คีย์); นับ++; ถ้า (นับ==17) { lcd.clear(); นับ=0; } } }

และผลลัพธ์ของภาพร่างจะแสดงในวิดีโอ ตอนนี้คุณจะได้เห็นแล้วว่าการกดปุ่มสามารถแปลเป็นข้อมูลเพื่อใช้ในสเก็ตช์ได้อย่างไร ตอนนี้เราจะทำซ้ำการสาธิตนี้ด้วยปุ่มกดที่ใหญ่ขึ้น

ขั้นตอนที่ 3: การใช้ปุ่มกด 16 หลัก

เราจะใช้แป้นกดขนาดใหญ่ 4 × 4 ที่เข้ากันได้กับ Arduino Uno และสำหรับเปลี่ยน I2C LCD จาก Akafugu เพื่อวัตถุประสงค์ในการแสดงผล อีกครั้ง หากคุณไม่มีจอ LCD คุณสามารถส่งข้อความไปยังจอภาพแบบอนุกรมแทนได้เสมอ ต่อสาย LCD แล้วเชื่อมต่อปุ่มกดกับ Arduino ในลักษณะต่อไปนี้:

  • ปุ่มกดแถว 1 (ขาแปด) ถึง Arduino digital 5
  • ปุ่มกดแถว 2 (พิน 1) ถึง Arduino ดิจิตอล 4
  • ปุ่มกดแถว 3 (พิน 2) ถึง Arduino ดิจิตอล 3
  • ปุ่มกดแถว 4 (พิน 4) ถึง Arduino digital 2
  • คอลัมน์ปุ่มกด 1 (พิน 3) ถึง Arduino digital 9
  • คอลัมน์ปุ่มกด 2 (พิน 5) ถึง Arduino digital 8
  • คอลัมน์ปุ่มกด 3 (พิน 6) ถึง Arduino digital 7
  • คอลัมน์ปุ่มกด 4 (พิน 7) ถึง Arduino ดิจิตอล 6

ตอนนี้สำหรับภาพสเก็ตช์ – สังเกตว่าเรารองรับแป้นตัวเลขขนาดใหญ่ได้อย่างไร: คอลัมน์พิเศษในคีย์ถ่านอาร์เรย์พินพิเศษในอาร์เรย์ colPinsและไบต์ COLS = 4

/* แป้นตัวเลขและ I2C LCD https://tronixstuff.com ใช้ไลบรารีปุ่มกดสำหรับ Arduino https://www.arduino.cc/playground/Code/Keypad โดย Mark Stanley, Alexander Brevig */

#include "Keypad.h"

#include "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; //สี่คอลัมน์ char keys[ROWS][COLS] = {{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'}}; ไบต์ rowPins[ROWS] = { 5, 4, 3, 2}; //เชื่อมต่อกับ pinouts แถวของแป้นพิมพ์ไบต์ colPins[COLS] = {9, 8, 7, 6}; //เชื่อมต่อกับ pinouts ของคอลัมน์ของปุ่มกด int count=0;

ปุ่มกดปุ่มกด = ปุ่มกด (makeKeymap (คีย์), rowPins, colPins, ROWS, COLS);

การตั้งค่าเป็นโมฆะ ()

{ Serial.begin(9600); lcd.begin(16, 2); lcd.print("ทดสอบปุ่มกด!"); ล่าช้า (1000); lcd.clear(); }

วงเป็นโมฆะ ()

{ คีย์ถ่าน = keypad.getKey (); ถ้า (คีย์! = NO_KEY) { lcd.print (คีย์); Serial.print (คีย์); นับ++; ถ้า (นับ==17) { lcd.clear(); นับ=0; } } }

และอีกครั้ง คุณสามารถเห็นผลของภาพร่างด้านบนในวิดีโอ

สำหรับตัวอย่างโปรเจ็กต์ โปรเจ็กต์ที่น่าจะเป็นการใช้แป้นตัวเลขที่มีการร้องขอมากที่สุด…

ขั้นตอนที่ 4: ตัวอย่างโครงการ – ระบบการเข้าถึง PIN

การใช้งานแป้นตัวเลขที่มีการร้องขอมากที่สุดดูเหมือนจะเป็นแอปพลิเคชั่นรูปแบบ "PIN" โดยที่ Arduino ได้รับคำสั่งให้ทำบางสิ่งโดยยึดตามหมายเลขที่ถูกต้องที่ป้อนลงในปุ่มกด สเก็ตช์ต่อไปนี้ใช้ฮาร์ดแวร์ที่อธิบายไว้สำหรับสเก็ตช์ก่อนหน้าและใช้ระบบป้อน PIN หกหลัก

การดำเนินการที่จะเกิดขึ้นสามารถแทรกลงในฟังก์ชัน correctPIN() และไม่ถูกต้องPIN() และ PIN ถูกตั้งค่าในอาร์เรย์ char PIN[6] ด้วยการทำงานพิเศษเล็กน้อย คุณสามารถสร้างฟังก์ชันเปลี่ยน PIN ของคุณเองได้เช่นกัน

// สวิตช์ PIN พร้อมแป้นตัวเลข 16 หลัก // https://tronixstuff.com #include "Keypad.h" #include #include LiquidCrystal lcd (12, 11, 5, 4, 3, 2);

ไบต์ const ROWS = 4; //สี่แถว

const ไบต์ COLS = 4; // สี่คอลัมน์ char keys [ROWS][COLS] = { { '1', '2', '3', 'A' }, { '4', '5', '6', 'B' }, { '7', '8', '9', 'C' }, { '*', '0', '#', 'D' } }; ไบต์ rowPins[ROWS] = { 5, 4, 3, 2}; //เชื่อมต่อกับ pinouts แถวของแป้นพิมพ์ไบต์ colPins[COLS] = {9, 8, 7, 6}; //เชื่อมต่อกับ pinout ของคอลัมน์ของปุ่มกด

ปุ่มกดปุ่มกด = ปุ่มกด (makeKeymap (คีย์), rowPins, colPins, ROWS, COLS);

ถ่าน 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 "); ล่าช้า (1000); lcd.clear(); lcd.print(" ป้อน PIN…"); }

ถือเป็นโมฆะ correctPIN() // ทำเช่นนี้หากป้อน PIN ที่ถูกต้อง

{ lcd.print("* PIN ที่ถูกต้อง *"); ล่าช้า (1000); lcd.clear(); lcd.print(" ป้อน PIN…"); }

ถือเป็นโมฆะ validPIN() // ทำเช่นนี้หากป้อน PIN ไม่ถูกต้อง

{ lcd.print(" * ลองอีกครั้ง *"); ล่าช้า (1000); lcd.clear(); lcd.print(" ป้อน PIN…"); }

ตรวจสอบเป็นโมฆะ PIN()

{ int ถูกต้อง=0; int ฉัน; สำหรับ (i = 0; i < 6; i++) {

ถ้า (พยายาม==PIN)

{ถูกต้อง++; } } if (correct==6) { correctPIN(); } อื่น ๆ { PIN ไม่ถูกต้อง (); }

สำหรับ (int zz=0; zz<6; zz++) { พยายาม[zz]='0'; } }

เป็นโมฆะ readKeypad ()

{ คีย์ถ่าน = keypad.getKey (); ถ้า (คีย์ != NO_KEY) { พยายาม [z] = คีย์; z++; สวิตช์ (คีย์) { กรณี '*': z=0; หยุดพัก; กรณี '#': z=0; ล่าช้า (100); // สำหรับ debounce พิเศษ lcd.clear(); ตรวจสอบ PIN (); หยุดพัก; } } }

วงเป็นโมฆะ ()

{ readKeypad (); }

โครงการนี้แสดงให้เห็นในวิดีโอ

ตอนนี้คุณจึงสามารถใช้ปุ่มกดแบบสิบสองและสิบหกปุ่มกับระบบ Arduino ของคุณได้ ฉันแน่ใจว่าคุณจะพบสิ่งที่มีประโยชน์และน่าสนใจโดยใช้แป้นพิมพ์ในอนาคตอันใกล้นี้

โพสต์นี้มาถึงคุณโดย pmdway.com – ทุกอย่างสำหรับผู้ผลิตและผู้ที่ชื่นชอบอุปกรณ์อิเล็กทรอนิกส์ พร้อมบริการจัดส่งฟรีทั่วโลก

แนะนำ: