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

ต่อเนื่องจากตอนที่แล้ว ที่เราได้ยกตัวอย่างการเขียนโปรแกรมลงบน Arduino อย่างเบื้องต้นด้วยตัวอย่างง่ายๆ ในตอนนี้เราจะนำความรู้นั้นไปต่อยอด โดยการเขียนโค๊ดให้ Arduino สามารถล็อกประตูได้

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; 
int pos = 0; 

void setup() {
     myservo.attach(9);
}

void loop() {
     for (pos = 0; pos <= 180; pos += 1) { // เปลี่ยนจาก 0 ไปเป็น 180 องศา
     myservo.write(pos); // บอก servo ให้ไปในตำแหน่งตามตัวแปร ‘pos’
     delay(15); // รอ 15ms เพื่อให้ servo เข้าตามตำแหน่งที่บอกไว้
     }
          for (pos = 180; pos >= 0; pos ‐= 1) { 
          myservo.write(pos); 
          delay(15); 
          }
}

· #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 สามารถเรียนรู้ได้จาก

https://www.arduino.cc/en/reference/servo )


การใช้ประโยชน์จาก Servo

Servo นั้นมีกำลังมากกว่า motor ปกติ จึงสามารถ ยกสิ่งของ หรือ หมุนกลอนประตูได้ทั้งนี่ขึ้นอยู่กับ ขนาดของ servo ด้วย

ตัวอย่างการใช้ Servo มาล็อคประตู

ส่วนวิธีการสั่งงานให้ล็อคหรือ ปลดล็อค ก็มีหลายรูปแบบ เช่น การใช ้รหัสผ่าน ใช ้key card หรือ ใช ้ smartphone

ในตอนต่อไป เราจะมาดูวิธีสั่งเปิด-ประตูด้วย Bluetooth กัน…

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.