马上注册(开思网用户可以直接登录),结交更多创客好友,享用更多功能,让你轻松玩转创客社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
我们用的超声波模块是HC-SR04,它有Vcc,Trig,Echo,GND。VCC和GND对应接板子+5V和负极。Trig是触发控制端,Echo是接收端
大概的工作原理: 给Trig脚至少10us的高电平信号,那么模块就会自动发送8个40KHz的方波,自动检测是否有信号返回; 当有信号返回,通过Echo就会输出一高电平,高电平持续的时间就是超声波从发射到返回的时间.然后按这条公式:测试距离=(到高电平的持续时间*340m/s)/2;
[mw_shl_code=cpp,true]int Trig = 8;
int Echo = 9;
float cm;
void setup()
{
Serial.begin(9600);
pinMode(Trig, OUTPUT);
pinMode(Echo, INPUT);
}
void loop()
{
digitalWrite(Trig, LOW); //给一个高电平方波,触发模块发射超声波
delayMicroseconds(2); //delayMicroseconds(X)是 Arduino自带函数,类似delay,但是这个延时单位是微秒
digitalWrite(Trig, HIGH);
delayMicroseconds(10);
digitalWrite(Trig, LOW);
cm = pulseIn(Echo, HIGH) / 58.0; //pulsenIn是用来检测有低电平跳变到高电平的时间,是arduino自带函数语句,将回波时间换算成cm
cm = (int(cm * 100.0)) / 100.0; //保留两位小数
Serial.print(cm);
Serial.print("cm"); //串口输出距离
Serial.println();
delay(1000);
}[/mw_shl_code]
编译下载完,用东西挡在超声波模块前,打开串口窗口即可看到返回来的距离,如果返回是负值那就说明超出模块的测距距离了。 大家要注意下Trig,Echo一定要对应接好,不然串口返回的数据是0.00cm
|