极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13963|回复: 0

超声波控制LED灯亮灭

[复制链接]
发表于 2016-10-21 10:20:42 | 显示全部楼层 |阅读模式

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

}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-13 22:39 , Processed in 0.035266 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表