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

飞翔的机械人 发表于 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);
}


voidzhixingceju(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);

}

myra07 发表于 2017-11-20 15:54

支持楼主:lol

黑冥河 发表于 2018-4-4 23:24

学习了学习了

2792079564 发表于 2018-4-5 16:21

硬件问题比较大。我用的也是这个,但小车总会撞上。可能是ARDUINO的板太慢了,承载不了

2792079564 发表于 2018-4-5 16:23

试着删掉些,或是速度慢些
页: [1]
查看完整版本: 用超声波测距传感器让小车保持一定距离行驶