使用Arduino实现一个简易倒车雷达

这里我们需要两个硬件:

  • Arduino UNO开发板
  • HC-SRO4超声波传感器

如下图所示:
在这里插入图片描述

Arduino UNO开发板

在这里插入图片描述

HC-SRO4超声波传感器

来看看效果:

VID_20200308_111314

下面来看看代码实现:

const int TrigPin = 2; 
const int EchoPin = 3; 
float cm;

void setup()
{ Serial.begin(9600); 
  pinMode(TrigPin, OUTPUT);
  pinMode(EchoPin, INPUT);
  pinMode(13, OUTPUT);
}

void loop()
{ digitalWrite(TrigPin, LOW); //低高低电平发一个短时间脉冲去TrigPin
  delayMicroseconds(2);
  digitalWrite(TrigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(TrigPin, LOW);
  cm = pulseIn(EchoPin, HIGH) / 58; //将回波时间换算成cm
  cm = (int(cm * 100)) / 100; //保留两位小数
  if (cm < 10)
    {digitalWrite(13, HIGH);
     delay(100);
     digitalWrite(13, LOW);
      }
  else if (cm > 10 && cm < 50)
    {digitalWrite(13, HIGH);
     delay(300);
     digitalWrite(13, LOW);
      }
  else if (cm > 50)
    {digitalWrite(13, HIGH);
     delay(10);
     digitalWrite(13, LOW);
      }
  Serial.print(cm);
  Serial.print("cm");//串口输出
  Serial.println();
}

这里我加了条件判断:

  1. 距离足够远时,灯常亮
  2. 准备接近物体时,灯闪烁,但速度较慢
  3. 即将碰到物体时,灯快速闪烁

这样一来,我们便可以通过灯光的状态来判断距离,当然,我们也可以通过串口输出来查看实际距离:
在这里插入图片描述
如果我们还要用数据做其他的事,我们可以用Python来读取:

import serial

serialPort = "COM6"  # 串口
baudRate = 9600  # 波特率
ser = serial.Serial(serialPort, baudRate, timeout=0.5)
print("参数设置:串口=%s ,波特率=%d" % (serialPort, baudRate))

while True:
    str = ser.readline()
    print(str)

ser.close()

在这里插入图片描述

发布了60 篇原创文章 · 获赞 123 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/zbp_12138/article/details/104739607