1.直行問題的解決

#include <SoftwareSerial.h>

#include <Wire.h>

SoftwareSerial BT(2,3); //HC-05 (TX,RX)

unsigned long VL_1[7];

unsigned long VL_2[7];

unsigned long VR_1[7];

unsigned long VR_2[7];

float vr,vl;

int x,y;

int set=128;

void back(){

analogWrite(5,255);

analogWrite(6,0);

analogWrite(9,0);

analogWrite(10,255);

}

void right(){

analogWrite(5,0);

analogWrite(6,0);

analogWrite(9,255);

analogWrite(10,0);

}

void left(){

analogWrite(5,0);

analogWrite(6,255);

analogWrite(9,0);

analogWrite(10,0);

}

void stand(){

analogWrite(5,0);

analogWrite(6,0);

analogWrite(9,0);

analogWrite(10,0);

}

void scan(){

for(int i=0 ; i<6 ; i++){

VR_1[i]=pulseIn(7,1);

VL_1[i]=pulseIn(8,1);

VR_2[i]=pulseIn(7,0);

VL_2[i]=pulseIn(8,0);

}

vr=0;

vl=0;

for(int i=0 ; i<6 ; i++){

vr=vr+VR_1[i]+VR_2[i];

vl=vl+VL_1[i]+VL_2[i];

}

vr=90000000/vr;

vl=90000000/vl;

Serial.print("vl=");

Serial.print(vl);

Serial.print(" , vr=");

Serial.println(vr);

}

void go(){

analogWrite(5,0);

analogWrite(6,set+y);

analogWrite(9,set+x);

analogWrite(10,0);

}

void setup() {

Serial.begin(9600);

BT.begin(9600);

pinMode(5,OUTPUT);

pinMode(6,OUTPUT);

pinMode(9,OUTPUT);

pinMode(10,OUTPUT);

}

void loop() {

go();

scan();

if(vl>vr){

y=y+2;

x=x+1;

if(y>255){

y=255;

}

if(x>255){

x=255;

}

}

if(vl<vr){

x=x+2;

y=y+1;

if(x>255){

x=255;

}

if(y>255){

y=255;

}

}

}