<< Go Back

การต่อและการเขียนโปรแกรม RGB color module
RGB color module คือ วงจรแสดงสี RGB R คือ Red (สีแดง) G คือ Green (สีเขียว) และ B คือ Blue (สีน้ำเงินหรือฟ้า) ซึ่งไฟทั้ง 3 สี จะอยู่ในหลอด LED เดียวกัน โดยการเขียนโปรแกรม Sketch จะกำหนดเงื่อนไขให้ฟังทั้ง 3 สีติดสลับกันวนไป
รูปด้านล่างคือ ชุดวงจร RGB color module โดยขาอุปกรณ์จะมีอยู่ด้วยกัน 4 ขา คือ (ไล่จากซ้ายไปขาว)           
- ขาที่ 1 คือ B
- ขาที่ 2 คือ G
- ขาที่ 3 คือ  R
- ขาที่ 4 คือ – หรือ GNO (กราวด์)

ทดลองใช้ Arduino ควบคุมหลอด LED RGB

1. ขา R เชื่อมต่อกับหมุด -9
2. ขา G เชื่อมต่อกับหมุด -10
3. ขา B เชื่อมต่อกับหมุด -11
4. ขา Cathode เชื่อมต่อกับหมุด GND

โค้ดโปรแกรมควบคุม Arduino

การเขียนโปรแกรมใช้งานพอร์ตทำหน้าที่เอาท์พุทพอร์ตเบื้องต้น

ทฤษฎีพื้นฐาน
บอร์ดArduino รุ่นที่ใช้ไอซีไมโครคอนโทรลเลอร์ ATMEGA328, ATMEGA168, ATMEGA8 จะมีพอร์ตดิจิทัลให้สามารถเชื่อมต่อใช้งานได้ 14 ขาด้วยกันโดยเริ่มจากขา D0, D1,…D13 แต่ในขณะใช้งานที่มีการติดต่อสื่อสารกับคอมพิวเตอร์ผ่านทางพอร์ตอนุกรม (สาย USB ที่กำลังเชื่อมต่อกับคอมพิวเตอร์) ขา D0 และ D1 จะถูกใช้งานรับส่งข้อมูลอยู่ ดังนั้นจึงห้ามใช้ในขณะที่ใช้งานพอร์ตอนุกรม

รูป ขาพอร์ตใช้งานของไอซี Arduino เบอร์ ATMEGA328

ฟังก์ชันที่ใช้

ในตัวอย่างนี้ประกอบด้วยฟังก์ชันกำหนดโหมดการทำงานให้กับขาพอร์ต สามารถกำหนดได้ทั้งขาดิจิทัลโดยใส่เพียงตัวเลขของขา (0, 1, 2,…13) และขาแอนาลอกที่ต้องการให้ทำงานในโหมดดิจิทัลแต่การใส่ขาต้องใส่ A นำหน้าซึ่งใช้ได้เฉพาะ A0, A1,…A5 ส่วนขา A6 และ A7 ไม่สามารถใช้งานในโหมดดิจิทัลได้ รูปแบบของฟังก์ชันเป็นดังนี้

pin: หมายเลขขาที่ต้องการเซตโหมด
              mode: INPUT, OUTPUT, INPUT_PULLUP

และฟังก์ชันส่งค่าลอจิกดิจิทัลไปยังขาพอร์ต ค่า HIGH เป็นการส่งลอจิก 1 และค่า LOW เป็นการส่งลอจิก 0 ออกไปยังขาพอร์ต ซึ่งฟังก์ชันนี้จะทำงานได้จะต้องมีการใช้ฟังก์ชัน pinMode ก่อน

pin: หมายเลขขาที่ต้องการเขียนลอจิกออกพอร์ต
value: HIGH or LOW

