同一个距离,比如S<5cm(条件),第一次扫描的时候灯亮,第二次扫描的时候灯灭,依次循环,附上自己敲得程序,还是不对!!!求支招!
const int trig = 8; // 触发信号
const int echo = 9; // 反馈信号
int led=13;
unsigned char flag = 0;//初始标志位
//初始化
void setup() {
pinMode(echo, INPUT);
pinMode(trig, OUTPUT);
pinMode(led,OUTPUT);
Serial.begin(9600);
}
//主循环
void loop() {
long IntervalTime=0;
while(1){
digitalWrite(trig, 1);
delayMicroseconds(15);
digitalWrite(trig, 0);
IntervalTime=pulseIn(echo, HIGH);
float S=IntervalTime/58.00; //使用浮点计算出距离,单位cm
Serial.println(S);//通过串口输出距离数值
if(S<5)//距离小于5cm触发flag
{
flag=1;
}
switch(flag)
{
case 1:digitalWrite(led,HIGH);if(S<5){flag=0;} break;
case 0:digitalWrite(led,LOW);if(S<5){flag=1;}break;
}
S=0;IntervalTime=0;//对应的数值清零。
delay(500);
}
//延时间隔决定采样的频率,根据实际需要变换参数
} |