Warm-up ทบทวน Arduino และการเขียนโปรแกรมภาษา C/C++
อุปกรณ์ในการทดลอง
- LED RGB 1 ดวง
- ฺบอร์ดทดลอง
- ตัวต้านทาน 330 โอห์ม 3 ตัว
- ตัวต้านทาน 10K โอห์ม 3 ตัว
- Push Button Switch 3 ตัว
- บอร์ด Arduino
- สายไฟ
ผังวงจรของข้อที่ 1 และ ข้อที่ 2
- วงจรทำงานโดยใช้ระดับแรงดันสำหรับ 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