โปรเจกต์นี้ คือ พื้นฐาน ของ [Servo](https://s.shopee.co.th/7fUgFAWSki) ที่พวกเอ็งควรรู้ไว้ จำไว้นะไอ้น้อง ว่านี่มันคือ โปรเจกต์ เบื้องต้น โอเคไหม?
หวังว่าพวกเอ็งจะสนุกกับมันนะ :D
รู้จักกับ Servo กันก่อน
โปรเจกต์นี้คือใบเบิกทางของพวกเอ็ง จากที่เคยเล่นแค่ไฟ LED นิ่งๆ คราวนี้พี่จะพามาขยับเขยื้อนแบบเครื่องกลบ้าง ซึ่งเจ้า Servo Motor (โดยเฉพาะรุ่น SG90 micro-servo ตัวจิ๋วเนี่ย) มันต่างจากพวกมอเตอร์ DC ทั่วไปนะ เพราะมันสั่งให้หันไปที่มุมที่เป๊ะๆ ได้ (ส่วนใหญ่จะอยู่ที่ 0 ถึง 180 องศา) แถมสั่งให้ค้างตำแหน่งไว้ได้ด้วยนะเออ
มันทำงานยังไง?
เจ้า Arduino จะสั่งการ Servo โดยใช้สัญญาณ Pulse Width Modulation (PWM) แต่ไม่ต้องตกใจไป ไม่ต้องมานั่งคำนวณความกว้างพัลส์ให้ปวดหัวหรอก เพราะเรามี Servo library มาช่วยจัดการเรื่องจังหวะเวลา (Timing) ให้เราหมดแล้ว สบายไปแปดอย่าง สู้งานนะน้อง
การต่อวงจร (Circuit Setup)
บอกเลยว่าง่ายกว่าจีบสาวอีก แค่ 3 สายจบๆ ตามนี้เลย:
- สีแดง (VCC): จิ้มไปที่ Arduino 5V
- สีน้ำตาล/ดำ (GND): เสียบเข้า Arduino GND ห้ามลืมนะ เดี๋ยวช็อต!
- สีส้ม/เหลือง (Signal): ต่อเข้า Digital Pin ที่รองรับสัญญาณ PWM (ปกติพี่ใช้ Pin 9 นี่แหละชัวร์สุด)
โค้ดพื้นฐาน (Basic Code Logic)
จะคุม Servo ก็แค่เรียก Library มาใช้, สร้าง Servo Object ขึ้นมา แล้วก็สั่ง write() ไปเลย หล่อเท่:
#include <Servo.h>
Servo myservo;
void setup() {
myservo.attach(9); // บอก Arduino ว่าเราต่อสาย Signal ไว้ที่ Pin 9 นะ
}
void loop() {
myservo.write(90); // สั่งให้หันไปที่ 90 องศา
delay(1000);
myservo.write(0); // สั่งให้กลับมาที่ 0 องศา
delay(1000);
}
เอาไปทำอะไรต่อได้บ้าง?
พอคุมการเคลื่อนที่เบื้องต้นได้แล้ว พวกเอ็งก็เอาไปต่อยอดทำโปรเจกต์เจ๋งๆ ได้เพียบ:
- แขนกล (Robotic Arms): ไว้หยิบจับของแบบเท่ๆ
- ประตูปิด-เปิดอัตโนมัติ (Automated Gates): ทำโมเดลที่จอดรถส่วนตัวไปเลยน้อง
- หน้าปัดเข็มวัด (Gauges): เอา Servo ไปหมุนเข็มบอกอุณหภูมิหรือความเร็ว
- ยานพาหนะ RC: คุมการเลี้ยวของรถ หรือคุมหางเสือเรือ
โปรเจกต์ "Servo Basic" ง่ายๆ อันนี้แหละ คือพื้นฐานสำคัญของงานสาย Robotics ทุกตัวที่จะตามมาหลังจากนี้ จัดไปวัยรุ่น!