ตัวอย่างใช้งาน Micro:bit Education Kit V1.3 ตอนที่ 3

ตอนที่ 3 จะมาพูดถึงอุปกรณ์เอาต์พุต 2 ตัว คือเซอร์โวมอเตอร์ และ LED 3 สี RGB

RC เซอร์โวมอเตอร์

     RC เซอร์โวมอเตอร์ คือชุดเฟืองขับมอเตอร์ที่มีวงจรขับมอเตอร์ในตัว ผู้ใช้งานส่งสัญญาณควบคุมเป็นความกว้างพัลส์ให้กับตัวมันก็จะสามารถควบคุมตำแหน่งของมอเตอร์ให้เคลื่อนที่ไปยังตำแหน่งที่ต้องการในช่วง 0-180 องศา

สำหรับเซอร์โวมอเตอร์ที่ให้ในชุดนี้เป็นเซอร์โวมอเตอร์ขนาดเล็ก มีสายเชื่อมต่อ 3 เส้นประกอบด้วย

    สีน้ำตาล    เป็นกราวด์

    สีแดง        เป็นไฟเลี้ยง 4.8V-6V

    สีเหลือง        เป็นสายสัญญาณควบคุม

ชุดคำสั่งควบคุมเซอร์โว

คำสั่ง servo write pin

อยู่ในหัวข้อ pins คำสั่งนี้จะส่งค่าไปยังเซอร์โวมอเตอร์ โดยกำหนดตำแหน่งเป็นองศาระหว่าง 0-180 องศา ในตำแหน่งขาที่ระบุ สำหรับบอร์ด AX-microBIT ขาเซอร์โวใช้ตำแหน่ง P8 และ P12

คำสั่ง servo set pulse pin

อยู่ในหัวข้อ pins คำสั่งนี้จะส่งค่าไปยังเซอร์โวมอเตอร์ โดยกำหนดตำแหน่งเป็นค่าความกว้างพัลส์ช่วงบวก โดยปกติค่าความกว้างพัลส์ที่ใช้ควบคุมเซอร์โวมอเตอร์จะอยู่ในช่วง 1000-2000 ไมโครวินาที (us) เทียบเคียงตำแหน่ง 0-180 องศานั่นเอง

 

ตัวอย่างที่ 19 ทดสอบขับเคลื่อนเซอร์โวอย่างง่าย

https://makecode.microbit.org/_5z46LffWp11r

สำหรับการต่อเซอร์โวมอเตอร์เข้ากับบอร์ด AX-microBIT จะต้องต่อไฟเลี้ยงจากภายนอกด้วยเนื่องจากเซอร์โวมอเตอร์ ขณะเคลื่อนที่และมีโหลดอาจจะกินกระแสมากกว่า 100 mA จะมีปัญหากับการจ่ายไฟจากพอร์ต USB ได้

การเสียบสายเซอร์โวมอเตอร์ให้ดูสีของสาย ให้สีน้ำตาล(กราวด์) ตรงกับสัญลักษณ์เครื่องหมาย (-) ตามรูป

ทดสอบการทำงาน

เสียบอแดปเตอร์จ่ายไฟให้กับบอร์ด AX-micrBIT จากนั้นเปิดสวิตช์ไปที่ตำแหน่ง ON

เมื่อกดสวิตช์ A เซอร์โวมอเตอร์จะหมุนทวนเข็มนาฬิกาไปหยุดที่ตำแหน่ง 180 องศา

เมื่อกดสวิตช์ B เซอร์โวมอเตอร์จะหมุนตามเข็มนาฬิกาไปหยุดที่ตำแหน่ง 0 องศา

เมื่อกดสวิตช์ A และ B พร้อมกัน เซอร์โวมอเตอร์จะเลื่อนมาตรงกลางตำแหน่งประมาณ 90 องศา

 

ตัวอย่างที่ 20 หาตำแหน่งเซอร์โวมอเตอร์ด้วยตัวต้านทานปรับค่าได้

https://makecode.microbit.org/_W3d6EqUk6PCL

