Sumo-BOT ATX2+ ระบบอัตโนมัติ

          ต่อจากบทความที่แล้ว ที่พูดถึงการควบคุม 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);
}

 

Facebook Comments