[IPST-SE] [BlueStick] Bluetooth Control by Appinventor EP.2 การสร้างโค้ดของ Appinventor เเละ หุ่นยนต์ IPST

 

หลังจากที่จัดหน้า user interface เสร็จเรียบร้อยแล้ว ก็ต่อด้วยการเขียนโค้ดของแอปพลิเคชัน โดยกดเข้าไปที่ Blocks เราจะแบ่ง การเขียนโค้ดออกเป็น 4 ส่วน คือ โค้ดบลูทูธ, โค้ดเดินหน้า ถอยหลัง เลี้ยวซ้าย เลี้ยวขวา, โค้ดเซอร์โว, และการเขียนโค้ดให้หุ่นยนต์ IPST

1. โค้ดเชื่อมต่อบลูทูธ

                1.1  เรียกบลูทูธที่ทำการจับคู่เสร็จแล้ว มาแสดงใน ListPicker
2015-07-06_093420

 

                1.2 Connect บลูทูธที่เลือก และให้ขึ้นสถานะ Connected ใน Label ที่ตั้งชื่อว่า Status

2015-07-06_093539

 

                1.3 เมื่อกดปุ่ม Disconnected ให้ทำการยกเลิกการเชื่อมต่อบลูทูธ จากนั้นก็ขึ้นสถานะเป็น Disconnected ใน Label ที่ตั้งชื่อว่า Status

2015-07-06_093527

 

2. โค้ดทำให้หุ่นยนต์เดินหน้า ถอยหลัง เลี้ยวซ้าย เลี้ยวขวา และหยุดการทำงาน

               2.1 ปุ่มบังคับให้หุ่นยนต์ทำงาน โดยการใช้ ImageSprite เมื่อสัมผัสลงไปแล้วให้บลูทูธส่งค่าตัวเลขตามรูปไปยังหุ่นยนต์ IPST

 

                2.2 เมื่อไม่ได้สัมผัส ImageSprite ให้บลูทูธส่งค่า 0 ไปยังบอร์ด IPST เพื่อให้หุ่นยนต์หยุด

 

3.โค้ดของเซอร์โว เมื่อกด Button ต่างๆ ให้บลูทูธส่งค่าตัวเลขไปยังบอร์ด IPST เพื่อสั่งให้เซอร์โวทำงาน

 

โค้ดสำหรับหุ่นยนต์ IPST

 

#include <ipst.h>
byte x;
int P = 80;
void setup(){
     setTextSize(1);
     setTextColor(GLCD_GREEN);
     setTextSize(1);
     glcd(0,0,“Hi there”);
     glcd(1,0,“I’m Autobot”);
     glcd(2,0,“My name’s IPST-SE”);
     glcd(3,0,“Control by :”);
     glcd(4,0,“Android Smartphone”);
     glcd(5,0,“Create by Appinventor”);
     glcd(6,0,“Presented by :”);
     glcd(7,0,“INEX and IPST”);
     pinMode(2,INPUT_PULLUP);
}
void loop(){
     if (uart1_available()) {
     x=uart1_getkey();

     if(x==1) {           //foward
          motor(1,P);
          motor(2,P);
     }
     if (x==2) {           //back
          motor(1,-P);
          motor(2,-P);
     }
     if (x==3) {           //turn right
          motor(1,50);
          motor(2,-50);
     }
     if (x==4){           //turn left
          motor(1,-50);   
          motor(2,50);
     }
     if (x==0){           //stop motor
          motor_stop(1);
          motor_stop(2);
     }

     if (x==5){          //servo up
          servo(0,50);
     }
     if (x==6){          //servo down
          servo(0,200);
     }
     if (x==7){          //servo open
          servo(1,80);
     }
     if (x==8){          //servo close
          servo(1,150);
     }
   }
}

หมายเหตุ  คำสั่ง pinMode(2,INPUT_PULLUP); ใส่เพื่อกำหนดให้สถานะของขา Rxd1  ขณะลอยอยู่มีสถานะเป็นลอจิก “1”  เพื่อใช้กับโมดูล BlueStick รุ่นใหม่ ๆ ที่แรงดันเอาต์พุต มีค่าส่งออกมาไม่ถึง 5V

Facebook Comments Box