ฟังก์ชันที่สามคือ ฟังก์ชั่นหน่วงเวลาหรือฟังก์ชันหยุดค้าง การใช้งานสามารถกำหนดตัวเลขของเวลาที่ต้องการหยุดค้างโดยตัวเลขที่ใส่เป็นตัวเลขของเวลาหน่วยเป็นมิลลิวินาที ตัวเลขของเวลาที่ใส่ได้สูงสุดคือ 4,294,967,295 ซึ่งเป็นขนาดของตัวแปร unsigned long

ms: ตัวเลขที่หยุดค้างของเวลาหน่วยมิลลิวินาที (unsigned long)

การทดลองที่ 1 เขียนโปรแกรมไฟวิ่ง LED 4 ตัว ติด-ดับ เรียงกันไปโดยให้ติดครั้งละ 1 ตัวและที่เหลือดับผังงาน

อุปกรณ์ที่ใช้ในการทดลอง

หลอดไฟ LED จำนวน 4 ดวง
สายจัมเปอร์ ผู้-ผู้ จำนวน 6 เส้น
Bread Board จำนวน 1 อัน

การต่อวงจร

การต่อวงจรไมโครคอนโทรลเลอร์ Arduino ที่ใช้บอร์ดโมดูล Arduino สำเร็จรูปลงบอร์ดทดลอง

โค้ดโปรแกรมควบคุม Arduino

รายละเอียดโค้ดโปรแกรม
- บรรทัดที่ 1-4 กำหนดชื่อ LED1, 2, 3, 4 ให้แทน 2, 3, 4, 5 (เป็นขาที่ LED ต่ออยู่กับ Arduino)
- บรรทัดที่ 7 กำหนดอัตราเร็วของการสื่อสารของพอร์ตอนุกรม (กำหนด Baud rate)
- บรรทัดที่ 8-11 กำหนดโหมดให้กับขาพอร์ตทา งานเป็นเอาต์พุทพอร์ต
- บรรทัดที่ 15 ส่งลอจิก 1 ออกพอร์ตที่ใช้ชื่อว่า LED1
- บรรทัดที่ 16 ส่งลอจิก 0 ออกพอร์ตที่ใช้ชื่อว่า LED2
- บรรทัดที่ 17 ส่งลอจิก 0 ออกพอร์ตที่ใช้ชื่อว่า LED3
- บรรทัดที่ 18 ส่งลอจิก 0 ออกพอร์ตที่ใช้ชื่อว่า LED4
- บรรทัดที่ 19 หน่วงเวลา 200 mS (1/5 วินาที)

การทดลองที่ 2 เขียนโปรแกรมไฟวิ่ง LED 4 ตัวติดดับเรียงกันไปโดยให้ติดครั้งละ 1 ตัวและที่เหลือดับเช่นเดียวกับการทดลองที่หนึ่ง แต่ใช้วิธีการเขียนฟังก์ชันรองชนิดรับค่าแต่ไม่ส่งคืนค่าขึ้นใช้งานเองผังงาน

คำสั่งควบคุม Arduino

รายละเอียดโค้ดโปรแกรม
- บรรทัดที่ 1 ประกาศตัวแปรแบบอาร์เรย์ชื่อ LED_pin และกำหนดค่าเป็น 2, 3, 4, 5 (เป็นขาที่ LED ต่ออยู่กับ Arduino)
- บรรทัดที่ 2 ประกาศรูปแบบ (Prototype) ของฟังก์ชันรอง ซึ่งเป็นฟังก์ชำนให้ทำหน้าที่รับค่าที่ส่งมาจากฟังก์ชันหลักแล้วคำนวณเพื่อส่งลอจิกออกพอร์ต
- บรรทัดที่ 5 กำหนดอัตราเร็วของการสื่อสารของพอร์ตอนุกรม (กำหนด Baud rate)
- บรรทัดที่ 6-9 กำหนดโหมดให้กับขาพอร์ตทำงานเป็นเอาต์พุทพอร์ต โดยใช้คำสั่ง for ในการวนทำซ้ำ
- บรรทัดที่ 14 หน่วงเวลา 200 mS (1/5 วินาที)
- บรรทัดที่ 22-28 ฟังก์ชันรองที่รับค่าเข้ามาจากฟังก์ชันหลักผ่านตัวแปร data แล้วนำค่าเข้ามาตรวจสอบว่าควรจะต้องส่งลอจิก 1 หรือลอจิก 0 ออกทางพอร์ตใด

