新人入门用超声波测距+1602+蜂鸣器模仿倒车雷达
入手arduino第3天,跟着论坛里面的高手教程学习,自己鼓捣出来一个类似倒车雷达的东西,很简陋,自己感觉代码写的也很乱,求抨击,求指教。。。尤其请帮忙看看代码怎么优化优化,目前感觉太累赘了。。顺便问一下,为什么测距不怎么准,还总出现负距离?http://bbs.cneclub.com/attachments/swfupload/1307140020323d87bd779f452f.gif
http://bbs.cneclub.com/attachments/swfupload/130714004175a0d13fb3ae3797.gif
原谅我的渣像素。。
代码如下(根据距离不同蜂鸣器发出不同声音)
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 10, 9, 8, 7, 6);
const int TrigPin = 2;
const int EchoPin = 3;
float cm;
int buzzer=4;
void setup()
{
Serial.begin(9600);
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
pinMode(buzzer,OUTPUT);
lcd.begin(16, 2);
lcd.print("Dao Che Lei Da");
delay(2000);
}
void loop ()
{
digitalWrite(TrigPin, LOW);
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();
delay(500);
lcd.clear();
lcd.print("Zhu Yi Ju Li");
lcd.setCursor(0, 1) ;
lcd.print(cm);
lcd.print("cm");
delay(100);
if (cm < 10)
{
unsigned char i;
{
for(i=0;i<80;i++)
{
digitalWrite(buzzer,HIGH);
delay(1);
digitalWrite(buzzer,LOW);音
delay(1);
}
}
}
else if (cm < 20)
{
unsigned char i;
{
for(i=0;i<100;i++)
{
digitalWrite(buzzer,HIGH);
delay(2);
digitalWrite(buzzer,LOW);
delay(2);
}
}
}
else
{
digitalWrite(buzzer,HIGH);
delay(1);
digitalWrite(buzzer,LOW);音
delay(1);
}
}
比我的的厉害多了 挺好的,我学了好长一段时间还没做出来你这样的实验呢,向你学习了! 求真像,谢谢 const int TrigPin = 2;
const int EchoPin = 3;
float cm;
void setup()
{
Serial.begin(9600);
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
pinMode(4,OUTPUT);
}
void loop()
{
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();
if(cm>100.0)
{
digitalWrite(4,HIGH);
delay(100);
digitalWrite(4,LOW);
delay(1000);
}
if(cm>20.0 && cm<100.0)
{
digitalWrite(4,HIGH);
delay(100);
digitalWrite(4,LOW);
delay(1000-(100-cm)*12.5);
}
if(cm<20.0)
{
digitalWrite(4,HIGH);
}
}
很牛逼啊,向大婶学习!!! 求助楼主会不会编超声波测距控制蜂鸣器的乐器的程序啊
具体问题在这里http://www.geek-workshop.com/thread-15034-1-1.html
多谢
页:
[1]