

โปรเจกต์ของผมเกี่ยวกับการกะพริบหรือเปิด/ปิด LED ด้วย IR proximity sensor, button และ potentiometer สำหรับปรับความสว่างของ LED
ผมสร้างโปรเจกต์นี้ขึ้นมาเพื่อทำความเข้าใจ Serial communication ครับ
การควบคุมแบบ Serial เชิงโต้ตอบและการรวม Sensor
โปรเจกต์นี้สำรวจแนวคิดของ "Sensor Fusion" และการควบคุม Serial เชิงโต้ตอบ แทนที่จะเป็นพฤติกรรมที่ถูกเขียนโค้ดไว้ตายตัว ระบบนี้ช่วยให้ผู้ใช้สามารถเปิดหรือปิดอุปกรณ์อินพุตต่างๆ (IR sensor, Buttons, หรือ Potentiometer) ได้แบบไดนามิกผ่านคำสั่งซอฟต์แวร์ ซึ่งเป็นการแสดงให้เห็นถึงระดับการสื่อสารที่ซับซ้อนระหว่างคอมพิวเตอร์และ Arduino
การเชื่อมต่อ Hardware
- Sharp IR Proximity Sensor: เป็น analog sensor ที่วัดระยะทางด้วยหลักการ triangulation มีประสิทธิภาพสูงในช่วง 10-80cm ในโปรเจกต์นี้ ทำหน้าที่เป็นสวิตช์เปิด/ปิด LED แบบไม่สัมผัส
- Rotary Potentiometer: ใช้สำหรับการควบคุม Pulse Width Modulation (PWM) การหมุนลูกบิดจะปรับ duty cycle ของสัญญาณที่ส่งไปยัง LED ซึ่งทำให้สามารถหรี่หรือเพิ่มความสว่างได้
- Tactile Buttons: เป็นอินเทอร์เฟซทางกายภาพที่คุ้นเคยสำหรับการควบคุมด้วยมือ
ตรรกะและการใช้งานคำสั่ง Serial
โปรเจกต์นี้ใช้ Serial Buffer ของ Arduino เพื่อรอรับ string ที่เฉพาะเจาะจง:
- Command 'ir' / '!ir': สลับการทำงานของตรรกะ proximity เมื่อเปิดใช้งาน Arduino จะตรวจสอบค่า analog จาก Sharp sensor อย่างต่อเนื่อง หากตรวจพบวัตถุภายในเกณฑ์ที่กำหนด จะสลับสถานะของ LED
- Command 'bt' / '!bt': เปิดหรือปิดการทำงานของ physical buttons
- Command 'pot' / '!pot': เปิดใช้งานโหมดควบคุมความสว่าง เมื่อทำงาน ค่า
analogRead()จาก potentiometer จะถูกแมปไปยังช่วงanalogWrite()(0-255) สำหรับขา LED
โครงสร้างนี้ช่วยให้การออกแบบโค้ดเป็นแบบโมดูลาร์ โดยที่พฤติกรรมของแต่ละคอมโพเนนต์จะถูกห่อหุ้มและควบคุมโดย "command listener" ส่วนกลาง ทำให้ระบบมีความยืดหยุ่นสูงสำหรับการขยายในอนาคต
ช่วงการวัดระยะทางที่มีประสิทธิภาพสำหรับ proximity sensor นี้คือ 10-80cm หากวัตถุอยู่ใกล้กว่าระยะทางที่สั้นที่สุด จะรายงานค่า analog output ที่สูงขึ้นอย่างมีนัยสำคัญและไม่สอดคล้องกับผลลัพธ์ที่คาดไว้ในช่วงที่กำหนด ตัวอย่างเช่น เมื่อวัตถุอยู่ห่างจาก sensor 1 cm จะรายงานค่า `analogRead()` ที่ 322 อย่างไรก็ตาม เมื่อวัตถุอยู่ห่าง 5 cm output คือ 655.for การปรับความสว่างของ LED ผมได้เพิ่ม button อีกหนึ่งตัว และเพียงแค่กดเท่านั้นคุณก็สามารถปรับความสว่างได้
มันทำงานโดยใช้ Serial communication....เมื่อคุณส่ง 'ir', IR sensor จะถูกเปิดใช้งาน, เมื่อคุณส่ง '!ir', IR sensor จะถูกปิดใช้งาน ในทำนองเดียวกันเมื่อคุณส่ง 'bt' หรือ '!bt' button จะถูกเปิดใช้งานหรือปิดใช้งานตามลำดับ และ pot ก็เช่นกัน เมื่อคุณส่ง 'pot' หรือ '!pot' potentiometer จะถูกเปิดใช้งานหรือปิดใช้งานตามลำดับ
เมื่อ button หรือ sensor หรือ potentiometer ถูกเปิดใช้งาน จะแสดง 'ir enabled' หรือ 'bt enabled' ใน Serial monitor และเมื่อส่วนใดส่วนหนึ่งเหล่านี้ถูกปิดใช้งาน จะแสดง 'ir disabled' หรือ 'bt disabled'