เซอโวมอเตอร์คือ มอเตอร์ชนิดหนึ่งที่สามารถควบคุมตำแหน่งและทิศทางในการหมุนได้อย่างแม่นยำ มีแรงบิดค่อนข้างสูง ด้วยเหตุผลนี้เซอโวมอเตอร์จึงนิยมนำมาทำแขนกลสำหรับหุ่นยนต์ขนาดเล็ก
เซอโวมอเตอร์คือ ที่ใช้ในหุ่นยนต์ขนาดเล็ก ส่วนใหญ่แล้วจะไม่สามารหมุนรอบตัวเองได้ โดยเซอโวมอเตอร์จะทำงานได้แค่ 0 - 180 ํ ห้ามพยายามหมุนเฟืองมอเตอร์โดยเด็ดขาด เพราะจะทำให้เซอโวมอเตอร์เสียหายได้
ในโปรแกรม Arduino นั้นได้สร้าง library เพื่อใช้งาน เซอโวมอเตอร์มาให้แล้ว สามารถเรียกใช้งานได้เลย โดยระบุเรียก library ชื่อ servo.h
การเรียกใช้งานตาม library servo นั้น จะต้องกำหนดค่าอยู่ 3 ตำแหน่ง ดังนี้
1. ส่วนหัวของ code คือ อยู่ก่อน void setup
ตรวจสอบการเชื่อมต่อมอเตอร์ให้ถูกต้อง โดยมีวิธีเช็คดังนี้
1. เสียบสาย servo motor ใน Pin 10
เซอโวขนาดเล็กที่ใช้ในหุ่นยนต์ พังค่อนข้างง่าย ห้าม!!!! ให้ เซอโวไปงัดหรือขัดหรือฝืนโดยเด็ดขาด ถ้าตำแหน่งที่สั่งไปมันเกิน ก็ให้รีบปิดสวิตซ์โดยเร็วเพื่อป้องกันเซอโวมอเตอร์เสียหาย
#include <Servo.h> //เรียกใช้งาน library เซอโว
Servo sv1; // กำหนดชื่อเซอโวตัวที่ 1 ว่า sv1
const int buttonPin = 2; //ประกาศตัวแปร buttonPin แทน Pin ของปุ่มกด ซึ่งต่อไว้กับ D2
void setup() {
sv1.attach(10); //กำหนดขา Servo ตัวที่ 1 ต่อกับ Pin
}
void loop(){
int sw = digitalRead(buttonPin);
if (sw == 1){ // ถ้าปุ่ม ถูกกด
sv1.write(90); // เซอโว 1 หมุนไปที่ ตำแหน่ง 90 ํ
delay(300); // หน่วงเวลาเพื่อรอให้เซอโวเคลื่อนที่ไปยังตำแหน่ง
sv1.write(120); // เซอโว 1 หมุนไปที่ ตำแหน่ง 120 ํ
delay(300); // หน่วงเวลาเพื่อรอให้เซอโวเคลื่อนที่ไปยังตำแหน่ง
}
}
#include <Wire.h>
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Servo.h>
Adafruit_SSD1306 OLED(-1);
Servo sv1; // กำหนดชื่อเซอโวตัวที่ 1 ว่า sv1
const int buttonPin = 2; //ประกาศตัวแปร buttonPin แทน Pin ของปุ่มกด ซึ่งต่อไว้กับ D2
void setup() {
OLED.begin(SSD1306_SWITCHCAPVCC,0x3C); // กำหนดแอดเดรสของพอร์ตจอเป็น 0x3C (for the 128x64)
sv1.attach(10); //กำหนดขา Servo ตัวที่ 1 ต่อกับ Pin
}
void loop() {
while(true){
int vr = analogRead(A7); // กำหนดตัวแปรจำนวนเต็มอ่านค่าอนาล็อกที่พอร์ต 7
int nob = map(vr, 0, 1023, 0, 180); // ทำการ map อัตราส่วนจากสัญญาณ analog 0-1023 เป็น 0-180
OLED.clearDisplay(); // เคลียร์หน้าจอ oled
OLED.setTextColor(WHITE, BLACK); //สีอักษรเป็นสีขาว ,พื้นหลังดำ
OLED.setCursor(0, 0); // เซตตำแหน่ง 0,0
OLED.setTextSize(2); // เซตขนาดอักษรมีขนาดเป็น 2
OLED.print("SV1 = "); // พิมพ์คำว่า SV1 =
OLED.println(nob); // นำค่า nob มาแสดงใน oled
OLED.display(); // เปิดฟังก์ชันแสดงผล
sv1.write(nob); // สั่งเซอร์โวมอเตอร์ให้หมุนไปตามค่าองศาที่ทำการ nob ไว้
delay(50); // หน่วงเวลา 0.05 วินาที
}}