ตัวอย่างการใช้ Arduino เปิดปิดประตู (P3)

CreepyGuy
Technologies For Everyone
3 min readMay 4, 2017

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 กัน…

--

--