极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

Arduino超声波寻墙小车

热度 1已有 653 次阅读2015-12-8 16:15 | 小车

功能:超声波寻墙 
原理:车载超声波检测墙的距离,当检测小车跑远了让小车向墙靠近。太近啦让小车远离墙面。当小车与墙面行驶到合适的距离是小车前进。
代码如下
int pinI1=8;//定义I1接口
int pinI2=9;//定义I2接口
int speedpin=11;//定义EA(PWM调速)接口
int pinI3=6;//定义I3接口
int pinI4=7;//定义I4接口
int speedpin1=10;//定义EB(PWM调速)接口
const int TrigPin = 2; 
const int EchoPin = 3; 
float cm; 
void setup() 
 
  Serial.begin(9600); 
  pinMode(pinI1,OUTPUT);
  pinMode(pinI2,OUTPUT);
  pinMode(speedpin,OUTPUT);
  pinMode(pinI3,OUTPUT);
  pinMode(pinI4,OUTPUT);
  pinMode(speedpin1,OUTPUT);
  pinMode(TrigPin, OUTPUT);
  pinMode(EchoPin, INPUT); 
  pinMode(A3,OUTPUT);
  pinMode(A4,OUTPUT);
  pinMode(A5,OUTPUT);
void stop()//停止
{
     digitalWrite(pinI4,HIGH);//使直流电机(右)制动
     digitalWrite(pinI3,HIGH);
     digitalWrite(pinI1,HIGH);//使直流电机(左)制动
     digitalWrite(pinI2,HIGH);
}
void advance()//前进

{
     analogWrite(speedpin,50);//输入模拟值进行设定速度
     analogWrite(speedpin1,50);
     digitalWrite(pinI4,LOW);//使直流电机(右)逆时针转
     digitalWrite(pinI3,HIGH);
     digitalWrite(pinI1,LOW);//使直流电机(左)顺时针转
     digitalWrite(pinI2,HIGH);
}
void left()//左转
{
     analogWrite(speedpin,60);//输入模拟值进行设定速度
     analogWrite(speedpin1,60);
     digitalWrite(pinI4,LOW);//使直流电机(右)逆时针转
     digitalWrite(pinI3,HIGH);
     digitalWrite(pinI1,LOW);//使直流电机(左)逆时针转
     digitalWrite(pinI2,LOW);
}
void right()//右转
{
     analogWrite(speedpin,60);//输入模拟值进行设定速度
     analogWrite(speedpin1,60);
     digitalWrite(pinI4,LOW);//使直流电机(右)顺时针转
     digitalWrite(pinI3,LOW);
     digitalWrite(pinI1,LOW);//使直流电机(左)顺时针转
     digitalWrite(pinI2,HIGH);
}

void loop() 
  float cm;
  digitalWrite(A3, HIGH);
digitalWrite(A4, HIGH);
digitalWrite(A5, HIGH);
digitalWrite(TrigPin, LOW); //低高低电平发一个短时间脉冲去TrigPin 
delayMicroseconds(2); 
digitalWrite(TrigPin, HIGH); 
delayMicroseconds(10); 
digitalWrite(TrigPin, LOW); 

cm = pulseIn(EchoPin, HIGH) / 58.0; //将回波时间换算成cm 
cm = (int(cm * 100.0)) / 100.0; //保留两位小数 
Serial.print(cm); 
Serial.print("cm"); 
Serial.println(); 
delay(20); 

 if (cm>=3 && cm<5){
 digitalWrite(A3, LOW);
  analogWrite(speedpin,30);
  analogWrite(speedpin1,30);
right() ;}
   if (cm>=5 && cm<=6){
 digitalWrite(A4, LOW);
  analogWrite(speedpin,30);
  analogWrite(speedpin1,30); 
advance(); }
   if (cm>6 && cm<=10){
 digitalWrite(A5, LOW);
 analogWrite(speedpin,30);
  analogWrite(speedpin1,30);
 left();}

}



路过

雷人
1

握手

鲜花

鸡蛋

刚表态过的朋友 (1 人)

发表评论 评论 (1 个评论)

回复 电扇没电 2016-5-29 11:57
请问 你 定义A3  A4  A5 做什么用啊

Archiver|联系我们|极客工坊

GMT+8, 2024-5-20 00:29 , Processed in 0.072044 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

返回顶部