用超声波测距传感器让小车保持一定距离行驶-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6371|回复: 4

用超声波测距传感器让小车保持一定距离行驶

[复制链接]
发表于 2017-10-24 15:59 | 显示全部楼层 |阅读模式
将测距传感器安装在小车侧边,通过测距传感器检测左边挡板的距离,将接收回来的距离数值来调节小车左偏和右偏,但是调的太慢,有时候偏出去很久才能往回调。求助大神程序该怎么改。
硬件: 主控板:       arduino2560
超声波模块:HC-SR04

电机控制模块:L298N




unsigned int cm;
void setup()
{
  Serial.begin(9600);
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,INPUT);
pinMode(22,OUTPUT);
pinMode(23,OUTPUT);
pinMode(24,OUTPUT);
pinMode(25,OUTPUT);
pinMode(26,OUTPUT);
pinMode(27,OUTPUT);
pinMode(28,OUTPUT);
pinMode(29,OUTPUT);
}




void ceju()
{
const int TrigPin = 6;
const int EchoPin = 7;
digitalWrite(TrigPin, LOW); //发一个10ms的高脉冲去触发TrigPin
delayMicroseconds(2);
digitalWrite(TrigPin, HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin, LOW);

cm = pulseIn(EchoPin, HIGH) / 58.0; //算成厘米
//cm = (int(cm * 100.0)) / 100.0; //保留两位小数


Serial.print(cm);
Serial.print("cm");
Serial.println();

}
  
void zhixing(int a1,int a2,int a3,int a4)
{
  analogWrite(2,a1);
   digitalWrite(22,LOW);
   digitalWrite(23,HIGH);
   analogWrite(3,a2);
  digitalWrite(24,LOW);
digitalWrite(25,HIGH);


  analogWrite(4,a3);
   digitalWrite(26,LOW);
digitalWrite(27,HIGH);
  analogWrite(5,a4);
   digitalWrite(28,LOW);
digitalWrite(29,HIGH);
}


void  zhixingceju(int left1,int right1,int right2,int left2,int error1,int error2,int error3)
{                                                                                                                                                                                                         
zhixing(left1,right1,right2,left2);
while(1)
{
  ceju();
if(19<cm<21)
  {
    zhixing(180,100,100,180);
  delay(5);
  }
  if(cm<18)
  {
    zhixing(200,100,100,200);
  delay(5);
    }
  if(23<cm<25)
  {
    zhixing(100,180,180,100);
  delay(5);
  }
  if(cm>26)
  {
    zhixing(100,200,200,100);
  delay(5);
  }
  else
zhixing(120,130,120,120);
    delay(5);
}
}

void loop()
{

zhixingceju(120,130,120,120,70,80,90);

}

发表于 2018-4-4 23:24 | 显示全部楼层

回帖奖励 +2 金币

学习了学习了
发表于 2018-4-5 16:21 | 显示全部楼层
硬件问题比较大。我用的也是这个,但小车总会撞上。可能是ARDUINO的板太慢了,承载不了
发表于 2018-4-5 16:23 | 显示全部楼层
试着删掉些,或是速度慢些
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 08:51 , Processed in 0.302130 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表