|
|
发表于 2015-6-26 20:02:42
|
显示全部楼层
#define IN1 9
#define IN2 6//定义IN1接arduino4号引脚,IN2接5号引脚
#define IN3 11
#define IN4 10//定义IN3接arduino6号引脚,IN4接7号引脚
#define EchoPin A1
#define TrigPin A2
float distance;
void setup()
{
pinMode(IN1,OUTPUT);
pinMode(IN2,OUTPUT);
pinMode(IN3,OUTPUT);
pinMode(IN4,OUTPUT);
pinMode(EchoPin,INPUT);
pinMode(TrigPin,OUTPUT);
Serial.begin(9600);
}
void loop()
{
RCW();
distance = pulseIn(EchoPin,HIGH)/58.00;
if(distance>30)
{
forward();
}
else
{
do
{
turnLeftOrigin();
delay(10);
}
while(distance>30);
}
}
void RCW()
{
digitalWrite(TrigPin,LOW);
delayMicroseconds(2);
digitalWrite(TrigPin,HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin,LOW);
}
void forward()//前进
{
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);//左轮前进
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);//右轮前进
}
void back()//后退
{
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);//左轮后退
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);//右轮后退
}
void turnLeft()//前左转
{
digitalWrite(IN1,LOW);
digitalWrite(IN2,LOW);//左轮停止
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);//右轮前进
}
void turnRight()//前右转
{
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);//左轮前进
digitalWrite(IN3,LOW);
digitalWrite(IN4,LOW);//右轮停止
}
void turnBackLeft()//后左转
{
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);//左轮后退
digitalWrite(IN3,LOW);
digitalWrite(IN4,LOW);//右轮停止
}
void turnBackRight()//后右转
{
digitalWrite(IN1,LOW);
digitalWrite(IN2,LOW);//左轮停止
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);//右轮后退
}
void turnLeftOrigin()//原地左转
{
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);//左轮后退
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);//右轮前进
}
void turnRightOrigin()//原地右转
{
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);//左轮前进
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);//右轮后退
}
void _stop()
{
digitalWrite(IN1,LOW);
digitalWrite(IN2,LOW);//左轮停止
digitalWrite(IN3,LOW);
digitalWrite(IN4,LOW);//右轮停止
}
哈哈 今天用UNTIL循环改进了一下 |
|