ไลบารี่เพิ่มเติม SoftwareServo ที่สามารถต่อใช้ที่ขาพอร์ตใดก็ได้ (0-19), อัพเดทสำหรับ Arduino 0015

Saturday 4 April 2009 – 10:00

(Update ไฟล์ wiring.c และ wiring.h สำหรับ Arduino 0015 แล้ว)
เดิมทีไลบารี่นี้เป็นชื่อ Servo.c กับ Servo.h ซึ่งสืบทอดมาจาก Wiring และเผยแพร่บน Playground อยู่ก่อนหน้านี้
เพียงแต่ในเวอร์ชั่น 0012 ทาง Mellis หนึ่งในผู้พัฒนาเค้าลืมไลบารี่ตัวนี้ครับ แล้วเอาไลบารี่ ServoTimer (ใช้ timer ทำงานซึ่งสะดวกในการใช้เพราะไม่ต้อง refresh() ตลอดเวลา แต่จะใช้ได้เฉพาะขาสัญญาณ 9 กับ 10 เพียง 2 ตัวเท่านั้น) จาก Playground มาเปลี่ยนชื่อเป็น Servo แล้วผนวกรวมมาใน 0012

ทำให้ชื่อซ้ำซ้อนกับไลบารี่ Servo แบบเดิม และไม่สามารถทำงานได้

ผมจึงได้ทำการปรับปรุงและแก้ไขไลบารี่ Servo เดิม ให้เป็น SoftwareServo แทน (สอดคล้องกับกรณี Serial กับ SoftwareSerial) โดยดาวน์โหลดไฟล์ที่นี่ครับ
http://www.avride.com/pop/store/SoftwareServo_millisSet_addon.zip

unzip ไฟล์ลงในโฟลเดอร์ Arduino ครับ และเขียนทับ wiring.c กับ wiring.h ด้วยครับ เพราะผมได้เพิ่มฟังก์ชั่นพิเศษ millisSet(unsigned int) เพื่อสามารถตั้งค่า หรือเคลียร์ค่าตัวนับของฟังก์ชั่น millis() ได้โดยตรง (ของเดิมอ่านได้อย่างเดียวและต้องรอให้โอเวอร์โฟล์วถึงจะเริ่มใหม่ ซึ่งประยุกต์ใช้ในงานนับเวลายาก)

ตัวอย่างที่มีจะมี 2 อันคือ sweep กับ SerialServo
sweep เป็นตัวอย่างที่ต่อ Servo ไปยังสัญญาณช่อง 2 โดยเขียนคำสั่งให้มอเตอร์หมุนไป-กลับ

SerialServo เป็นตัวอย่างการต่อมอเตอร์ 2 ตัว และสั่งงานผ่าน Serial Monitor โดยมีคำสั่ง “A” เพื่อเลือกมอเตอร์ช่อง 2, “B” เพื่อเลือกมอเตอร์ช่อง 4 และ “0″ ถึง “9″ เป็นตำแหน่งสั่งงานที่จะให้มอเตอร์ที่เลือกล่าสุดหมุนไป

รายละเอียดเพิ่มเติมของฟังก์ชั่น ดูได้จากหน้านี้ครับ ตอนนี้กำลังเสอนให้ทาง forum ทดลองอยู่ และถ้าใช้ได้ ก็อาจจะเปลี่ยนแทนของเดิมครับ http://www.arduino.cc/playground/ComponentLib/Servo

สำหรับการต่อใช้งาน ให้เชื่อมสัญญาณพอร์ต ไปยัง input (สีขาวหรือสีเหลือง)ของมอเตอร์เซอร์โว และต่อสายกราวนด์(-)ไปยังไฟลบสีดำของมอเตอร์ และไฟเลี้ยง 6V. ขั้วบวกเข้าที่สายแดงของมอเตอร์ และขั้วลบ เชื่อมร่วมกับสายดำ เป็นอันเรียบร้อย

แนะนำให้ใช้แบตเตอรี่ 6V. หรือถ่านชาร์จ Ni-MH อนุกรมกับ 4-5 ก้อน สำหรับจ่ายให้มอเตอร์ ถ่านธรรมดาหรืออะแดปเตอร์จ่ายไฟไม่แนะนำ เพราะถ้าไฟเลี้ยงไม่พอ มอเตอร์ก็จะทำงานไม่ถูกต้อง หรือถ้าไฟสูงเกิน 7.5V. วงจรภายในตัวมอเตอร์ก็อาจจะไหม้เสียหายได้

Post by วรพจน์
dev [at] avride.com

Sorry, comments for this entry are closed at this time.