การทดลองที่ 3  การทดลองต่อ Motor Drive Module L298N  (ขับมอเตอร์)  กับมอเตอร์ล้อ
สิ่งที่เป็นพลังขับเคลื่อนหลักให้กับหุ่นยนต์นั้นคือ มอเตอร์ ซึ่งต้องการการควบคุมจาก ชุดไดรว์มอเตอร์ (Motor Driver) ที่จะมาควบคุม ทั้ง ทิศทาง และ ความเร็วซึ่งตัวขับมอเตอร์ในมี่นี้คือ Module L298N  ตัวขับมอเตอร์มี 2 ตัวแบบแยกอิสระ สามารถควบคุมความเร็วมอเตอร์ได้ ใช้ไฟ 5 โวลต์ สามารถรับไฟเข้า 7-35 โวลต์ได้ มีวงจรเรกูเลตในตัว ขับกระแสสูงสุด ข้างละ 2A  Module L298N เป็นชุดขับมอเตอร์ชนิด H-Bridge ซึ่งส่วนใหญ่จะถูกนำไปใช้ในการควบคุมทิศทางและความเร็วของมอเตอร์
Out 1: ช่องต่อขั้วไฟของมอเตอร์ A
Out 2: ช่องต่อขั้วไฟของมอเตอร์ A
Out 3: ช่องต่อขั้วไฟของมอเตอร์ B
Out 4: ช่องต่อขั้วไฟของมอเตอร์ B
12V: ช่องจ่ายไฟเลี้ยงมอเตอร์ 12V (ต่อได้ตั้งแต่ 5V ถึง 35V)
GND: ช่องต่อไฟลบ (Ground)
5V: ช่องจ่ายไฟเลี้ยงมอเตอร์ 5V (หากมีการต่อไฟเลี้ยงที่ช่อง 12V แล้ว
ช่องนี้จะทำหน้าที่จ่ายไฟออก เป็น 5V Output สามารถต่อไฟจากช่องนี้ไปเลี้ยงบอร์ด Arduino ได้
ENA: ช่องต่อสัญญาณ PWM สำหรับมอเตอร์ A
IN1: ช่องต่อสัญญาณลอจิคเพื่อควบคุมทิศทางของมอเตอร์ A
IN2: ช่องต่อสัญญาณลอจิคเพื่อควบคุมทิศทางของมอเตอร์ A
IN3: ช่องต่อสัญญาณลอจิคเพื่อควบคุมทิศทางของมอเตอร์ B
IN4: ช่องต่อสัญญาณลอจิคเพื่อควบคุมทิศทางของมอเตอร์ B
ENB: ช่องต่อสัญญาณ PWM สำหรับมอเตอร์ B

อุปกรณ์ที่ใช้ในการทดลอง

Motor Drive Module L298N  1 ตัว
มอเตอร์จำนวน 1 อัน
ล้อ จำนวน 1 ล้อ
สายจัมเปอร์ ผุ้ – ผู้ จำนวน 5 เส้น

การต่อวงจร

1. สายจัมเปอร์สีน้ำเงินต่อที่ช่องต่อ GND (กราวน์)
2. สายจัมเปอร์สีแดงต่อที่ช่องไฟ 5 โวลต์
3. สายจัมเปอร์สีส้มต่อที่ขา IN3
4. สายจัมเปอร์สีน้ำตาลต่อที่ขา IN4
5. สายจัมเปอร์สีขาวต่อที่ขา ENB

คำสั่งควบคุม Arduino


 

<< Go Back