ต่อจากบทความที่แล้ว ที่พูดถึงการควบคุม Sumo-BOT ในระบบควบคุมมือ ในคราวนี้เราจะมาพูดถึงการควบคุมในระบบอัตโนมัติ ซึ่งก็มีชิ้นส่วนบางชิ้น ที่แตกต่างจากระบบควบคุมมือ นั่นก็คือ GP2Y0A41
การเชื่อต่อชิ้นส่วนทั้งหมด เหมือนกับระบบควบคุมมือ
1) Sensor GP2Y0A41 -> เชื่อมต่อเข้ากับ port Analog 6
ตัวอย่างโค้ดที่ใช้งานได้จริงจากการทดสอบ
#include <ATX2.h> // กำหนดบอร์ดที่ใช้ว่าเป็น ATX2+
int SenL; // ประกาศตัวแปรไว้สำหรับเก็บค่า เซนเซอร์ตัวซ้าย
int SenR; // ประกาศตัวแปรไว้สำหรับเก็บค่า เซนเซอร์ตัวขวา
int DIS; // ประกาศตัวแปรไว้สำหรับเก็บค่า เซนเซอร์ตัวขวา
int REF = 200;
void setup() {
XIO(); // ATX2+ เริ่มทำงาน
OK(); // กดปุ่ม OK แล้วจะเริ่มทำงาน
}
void loop() {
SenL = analog(2);
SenR = analog(4);
DIS = analog(6);
if(SenL <= REF & SenR <= REF) { // เมื่อ sensor แสงตัวซ้ายและขวา เจอสีดำ
motor(1,30);
motor(2,32);
motor(3,30);
motor(4,32);
if(DIS >= 160) { // เมื่อ sensor วัดระยะทาง จับเจอวัตถุในระยะ 10 cm
motor(1,80);
motor(2,80);
motor(3,80);
motor(4,80);
sleep(500);
}
}
else if(SenL >= REF & SenR <= REF) { // เมื่อ sensor แสง ตัวซ้ายเจอสีดำ และตัวขวาเจอสีขาว
motor(1,-50);
motor(2,-50);
motor(3,-50);
motor(4,-50);
sleep(200);
motor_stop(ALL);
sleep(50);
Turn_Left();
}
else if(SenL <= REF & SenR >= REF) { // เมื่อ sensor แสง ตัวซ้ายเจอสีขาว และตัวขวาเจอสีดำ
motor(1,-50);
motor(2,-50);
motor(3,-50);
motor(4,-50);
sleep(200);
motor_stop(ALL);
Turn_Right();
}
else if(SenL >= REF & SenR >= REF) { // เมื่อ sensor แสงทั่ง 2 ตัว เจอสีขาว
motor(1,-50);
motor(2,-50);
motor(3,-50);
motor(4,-50);
sleep(200);
motor_stop(ALL);
}
}
void Turn_Left() { // เลี้ยวซ้าย
motor(1,30);
motor(2,-32);
motor(3,30);
motor(4,-32);
sleep(1000);
motor_stop(ALL);
sleep(50);
}
void Turn_Right() { // เลี้ยวขวา
motor(1,-30);
motor(2,32);
motor(3,-30);
motor(4,32);
sleep(1000);
motor_stop(ALL);
sleep(50);
}