ตัวอย่างการใช้ Arduino เปิดปิดประตู (P3)
Servo เป็นมอเตอร์ทีสามารถ กำหนดองศาการหมุนไดอ้ ย่างแม่นยำ การใชงานยกตัวอย่างเช่น
เครื่องบินบังคับ จะใช ้servo ในการควบคุม ปีกหลัง เพื่อบังคับเลี้ยวหรือการเปลี่ยนเพดานบิน
Servo มีทั้งแบบ หมุนได ้180 องศา และ 360 องศา นั้นหมายถึง หมุนได ้1 รอบ Servo ใช ้สายไฟ 3
เสน้ ในการควบคุม สีนํ้าตาล เป็น สาย GND สีแดง เป็น VCC และ สีเหลือง Signal Servo ขนาดเล็ก
ใช้ไฟเลี้ยง 5 V สำหรับ สาย signal จะควบคุมดว้ ย PWM ﴾Pulse width modulation﴿ ใชค้ วามกวา้ ง
ของสัญญาณนาฬิกา ในการสั่งงาน ใหห้ มุนไปในทิศกี่องศา
สำหรับใน Arduino
ใน Arduino สังเกตที่ digital pin 0–13 ใน pin ที่ 9 10 และ 11 มีสัญลักษณ์ ~ หมายถึง pin นั้น สามารถ ส่งสัญญาณแบบ PWM ได ้ซึ่ง สามารถใช้ควบคุม servo ได ้
ใน Arduino มี library สำหรับควบคุม servo สำเร็จรูปอยู่แลว้ อยู่ใน Arduino IDE > File > Example > Servo
ขอยกตัวอย่างจาก Sweep ตัวไฟล์อยู่ใน Arduino IDE > File > Example > Servo > Sweep
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
#include <Servo.h>
Servo myservo; // create servo object to control a servo
// twelve servo objects can be created on most boards
int pos = 0; // variable to store the servo position
void setup() {
myservo.attach(9);
}
void loop() {
for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees
// in steps of 1 degree
myservo.write(pos); // tell servo to go to position in variable ‘pos’
delay(15); // waits 15ms for the servo to reach the position
}
for (pos = 180; pos >= 0; pos ‐= 1) { // goes from 180 degrees to 0 degrees
myservo.write(pos); // tell servo to go to position in variable ‘pos’
delay(15); // waits 15ms for the servo to reach the position
}
}
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
#include <Servo.h> คือการเรียกใช ้librarly เพื่อควบคุม servo ﴾การเขียนโค้ด ตัว พิมพ์เล็กกับพิมพ์ใหญ่ ไม่ใช่ตัวอักษรเดียวกัน﴿
Servo myservo; คือการประกาศตัวแปร ชื่อ myservo ซึ่งเป็นตัวแปรประเภท Servo จากใน librarly Servo.h
แค่ ตัว compiler ฉลาดพอทีจะเติมใหเ้ราอัตโนมัติ﴿
int pos = 0; ประกาศตัวแปรชื่อ pos มีค่าเท่ากับ 0 เป็นตัวแปรประเภท int
ในทีนี้การ setup สั่งใหตั้วแปร myservo attach pin 9 หรือก็คือ กำหนด pin ส่งสัญญาณ pwm เพื่อควบคุม servo เป็น pin 9 เมื่อ เราเรียกใช ้myservo ครั้งต่อไป มันจะส่งสัญญาณออกไปที่ pin 9
อัตโนมัติ เราไม่จำเป็นต้อง attach ซ้ำๆถ้าในภาษา ของ network ก็คือการ binding
ใน loop มี for loop อยู่ รูปแบบของ for loop คือ ในทีนี้เรากำหนดให ้pos เป็น 0 เมื่อเริ่ม loop และ จะทำงานไปเรื่อยๆ เมื่อ pos มีค่าน้อยกว่า หรือเท่ากับ 180 ใน แต่ละครั้งทีทำงาน ค่าของ pos จะเพิ่มขึ้นทีละ 1 ใน loop
เราสั่งให้ myservo write ตัวแปร pos write คือการส่งสัญญาณ ออกไป ส่วนค่าทีสั่งออกไป คือ pos
มีค่าเป็น ตาม for loop ในครั้งแรก มีค่าเป็น 0 หมายถึง สั่งให้ servo หมุนไปตำแหน่ง 0 วนไปเรื่อยๆจนถึง 180
delay﴾15﴿; หมายถึงให้หยุดพัก 15 มิลลิ วินาที ก่อนทำงานต่อ ทีต้องมี delay เพราะบางครั้ง
โปรแกรมทำงานเร็วเกินไป จนอุปกรณ์ตัวอื่นตามไม่ทัน
for loop ที่ 2 คือการสั่ง ให้servo หมุนจาก 180 กลับไป ที่ 0 เหมือนเดิม
การใช้ประโยชน์จาก Servo
Servo นั้นมีกำลังมากกว่า motor ปกติ จึงสามารถ ยกสิ่งของ หรือ หมุนกลอนประตูได้ทั้งนี่ขึ้นอยู่กับ ขนาดของ servo ด้วย
ตัวอย่างการใช้ Servo มาล็อคประตู
ส่วนวิธีการสั่งงานให้ล็อคหรือ ปลดล็อค ก็มีหลายรูปแบบ เช่น การใช ้รหัสผ่าน ใช ้key card หรือ ใช ้ smartphone
ในตอนต่อไป เราจะมาดูวิธีสั่งเปิด-ประตูด้วย Bluetooth กัน…