Lab 9 การเขียน App Android ผ่านโมดูลบลูทูธควบคุมหุ่นยนต์
การต่อโมดูลบลูทูธกับบอร์ด Kruro Robot
ตัวอย่าง Code Arduino IDE กับบอร์ด Kruro Robot
Code Arduino IDE
#define DL1 7
#define DL2 8
#define PWML 6
#define DR1 9
#define DR2 4
#define PWMR 5
/////////////////////////////////////////////////////////////////
void setup()
{
Serial.begin(9600); ///////// อ่านซีเรียลมอนิเตอร์ ที่ 9600
pinMode(DL1, OUTPUT);
pinMode(DL2, OUTPUT);
pinMode(PWML, OUTPUT);
pinMode(DR1, OUTPUT);
pinMode(DR2, OUTPUT);
pinMode(PWMR, OUTPUT);
}
/////////////////////////////////////////////////////////////////////////////////
void loop()
{
if(Serial.available()>0);
{ char x = Serial.read();
if (x == 'F') {run(100,100);} /// รับค่าคำสั่ง F เดินหน้า
if (x == 'B'){run(-100,-100);} /// รับค่าคำสั่ง B ถอยหลัง
if (x == 'R') {run(100,-100);} /// รับค่าคำสั่ง R เลี้ยวขวา
if (x == 'L') {run(-100,100);} /// รับค่าคำสั่ง L เลี้ยวซ้าย
if (x == 'S') {run(0,0);} /// รับค่าคำสั่ง S หยุด
}}
/////////////////////////////////////////////
void run(int spl,int spr)
{
if(spl>0)
{
digitalWrite(DL1, LOW);
digitalWrite(DL2, HIGH);
analogWrite(PWML, spl);
}
else if(spl<0)
{
digitalWrite(DL1, HIGH);
digitalWrite(DL2, LOW);
analogWrite(PWML, -spl);
}
else
{
digitalWrite(DL1, HIGH);
digitalWrite(DL2, HIGH);
analogWrite(PWMR, -255);
}
///////////////////
if(spr>0)
{
digitalWrite(DR1, LOW);
digitalWrite(DR2, HIGH);
analogWrite(PWMR, spr);
}
else if(spr<0)
{
digitalWrite(DR1, HIGH);
digitalWrite(DR2, LOW);
analogWrite(PWMR, -spr);
}
else
{
digitalWrite(DR1, HIGH);
digitalWrite(DR2, HIGH);
analogWrite(PWMR, -255);
}
}
ตัวอย่าง Code Arduino IDE กับบอร์ด Phurawong Robot
Arduino IDE Code
//#define PWML 5 // motor L
#define IN1L 3 //
#define IN2L 5 //
//#define PWMR 6 // motor R
#define IN1R 6 //
#define IN2R 11 //
/////////////////////////////////////////////////////////////////
void setup()
{
Serial.begin(9600); ///////// อ่านซีเรียลมอนิเตอร์ ที่ 9600
/////////////////////////////////////////
/////////// ช่วงกำหนด pin งดเปลี่ยนแปลง////////
// pinMode(PWML,OUTPUT);
pinMode(IN1L,OUTPUT);
pinMode(IN2L,OUTPUT);
// pinMode(PWMR,OUTPUT);
pinMode(IN1R,OUTPUT);
pinMode(IN2R,OUTPUT);
}
/////////////////////////////////////////////////////////////////////////////////
void loop()
{
if(Serial.available()>0);
{ char x = Serial.read();
if (x == 'F') {run(100,100);} /// รับค่าคำสั่ง F เดินหน้า
if (x == 'B'){run(-100,-100);} /// รับค่าคำสั่ง B ถอยหลัง
if (x == 'R') {run(100,-100);} /// รับค่าคำสั่ง R เลี้ยวขวา
if (x == 'L') {run(-100,100);} /// รับค่าคำสั่ง L เลี้ยวซ้าย
if (x == 'S') {run(0,0);} /// รับค่าคำสั่ง S หยุด
}}
/////////////////////////////////////////////
void run(int sl,int sr){
if((sl==0) and (sr==0)){
digitalWrite(IN1L,HIGH);
digitalWrite(IN1R,HIGH);
digitalWrite(IN2L,HIGH);
digitalWrite(IN2R,HIGH);
delay(100);
digitalWrite(IN1L,LOW);
digitalWrite(IN1R,LOW);
digitalWrite(IN2L,LOW);
digitalWrite(IN2R,LOW);
}
if(sr>255)
sr = 255;
else if(sr<-255)
sr = -255;
if(sl>255)
sl = 255;
else if(sl<-255)
sl = -255;
if(sl>0){
analogWrite(IN1L,sl);
digitalWrite(IN2L,LOW);
// analogWrite(PWML,sl);
}else if(sl<0){
digitalWrite(IN1L,LOW);
analogWrite(IN2L,-sl);
// analogWrite(PWML,-sl);
}else{
digitalWrite(IN1L,HIGH);
digitalWrite(IN2L,HIGH);
// analogWrite(PWML,50);
}
if(sr>0){
analogWrite(IN1R,sr);
digitalWrite(IN2R,LOW);
// analogWrite(PWMR,sr);
}else if(sr<0){
digitalWrite(IN1R,LOW);
analogWrite(IN2R,-sr);
// analogWrite(PWMR,-sr);
}else{
digitalWrite(IN1R,HIGH);
digitalWrite(IN2R,HIGH);
// analogWrite(PWMR,50);
}
}