Super169 发表于 2015-4-14 19:02 
先記下亮燈時間, 把狀態設定為亮燈.
在 loop 內如果狀態是亮燈, 就檢查現在時間是否比記下的時間過了 5 ...
这里不能用millis(),那是要使用pulseIn函数么?
我查了一下,大概是要这样使用pulseIn么?
const int T2 = 6;
const int E2 = 7;
float distance2;
int led1 = 4;
int led2 = 8;
int led6 = 9;
int led7 = 10;
int b = 0;
unsigned long duration;
void setup()
{
//超声波测距模块2
//初始化串口通信及连接SR04的引脚
Serial.begin(9600);
pinMode(T2, OUTPUT);
//设置输入状态
pinMode(E2, INPUT);
pinMode(led2,OUTPUT);
pinMode(led6,OUTPUT);
pinMode(led7,OUTPUT);
digitalWrite(led2,LOW);
digitalWrite(led6,LOW);
digitalWrite(led7,LOW);
}
void loop()
{
//超声波测距模块2
//产生一个10us的高脉冲去触发TrigPin
digitalWrite(T2, LOW);
delayMicroseconds(2);
digitalWrite(T2, HIGH);
delayMicroseconds(10);
digitalWrite(T2, LOW);
//检测脉冲宽度,并计算出距离
distance2 = pulseIn(E2, HIGH) / 58.00;
Serial.print("distance2=");
Serial.print(distance2);
Serial.println("cm");
delay(500);
//第二部分程序控制LED1,LED2,LED6,LED7
if((distance2 >=8)&&(distance2 <=15))
b = 1;
else
b = 0;
Serial.print("b=");
Serial.println(b);
if(b == 1){
digitalWrite(led1,LOW);
digitalWrite(led2,HIGH);
digitalWrite(led6,HIGH);
digitalWrite(led7,HIGH);
if(pulseIn(led7,HIGH,5000));
digitalWrite(led7,LOW);
}
} |