เพื่อเปรียบเทียบค่ากับตำแหน่งของเซอร์โวมอเตอร์ที่เกิดขึ้นจริง จะใช้ตัวต้านทานปรับค่าได้เป็นตัวกำหนดตำแหน่งของของเซอร์โวมอเตอร์และนำค่าแสดงที่หน้าต่าง Console Device แต่ค่าองศาของเซอร์โวมอเตอร์มีช่วง 0-180 ส่วนค่าจากตัวต้านทานปรับค่าได้จากการอ่านค่าแอนะล็อกมีค่าในช่วง 0-1023 จำเป็นต้องนำคำสั่ง map มาช่วย

การทำงานของโปรแกรม

    ตัวอย่างนี้กำหนดค่าตัวแปร X เพื่อเก็บค่าแอนะล็อกที่อ่านได้จากขา P2 โดยก่อนจะเก็บค่าต้องทำการแปลงให้อยู่ในช่วง 0-180 ก่อนจากคำสั่ง map จากนั้นนำค่าที่ได้ส่งไปยังเซอร์โวมอเตอร์ พร้อมกับแสดงค่าที่ Console Device ด้วย

การทดสอบ

เมื่อปรับตัวต้านทานปรับค่าได้ ตำแหน่งของเซอร์โวมอเตอร์จะเปลี่ยนตามการปรับจาก 0-180 องศา ซึ่งสามารถตรวจสอบค่าตัวเลขที่ส่งไปยังเซอร์โวมอเตอร์ได้จากหน้าต่าง Console Device

ZX-RGB3C LED 3 สี RGB โปรแกรมได้

ZX-LED3C เป็น LED ที่ใช้ไอซี WS2812 ติดตั้งไว้ 3 ดวง LED แบบนี้จะสามารถต่อพ่วงไปได้เรื่อยๆ โดยใช้สายสัญญาณเพียงเส้นเดียว กำหนดสีได้ถึง 65,535 สี ปรับความสว่างได้ 255 ระดับ ทำงานที่ไฟเลี้ยง +3 ถึง 5V

เพิ่ม Extension NeoPixel

ก่อนใช้งาน ZX-LED3C จะต้องเพิ่ม Extension ก่อนชื่อ neopixel โดยทาง Adafruit ทำขึ้นมาและฝังเป็น Extension มาตรฐานที่ไม่ต้องใส่ลิงก์เพิ่ม โดยทำตามขั้นตอนในรูปได้เลย

 

ตัวอย่างที่ 21 ให้ ZX-LED3C ทุกดวงติดพร้อมกันด้วยสีที่กำหนด

https://makecode.microbit.org/_UEpYyVgj8VAi

ในชุด microbit Education Kit มี ZX-LED3C อยู่ 2 ชุดสามารถนำมาต่อพ่วงกันได้ การเสียบสายให้ใช้สาย JST3AF-8 ซึ่งปลายสายจะแยกออกจากกัน สังเกตตำแหน่งการเสียบสายตามรูป โดยเชื่อมต่อกับขา P12 ของ micro:bit

การทำงาน

เมื่อใช้ Neopixel จะต้องประกาศตัวแปรชื่อ strip เป็นค่ามาตรฐานในหัวข้อ Neopixel อยู่แล้วเพื่อกำหนดค่าเริ่มต้น โดยระบุขาที่เชื่อมต่อ จำนวนหลอดต่อ และรูปแบบของหลอดไฟ ปกติจะเป็นรูปแบบนี้คือ GRB format จากนั้นในลูป forever จะวนแสดงสีออกที่ LED โดยคำสั่ง show color จะทำให้ LED ทุกดวงที่ต่ออยู่ติดเป็นสีที่ต้องการ

หมายเหตุ
คำสั่ง set brightness สำหรับปรับความสว่างจะอยู่ในส่วนของ more

 

ตัวอย่างที่ 22 ZX-LED3C ไล่ติดเป็นสีรุ้ง

https://makecode.microbit.org/_Vx2VPU8ELfD6

การทำงาน

