Software Project : Robotic Arm (2) - เขียนโค้ด Arduino
หลังจากฝึกพื้นฐานการควบคุม Servo โดยใช้ Python แล้ว ต้องทำการปรับเปลี่ยนโค้ด Arduino เพื่อให้รองรับกับ Servo ที่เเขนกลจำเป็นต้องใช้ทั้งหมด
โดยแขนกลใช้ Servo ทั้งหมด 6 ตัวจึงจำเป็นต้องเขียนโค้ดควบคุม Servo 6 ตัว โดยทำการเเบ่งช่วงของ Bytearray โดยใช้เลข 1 ค่าต่อ 5 องศา เบื้องต้นกำหนดใช้ Servo ทุกตัวเคลื่อนที่ได้ 180 องศาทุกตัว ใช้ค่า Bytearray ทั้งหมด 221 ตัว
โดยเขียนโค้ด Arduino ได้ดังนี้
#include <Servo.h>
Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;
Servo servo5;
Servo servo6;
void setup()
{
servo1.attach(8);
servo2.attach(9);
servo3.attach(10);
servo4.attach(11);
servo5.attach(12);
servo6.attach(13);
Serial.begin(9600);
}
int angle;
void loop()
{
if(Serial.available()){
angle = Serial.read();
if (angle >= 0 && angle <=36){
angle = angle * 5;
servo1.write(angle);
}
else if(angle >=37 && angle <= 73){
angle = angle - 37;
angle = angle * 5;
servo2.write(angle);
}
else if(angle >=74 && angle <= 110){
angle = angle - 74;
angle = angle * 5;
servo3.write(angle);
}
else if(angle >=111 && angle <= 147){
angle = angle - 111;
angle = angle * 5;
servo4.write(angle);
}
else if(angle >=148 && angle <= 184){
angle = angle - 148;
angle = angle * 5;
servo5.write(angle);
}
else if(angle >=185 && angle <= 221){
angle = angle - 185;
angle = angle * 5;
servo6.write(angle);
}
}
}
โค้ด Python
import serial
import time
servo = serial.Serial("COM4", 9600)
def A():
S = int(input('G:'))
servo.write(bytearray([S]))
time.sleep(0.01)
while True:
A()
เมื่อเขียนโค้ด Arduino เเล้วลองกับโค้ด Python สามารถใช้ได้ตามคลิปด้านล่าง
โดยเป็นการควบคุมโดยยังไม่ใช้ Bluetooth เพราะัมีปัญหาที่ความช้าของ Bluetooth
อุปสรรค
- ไฟเลี้ยง Servo ไม่เพียงพอ
- องศาของง Servo ที่ไม่ตรง
ความคิดเห็น
แสดงความคิดเห็น