两个超声波测试于今早完成。
本帖最后由 tgyfish 于 2013-4-22 13:22 编辑先上程序,其实很简单,但是对于我这种小白确实有一点点~~~
const int TrigPin = 2;
const int EchoPin = 3;
const int Tri = 4;
const int Ech = 5;
float cm1;
float cm2;
void setup()
{
Serial.begin(9600);
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
pinMode(Tri, OUTPUT);
pinMode(Ech, INPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
}
void loop()
{
int i;
for(i=1;i<=2;i++)
{
digitalWrite(7, LOW);
digitalWrite(8, LOW);
if(i=1)
{
digitalWrite(TrigPin, LOW); //低高低电平发一个短时间脉冲去TrigPin
delayMicroseconds(2);
digitalWrite(TrigPin, HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin, LOW);
cm1 = pulseIn(EchoPin, HIGH) / 58.0; //将回波时间换算成cm
cm1 = (int(cm1 * 100.0)) / 100.0; //保留两位小数
Serial.print(cm1);
Serial.print("cm1");
Serial.println();
delay(10);
if(cm1<5)
{
digitalWrite(7, HIGH);
}
}
delay(50);
if(i=2)
{
digitalWrite(Tri, LOW); //低高低电平发一个短时间脉冲去Tri
delayMicroseconds(2);
digitalWrite(Tri, HIGH);
delayMicroseconds(10);
digitalWrite(Tri, LOW);
cm2 = pulseIn(Ech, HIGH) / 58.0; //将回波时间换算成cm
cm2 = (int(cm2* 100.0)) / 100.0; //保留两位小数
Serial.print(cm2);
Serial.print("cm2");
Serial.println();
delay(10);
if(cm2<5)
{
digitalWrite(8, HIGH);
}
}
}
}
熟悉程序的看一下程序就知道我的电路了,7,8,脚接的是led也就是测试用。目前存在的问题就是他们都能测而且数据都对,上图?
现在估计是电路的问题,有一个灯正常的亮了另一个微微亮,基本功能已经实线~~~
目前认为不是板子口的问题,我换了12口输出问题也一样,不知道什么地方还有问题! 一个灯亮,一个灯微亮,应该是你接的电阻和led不一样吧,把7、8脚的连线换下,看看灯是不是第一个微亮,第二个亮了。
if(cm2<5)
{
digitalWrite(8, HIGH);
}
你的两个小灯应该触发了,一直亮着的吧。换成这样
if(cm2<5)
{
digitalWrite(8, HIGH);
}else{
digitalWrite(8, LOW);
}
bacon6581 发表于 2012-11-10 14:14 static/image/common/back.gif
一个灯亮,一个灯微亮,应该是你接的电阻和led不一样吧,把7、8脚的连线换下,看看灯是不是第一个微亮,第二 ...
电阻没问题灯也没问题,我都试过了但是就是第二个超声波的有问题,8脚我也换了12脚还是一样,至于你说的已经触发的那个循环开头我又弄低了,所以今天晚上再测试看看什么问题~ 换成bac回复的以后
开头的
digitalWrite(7, LOW);
digitalWrite(8, LOW);
去掉
页:
[1]