หน้าแรก ดูโปรเจกต์ทั้งหมด
Easy

โปรเจกต์ Multiple Button Switches - Polling ที่ง่ายและมีประสิทธิภาพ

แนวทางสำหรับการ Implementing หลายๆ Button Switches โดยใช้ Polling method ที่ง่ายแต่มีประสิทธิภาพ

โปรเจกต์ Multiple Button Switches - Polling ที่ง่ายและมีประสิทธิภาพ

รายการอุปกรณ์และเครื่องมือ

1x Tactile Switch, Top Actuated
🛒 สั่งซื้อ
1x Breadboard (generic)
🛒 สั่งซื้อ
1x Jumper wires (generic)
🛒 สั่งซื้อ

รายละเอียดและวิธีทำ

การใช้งาน Multiple Button Switches

ภาพรวม

บทความนี้เสนอแนวทางที่สามารถปรับแต่งค่าได้สูงในการใช้งาน Multiple Button Switches ในรูปแบบที่เรียบง่าย ตรงไปตรงมา แต่เชื่อถือได้ โดยใช้เทคนิคการ 'Polling' สวิตช์

บทความนี้ต่อยอดมาจากแนวทางและเทคนิคที่นำเสนอในสิ่งพิมพ์ก่อนหน้า (บทเรียนสอนการใช้งาน) ได้แก่ Understanding & Using Button Switches เนื้อหาพื้นฐานและหลักการของวิธีการที่นำเสนอในที่นี้ส่วนใหญ่มาจากสิ่งที่นำเสนอในบทเรียนดังกล่าว หากคุณต้องการความเข้าใจที่ลึกซึ้งยิ่งขึ้นเกี่ยวกับทฤษฎีและการใช้งาน Button Switches พื้นฐาน โปรดอ้างอิงจากบทเรียนนั้น

ตัวอย่าง Sketch ที่เป็นหัวใจสำคัญของบทความนี้ สามารถทำงานร่วมกับ Multiple Button Switches ที่ต่อวงจรได้ทั้งสองแบบที่พบเห็นได้ทั่วไป ได้แก่ วงจรที่มี Pull Down Resistors ขนาด 10k ohm (ดูรูปที่ 1) หรือแบบที่ไม่มี (ดูรูปที่ 2)

การออกแบบ Sketch นี้ช่วยให้ Button Switches สามารถต่อสายได้ทั้งสองแบบหรือผสมกันทั้งสองแบบ โดย Sketch สามารถกำหนดค่าให้ทำงานร่วมกับรูปแบบการต่อสายแบบใดแบบหนึ่งหรือทั้งสองแบบรวมกันได้อย่างง่ายดาย

โดยสรุป รูปแบบการต่อสาย Button Switch สองแบบที่พบบ่อยคือ:

Commonly used switch wiring schemes

เมื่อนำ Sketch ไปใช้งาน สิ่งสำคัญคือต้องตัดสินใจว่ารูปแบบการต่อสายสวิตช์แบบใดที่ใช้สำหรับแต่ละ Button Switch ที่คุณต้องการเชื่อมต่อ เนื่องจากสิ่งนี้มีผลโดยตรงต่อการตีความสถานะอินพุตสำหรับสวิตช์ ON และ OFF หากคุณไม่แน่ใจ ให้ลองดูบทเรียนที่กล่าวถึงข้างต้น นั่นคือ Understanding & Using Button Switches

มันทำงานอย่างไร?

Sketch นี้สามารถรองรับ Button Switches จำนวนมาก โดยแต่ละตัวเชื่อมต่อกับ Digital Pin ดังนั้นจำนวนของ Button Switches ที่สามารถเชื่อมต่อได้จึงขึ้นอยู่กับ Architecture ของ Microcontroller ที่ใช้ ยกตัวอย่างเช่น Arduino Mega 2560 สามารถรองรับการเชื่อมต่อสวิตช์แบบดิจิทัลได้นับสิบตัว ซึ่งเพียงพอสำหรับการสร้างแบบจำลองสะพานเดินเรือของ Star Ship Enterprise เลยทีเดียว! อย่างไรก็ตาม ในค่าเริ่มต้นแบบพร้อมใช้งาน (OOTB) Sketch นี้ถูกกำหนดค่าไว้สำหรับ Button Switches เพียง 6 ตัว ดังนั้น Arduino UNO จึงเป็นตัวเลือกที่ดี

