การใช้งาน โมดูลปุ่มกด 12 ปุ่ม 3x4 Matrix Keypad บน Raspberry pi ด้วย Node js
วันนี้ผมจะพาท่านผู้อ่านไปใช้งาน โมดูลปุ่มกด 12 ปุ่ม 3x4 Matrix Keypad เชื่อมต่อกับ Raspberry pi โดยใช้ Node js ในการเขียนโปรแกรม เพื่อให้ทุกท่านไปประยุกต์ใช้งานกัน
3x4 Matrix Keypad คือ สวิทช์ที่นำมาต่อกันแบบแนวนอนและแนวตั้ง การใช้งานต้องใช้วิธีสแกน ส่งสัญญาณทาง Row และรับทาง Column ดังรูป
ถ้ายังไม่ลง Node js ดูบทความ
มาต่อใช้งานและโปรแกรมกัน
1. ต่อ Keypad เข้ากับ Raspberry pi
Pi GPIO6 to keypad R1
Pi GPIO13 to keypad R2
Pi GPIO19 to keypad R3
Pi GPIO26 to keypad R4
Pi GPIO21 to keypad C1
Pi GPIO20 to keypad C2
Pi GPIO16 to keypad C3
2. เนื่องจากผมต้องการต่อ input pull up แบบ internal
กำหนดค่าใน /boot/config.txt New "gpio" config command
กด ctrl+x > y เพื่อ save แล้ว Reboot
2. สร้างโฟลเดอร์ของโปรเจค จากนั้น init โปรเจค
3. ติดตั้ง module onoff npmjs.com/package/onoff
4. สร้างไฟล์ app.js เพื่อเขียนโปรแกรม จากนั้นกด Save
5. กลับไปที่ Terminal รันโปรแกรม พิมพ์คำสั่ง node app แล้วลองกดปุ่มดู
มาดูการทำงานของโปรแกรมคร่าวๆ
const Gpio = require('onoff').Gpio;
เรียกใช้งาน module onoff เพื่อควบคุม gpio
const keypadR1 = new Gpio(6, 'out');
กำหนดขา 6 เป็น output สำหรับ keypad row
const keypadC1 = new Gpio(21, 'in', 'falling', {debounceTimeout: 10});
กำหนดขา 21 เป็น input สำหรับ keypad column, falling=interrupt ขอบลบ, debounce=10ms
let scanRow = 0
const keys = [
['1','2','3'],
['4','5','6'],
['7','8','9'],
['*','0','#'],
]
กำหนดตัวแปร scanRow=นับค่า row, keys=ค่า key
keypadC1.watch((err, value) => {
if (err) {
throw err;
}
console.log('keypad C1')
checkKey(0)
});
กำหนด interrupt รับปุ่ม
const checkKey = (col) => {
console.log('Key:', keys[scanRow][col], new Date().getTime())
}
ฟังชั่นแสดงค่า key
const scanInterval = setInterval(function(){
// console.log('scanRow:', scanRow)
if(++scanRow >= 4) scanRow = 0;
keypadR1.writeSync(1)
keypadR2.writeSync(1)
keypadR3.writeSync(1)
keypadR4.writeSync(1)
switch(scanRow) {
case 0: keypadR1.writeSync(0); break;
case 1: keypadR2.writeSync(0); break;
case 2: keypadR3.writeSync(0); break;
case 3: keypadR4.writeSync(0); break;
}
}, 50);
สแกน row ทุกๆ 50ms
ฝากกดติดตาม blog นี้ด้วยนะครับ
ติดตามพูดคุยได้ที่ facebook: Bulantech
การใช้งาน โมดูลปุ่มกด 12 ปุ่ม 3x4 Matrix Keypad บน Raspberry pi ด้วย Node js
Reviewed by amaloma
on
ตุลาคม 08, 2564
Rating:

ไม่มีความคิดเห็น