Friday, August 29, 2014

การทดลองใช้ Arduino ควบคุมการทำงานของ RGB LED

Warm-up ทบทวน Arduino และการเขียนโปรแกรมภาษา C/C++


อุปกรณ์ในการทดลอง 
  1. LED RGB 1 ดวง 
  2. ฺบอร์ดทดลอง 
  3. ตัวต้านทาน 330 โอห์ม 3 ตัว 
  4. ตัวต้านทาน 10K โอห์ม 3 ตัว 
  5. Push Button Switch 3 ตัว 
  6. บอร์ด Arduino 
  7. สายไฟ
ผังวงจรของข้อที่ 1 และ ข้อที่ 2 




ภาพจากการทดลองจริง 




 
ข้อที่ 1
จงเขียนโค้ดสำหรับ Arduino และวงจรที่ทำงานได้ตามข้อกำหนดต่อไปนี้ [RGB LED / PWM-based Dimming] 
  • วงจรทำงานโดยใช้ระดับแรงดันสำหรับ I/O ที่ 5V เท่านั้น
  • มีปุ่มกด 3 ปุ่ม (ให้ชื่อว่า R, G, B) ทำงานแบบ Pull-up (active-low) ให้ต่อวงจรปุ่มกดเอง เพื่อใช้งานกับบอร์ด Arduino
  • มีเอาต์พุต 3 ขา ต่อกับวงจร RGB LED (จะใช้แบบ Common-Anode หรือ Common-Cathode ก็ได้) พร้อมตัวต้านทานจำกัดกระแส 3 ตัว
  • เขียนโค้ดด้วยภาษา C++ สำหรับ Arduino เพื่อสร้าง Class ที่มีชื่อว่า "RGB_LED"
  • กำหนดให้ constructor สำหรับคลาส RGB_LED เป็นดังนี้ RGB_LED( int red_pin, int_green_pin, int blue_pin ); โดยรับค่ามาเป็นหมายเลขของ I/O pins สำหรับ 3 ขาของ Arduino ที่จะถูกใช้งานเป็นเอาต์พุตแบบ PWM
  • มีเมธอดอย่างเช่น void setRed( int duty_cycle ), void setGreen( int duty_cycle ), void setBlue( int duty_cycle ) เพื่อใช้กำหนดค่า duty cycle ของขาเอาต์พุต PWM และใช้ในการกำหนดความสว่างของแต่ละสี ใช้คำสั่ง analogWrite() ในการกำหนดค่า
  • กำหนดสมาชิก instance members ตามความจำเป็น เช่น ค่า duty cycles สำหรับแต่ละสี
  • ใช้คลาสดังกล่าวในการเขียนโค้ด (สร้าง object จากคลาสดังกล่าวและเรียกใช้เมธอด) เพื่อสาธิตการทำงานร่วมกับฮาร์ดแวร์จริง
   โค้ดการทำงาน  

   วิดีโอผลการทดลอง  

 
*ใส่หลอดดูดขาวขุ่นเพื่อความชัดเจนของแสงไฟ

ข้อที่ 2  

ถ้ากดปุ่ม R, G หรือ B ค้างไว้อย่างน้อย 100 msec จะเพิ่มค่าขึ้นทีละ 8 (แล้วเริ่มนับเวลาใหม่) ถ้าค่า duty cycle เกิน 255 ให้วนกลับมาเริ่มที่ 0 ใหม่ 

   โค้ดการทำงาน 



   วิดีโอผลการทดลอง  

*ใส่หลอดดูดขาวขุ่นเพื่อความชัดเจนของแสงไฟ

No comments:

Post a Comment