Sketch แบบ OOTB ได้รับการตั้งค่าไว้ล่วงหน้าสำหรับ Button Switches 6 ตัว ซึ่งแต่ละตัวต่อวงจรแบบ circuit_C2 ซึ่งเป็นรูปแบบการต่อสายที่ง่ายที่สุด แต่ด้วยการกำหนดค่าข้อมูลสวิตช์ที่เก็บไว้ใน Switch Control Structure ทำให้สามารถรองรับและกำหนดค่า Multiple Button Switches ได้อย่างมีประสิทธิภาพ ไม่ว่าจะเป็นการต่อวงจรแบบใดแบบหนึ่งหรือผสมกันทั้งสองสไตล์ (circuit_C1 และ/หรือ circuit_C2)

เมื่อกำหนดค่าเสร็จแล้ว Sketch จะทำการ Poll Button Switch แต่ละตัวที่ประกาศไว้ตามลำดับตามการระบุค่าที่กำหนด หากตรวจพบการกดสวิตช์และผ่านกระบวนการ Debounce แล้ว ฟังก์ชันการอ่านจะคืนค่าผลลัพธ์เป็นสถานะ 'Switched' ซึ่งจะถูกนำไปดำเนินการต่อโดยคำสั่ง Switch-case ใน Loop หลักที่เกี่ยวข้อง

เพียงเท่านี้ ทุกอย่างชัดเจนมาก แต่เรามาดูกันว่าเราจะปรับเปลี่ยนอะไรได้บ้าง

ขั้นตอนการนำไปใช้งาน

การใช้งาน Sketch นี้ค่อนข้างตรงไปตรงมาและสามารถทำความเข้าใจได้โดยตรงจากการอ้างอิง Sketch แบบ OOTB อย่างไรก็ตาม ขั้นตอนที่ต้องปฏิบัติตามมีดังนี้:

  • ตัดสินใจว่าคุณต้องการกำหนดค่า Button Switches จำนวนกี่ตัว
  • สำหรับ Button Switch แต่ละตัว ให้ตัดสินใจว่าควรต่อสายอย่างไร - ไม่ว่าจะเป็น 'circuit_C1' หรือ 'circuit_C2'
  • ต่อสายสวิตช์ตามตัวเลือกข้างต้นและเชื่อมต่อเข้ากับ Microcontroller
  • โหลด Sketch ขึ้นมา
  • อัปเดต Macro Definition '#define num_switches' ให้เป็นจำนวนของ Button Switches ที่คุณกำลังเชื่อมต่อ
  • อัปเดตรายการ 'Switch to Pin Macro Definition List' สำหรับ Button Switches ที่คุณกำลังเชื่อมต่อ โดยเพิ่มหนึ่งรายการสำหรับแต่ละ Button Switch และระบุ Digital Pin Number ให้เหมาะสม เพื่อให้อ่านง่ายขึ้น ให้ทำตามโครงสร้างการตั้งชื่อที่มีอยู่เดิม - ดูตัวอย่างใน Sketch แบบ OOTB
  • จากนั้นให้เพิ่มรายการข้อมูล Preset สำหรับ Button Switch แต่ละตัวใน 'Switch Control Sruct(ure) Declaration' ('switch_control') รายการทั้งหมดควรเหมือนกับรายการใน OOTB ยกเว้นรายการข้อมูลที่สอง ('switch_pin') และสาม ('circuit_type') ซึ่งจะเป็น Button Switches ที่กำหนดไว้ก่อนหน้าและ Macro Definition ของประเภทวงจรที่เกี่ยวข้องตามลำดับ
  • สุดท้าย สำหรับ Button Switch แต่ละตัว ให้ตัดสินใจว่าคุณต้องการให้มันทำอะไร - ดูในส่วน Switch-case ของ Loop หลักภายใต้ For Loop ของการ Polling

