int SNUM[3]
int INA = 4;
int PWMA = 5;
int INB = 7;
int PWMB = 6; //電機B調速端
void motospd(int sp1,int sp2) //電機速度控制函數。括號內分別為左右電機速度值,
{ //范圍-255~+255,正值為正轉,負值為反轉。
if(sp1>0)
digitalWrite(INA, HIGH);
else
digitalWrite(INA, LOW);
if(sp2>0)
digitalWrite(INB, HIGH);
else
digitalWrite(INB, LOW);
analogWrite(PWMA,abs (sp1));
analogWrite(PWMB,abs (sp2));
}
void setup(){
pinMode(11, INPUT);
pinMode(12, INPUT);
pinMode(13, INPUT); /
Serial.begin(9600); //打開串口,初始化
pinMode(INA,OUTPUT);
pinMode(INB,OUTPUT);
}
void loop(){
SNUM[0] = digitalRead(11);//左傳感器賦值
SNUM[1] = digitalRead(12); //中傳感器賦值
SNUM[2] = digitalRead(13); //右傳感器賦值
for (int i=0;i<3;i++)
{
Serial.print(SNUM[i])
}
Serial.println(SNUM[2]);
if ((SNUM[0]==1)&&(SNUM[1]==1)&&(SNUM[2]==1))//所有傳感器都沒有檢測到障礙
motospd(100,100); //直行
if ((SNUM[0]==0)&&(SNUM[1]==1)&&(SNUM[2]==1)) //左傳感器檢測到障礙物
motospd(100,50); //右轉
if ((SNUM[0]==1)&&(SNUM[1]==1)&&(SNUM[2]==0)) //右傳感器檢測到障礙物
motospd(50,100); //左轉
if ((SNUM[0]==1)&&(SNUM[1]==0)&&(SNUM[2]==1)) //中傳感器檢測到障礙物
motospd(-100,-100);
delay(50);
}
|