คำสั่ง show rainbow จะให้ LED ติดไล่โทนสี แต่ถ้าจำนวน LED น้อย สีที่ไล่โทนก็จะน้อยไปด้วย ตัวอย่างนี้จึงหลอก โปรแกรมว่ามีจำนวน LED ถึง 24 ดวงเพื่อให้ไล่สีได้ถึง 24 ระดับ จากนั้นในส่วน forever จะทำการวนเลื่อนตำแหน่งสีทุกๆ 0.2 วินาที การเลื่อนจะไม่ส่งผลทันทีจนกว่าจะเจอคำสั่ง show

 

ตัวอย่างที่ 23 แสดงบาร์กราฟด้วยไมโครโฟน (สำหรับ micro:bit V2.0)

https://makecode.microbit.org/_YeDdWvMFtDaz
คำสั่ง show bar graph of เมื่อใช้ร่วมกับไมโครโฟนบน micro:bit V2.0 เหมาะมากสำหรับการทำ VU meter เพื่อแสดงความดังของเสียง โดยถ้าเสียงมีความดังมากจำนวน LED ก็ติดมากตามพร้อมทั้งปรับสีตามปริมาณความดังด้วย

การทำงาน

คำสั่ง sound level จะให้ระดับความดังของเสียงในช่วง 0-255 แต่ตัวอย่างนี้เลือกค่าสูงสุดเป็น 128 เพื่อให้มีความไวในการตอบสนองเสียงได้ดีขึ้น โดยถ้าเสียงดังใกล้เคียง 128 ก็จะทำให้ LED ทั้ง 6 ดวงติดสว่างได้ คำสั่ง show bar graph of จะต้องใช้ร่วมกับคำสั่ง show ด้วยเพื่อแสดงผล

 

ตัวอย่างที่ 24 วนลูปกำหนดค่าสีทีละดวง

https://makecode.microbit.org/_iLU3EKdgK2Dj

คำสั่ง set pixel color at จะมอง LED แต่ละดวงเป็น pixel สามารถส่งค่าสีไปติดที่ตำแหน่งหลอดใดๆ ก็ได้ แต่หลังจากส่งแล้วต้องส่งคำสั่ง show เพื่อแสดงผลตามไปด้วย

การทำงาน

ตัวอย่างนี้ใช้คำสั่ง for เพื่อวนลูป 6 รอบ( 0-5 ) แล้วส่งค่าสีไปยัง LED แต่ละดวงทั้ง 6 ดวง เริ่มจากสีแดง เขียว และน้ำเงิน ค่าตัวแปร index ของคำสั่ง for ใช้เป็นตัวชี้ตำแหน่งของ LED แต่ละดวงด้วย

วงล้อสี : Color Wheel

จากวงล้อสี จะมีค่าที่สำคัญ 3 ค่าคือ ค่าสี ความอิ่มสีและความสว่าง

ชุดคำสั่งของ neopixel ก็มีการกำหนดค่าสีในรูปแบบนี้เช่นกัน

โดยค่าสีเป็นองศาของวงกลม มีค่า 0-359 ตามรูป เมื่อเป็นตามนี้ก็สามารถกำหนดค่าสีด้วยตัวเลขตามที่ต้องการได้

ตัวอย่างที่ 25 แสดงสีโดยการวนลูปกำหนดค่า hue

https://makecode.microbit.org/_VhrapM2TcXz7

ให้ LED ทั้ง 6 ดวงไล่โทนสีตามสีของวงล้อ เพื่อแสดงสีได้ถึง 360 โทนสี

การทำงาน

ตัวอย่างนี้กำหนดค่า index มีค่า 0-359 เท่ากับ 360 องศารอบวงล้อพอดี และส่งค่านี้เพื่อกำหนดค่า Hue โดยกำหนดค่าความอิ่มสีเท่ากับ 100 และค่าความสว่างเท่ากับ 5 หลังจากส่งคำสั่งแล้วเพื่อให้เห็นสีค่อยๆ เปลี่ยนให้กำหนดค่าหน่วงเวลาไว้ด้วย ปรับเปลี่ยนความเร็วในการเปลี่ยนสีได้ตามต้องการ

เป็นยังไงกันบ้างครับสำหรับตอนที่ 3 ย้อนกลับไปอ่านตอนเก่าๆ กันได้

ตอนที่ 1

ตอนที่ 2

Facebook Comments Box