ตัวอย่าง

ฉันต้องการเพิ่ม Button Switch ตัวที่ เจ็ด เข้าไปในการกำหนดค่า Sketch แบบ OOTB ที่มีสวิตช์เดิมอยู่ 6 ตัว โดยให้ตัวนี้อยู่ที่ Digital Pin 10 และกำหนดค่าเป็น circuit_C1 (ที่มี Pull Down Resistor ขนาด 10k ohm) การเปลี่ยนแปลง Macro/Variable/Code ใน Sketch จะเป็นดังนี้:

  • กำหนดจำนวน Button Switches เป็น '#define num_switches 7'
  • เพิ่มการกำหนด Digital Pin ให้กับ Button Switch ใหม่ใน 'Switch to Pin Macro Definition List' นั่นคือ '#define button_switch_7 10'
  • เพิ่มข้อมูล Preset ใหม่ใน 'Switch Control Sruct(ure) Declaration' ('switch_control') สำหรับ Button Switch ตัวใหม่ นั่นคือ
'button_switch, button_switch_7, circuit_C1, LOW, false, 0, !switched'
โปรดทราบว่าลำดับของข้อมูล Preset ใน Structure นี้ไม่มีผลต่อการควบคุมการตัดสินใจหรือการประมวลผล - คุณสามารถเพิ่มรายการแบบสุ่มลำดับได้
  • เพิ่มส่วน Switch-case ใน Loop หลักเพื่อจัดการกับ Button Switch ที่คุณเพิ่งเพิ่มเข้าไป

ทิ้งท้าย

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

อ่านเพิ่มเติม

คุณอาจพบว่าบทความเหล่านี้โดยผู้เขียนคนเดียวกันมีความน่าสนใจและเป็นประโยชน์:

  • UnderstandIng and UsIng Button SwItches, the basIcs - Button Switches เป็นอุปกรณ์ที่ดูเหมือนง่ายแต่มักจะมีความยุ่งยาก บทเรียนนี้จะให้ข้อมูลเชิงลึกเกี่ยวกับการใช้งาน Button Switch อย่างง่าย พร้อมความยืดหยุ่นในการสำรวจความแตกต่างของการออกแบบวงจร วิธีการอ่านค่าแบบต่างๆ และการทำ Debouncing
  • Toggle Switches - วิธีการอ่านสวิตช์แบบ Toggle อย่างเชื่อถือได้
  • External Interrupts, โครงสร้างทั่วไปที่รองรับ Multiple Interrupts แบบ Asynchronous พร้อมกัน กำหนดค่า External Interrupts หลายตัวที่มีลักษณะแตกต่างกัน และเพิ่มโค้ดเพื่อรองรับการประมวลผลแบบ Asynchronous หลังเกิด Interrupt
  • Programmatic Timed Reminder Alerting, โครงสร้างโปรแกรมสำหรับการแจ้งเตือนแบบ Asynchronous ทั้งแบบนับเวลาที่ผ่านไปและแบบ Real-time กำหนดการแจ้งเตือนกี่รายการก็ได้ (ตั้งแต่เสี้ยววินาทีจนถึงหลายชั่วโมง) และประมวลผลแบบ Asynchronous

แหล่งข้อมูลออนไลน์อื่นๆ

Digital pins

Overview of Interrupts

Code

🔒 ปลดล็อก Code

สนับสนุนเพื่อรับ Source Code หรือแอปพลิเคชันสำหรับโปรเจกต์นี้

รหัสอ้างอิงโปรเจกต์: multiple-button-switches-easy-effective-polling-e827af
99 บาท
PromptPay QR Code

Verified user reviews

รีวิวและความคิดเห็นจากผู้ใช้จริง

ล็อกอินด้วยบัญชีบนเว็บนี้แล้วให้คะแนนหรือคอมเมนต์ได้เลย ระบบเก็บผ่าน Supabase ไม่ต้องใช้ GitHub แล้ว

กำลังโหลดรีวิว...