ในบทความนี่้ เราจะกล่าวถึงหุ่นยนต์ Sumo-BOT ในระบบควบคุมมือ ซึ่งในระบบควบคุมมือนี้ ชิ้นส่วนตั่างๆที่ใช้ในหุ่นยนต์คือ DC motor 4 ตัว และ Sensor ZX-03 2 ตัว และอุปกรณ์เสริมที่นำเข้ามาเพื่อใช้ควบคุมระบบบังคับมือ คือ รีโมทควบคุม Wireless-X และตัวรับสัญญาณ
การเชื่อมต่อชิ้นส่วนต่างๆเข้ากับตัวหุ่นยนต์
1) DC motor 4 ตัว -> ตัวซ้ายหน้าต่อเข้ากับ port 1 -> ตัวขวาหน้าต่อเข้ากับ port 2 -> ตัวซ้ายหลังต่อเข้ากับ port 3 -> ตัวขวาหลังต่อเข้ากับ port 4
2) Sensor ZX-03 2 ตัว -> ตัวซ้ายต่อเข้ากับ port Analog 2 -> ตัวขวาต่อเข้ากับ port Analog 4
3) ตัวรับสัญญาณจาก Wireless-X -> ต่อเข้ากับ port RXD1
ตัวอย่างโค้ดที่ใช้งานได้จริงจากการทดสอบ
#include <ATX2.h> // กำหนดบอร์ดที่ใช้ว่าเป็น ATX2+
int x;
void setup() {
XIO(); // ATX2+ เริ่มทำงาน
}
void loop() {
while (uart1_ready() > 0) {
x = uart1_read(); // กำหนดให้ตัวแปล x มีค่าเท่ากับปุ่มที่เรากดที่ตัว Wireless-X
}
if (x == 0x08) { // เมื่อกดปุ่ม 3 คือปุ่มฝั่งขวาบน จะทำการเดินหน้า
motor(1,32);
motor(2,30);
motor(3,32);
motor(4,30);
}
else if (x == 0x01) { // เมื่อกดปุ่ม 0 คือปุ่มฝฝั่งขวาล่าง จะทำการเดินถอยหลัง
motor(1,-32);
motor(2,-30);
motor(3,-32);
motor(4,-30);
}
else if (x == 0x02) { // เมื่อกดปุ่ม 1 คือปุ่มขวาฝั่งขวา จะทำการเลี้ยวขวา
motor(1,32);
motor(2,-30);
motor(3,32);
motor(4,-30);
}
else if (x == 0x04) { // เมื่อกดปุ่ม 2 คือปุ่มซ้ายฝั่งขวา จะทำการเลี้ยวซ้าย
motor(1,-32);
motor(2,30);
motor(3,-32);
motor(4,30);
}
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – * ในส่วนของโปรแกรมที่อยู่ระหว่างเส้นประสีแดงนี้ ไม่ใช่ส่วนที่จำเป็นจะต้องมี แต่ทางเราใส่เข้ามา เพื่อเพิ่มเป็น option เพื่อใช้ในการควบคุมหุ่นยนต์เพิ่มเติมเท่านั้น
else if (x == 0x80) { // เมื่อกดปุ่ม 7 คือปุ่มบนฝั่งซ้าย จะทำการเดินหน้าอย่างแรง
motor(1,82);
motor(2,80);
motor(3,82);
motor(4,80);
}
else if (x == 0x10) { // เมื่อกดปุ่ม 4 คือปุ่มล่างฝั่งซ้าย จะทำการเดินถอยหลังอย่างแรง
motor(1,-82);
motor(2,-80);
motor(3,-82);
motor(4,-80);
}
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
else if (x == 0xFF) { // เมื่อกดปุ่มกลางสุด จะทำการหยุดเคลือนที่
motor_stop(ALL);
}
}