โปรเจกต์ Multiple Button Switches - Polling ที่ง่ายและมีประสิทธิภาพ
แนวทางสำหรับการ Implementing หลายๆ Button Switches โดยใช้ Polling method ที่ง่ายแต่มีประสิทธิภาพ
แนวทางสำหรับการ Implementing หลายๆ Button Switches โดยใช้ Polling method ที่ง่ายแต่มีประสิทธิภาพ
ภาพรวม
บทความนี้เสนอแนวทางที่สามารถปรับแต่งค่าได้สูงในการใช้งาน 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 สองแบบที่พบบ่อยคือ:

เมื่อนำ 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 Switch ตัวที่ เจ็ด เข้าไปในการกำหนดค่า Sketch แบบ OOTB ที่มีสวิตช์เดิมอยู่ 6 ตัว โดยให้ตัวนี้อยู่ที่ Digital Pin 10 และกำหนดค่าเป็น circuit_C1 (ที่มี Pull Down Resistor ขนาด 10k ohm) การเปลี่ยนแปลง Macro/Variable/Code ใน Sketch จะเป็นดังนี้:
'button_switch, button_switch_7, circuit_C1, LOW, false, 0, !switched'
โปรดทราบว่าลำดับของข้อมูล Preset ใน Structure นี้ไม่มีผลต่อการควบคุมการตัดสินใจหรือการประมวลผล - คุณสามารถเพิ่มรายการแบบสุ่มลำดับได้
ทิ้งท้าย
มีความสมดุลที่ต้องคำนึงถึงระหว่างจำนวนสวิตช์ที่จำเป็นสำหรับโปรเจกต์และวิธีที่ใช้ในการกำหนดค่า แม้ว่าบทความนี้จะเป็นการแนะนำเชิงสาธิต แต่ก็นับว่าเหมาะสมในกรณีที่จำนวนสวิตช์มีไม่มากนัก ฉันอาจจะมองหาวิธีอื่นหากจำนวนสวิตช์มีมากกว่า 10 ตัว เช่น การเชื่อมต่อสวิตช์หลายตัวเข้ากับ Analog Pin เพียงช่องเดียว ซึ่งรูปแบบการต่อสายและกระบวนการอ่านค่าสวิตช์จะแตกต่างออกไปมาก ไม่มีวิธีใดที่สมบูรณ์แบบและแต่ละวิธีก็มีข้อจำกัด บางทีฉันอาจจะเขียนบทความในอนาคตโดยใช้วิธีทางเลือกนี้
คุณอาจพบว่าบทความเหล่านี้โดยผู้เขียนคนเดียวกันมีความน่าสนใจและเป็นประโยชน์:
แหล่งข้อมูลออนไลน์อื่นๆ
สนับสนุนเพื่อรับ Source Code หรือแอปพลิเคชันสำหรับโปรเจกต์นี้
Verified user reviews
ล็อกอินด้วยบัญชีบนเว็บนี้แล้วให้คะแนนหรือคอมเมนต์ได้เลย ระบบเก็บผ่าน Supabase ไม่ต้องใช้ GitHub แล้ว
ยังไม่มีรีวิวที่อนุมัติแล้ว เป็นคนแรกที่มาให้ความเห็นได้เลย