ignore 发表于 2016-10-21 10:20:42

超声波控制LED灯亮灭


同一个距离,比如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);
}
    //延时间隔决定采样的频率,根据实际需要变换参数

}
页: [1]
查看完整版本: 超声波控制LED灯亮灭