查看: 1294|回复: 1

关于人体红外感应亮灯的程序,有点小疑问,请大神解惑。

[复制链接]

该用户从未签到

发表于 2018-5-25 00:11 | 显示全部楼层 |阅读模式
刚开始自学arduino,学到红外感应加继电器来实现亮灯的内容,发现买的入门套件当中没有继电器,于是就自己改了下连线方式,直接用led灯高低电平来亮灭灯。程序如下:
int PIRpin=2;
int LEDpin=13;

void setup() {
Serial.begin(9600);
  pinMode(PIRpin,INPUT);
  pinMode(LEDpin,OUTPUT);

}

void loop() {
while(!digitalRead(PIRpin)){}
Serial.println("turn on");
digitalWrite(LEDpin,HIGH);
delay(10000);
digitalWrite(LEDpin,LOW);
Serial.println("turn off");

}

这也是我第一次模仿着来写程序。运行过后,我以为失败了,因为灯亮起以后一直不灭。后来发现灯不是不灭,要等好久好久才会灭。起初我在想难道波特率不对导致了delay(10000)等待的时间远远超过10秒?可是书上用的波特率就是9600啊。后来打开监测器来看,数了数发现我竟然出现了10个turn on-turn off的过程,过了100秒,灯才会再次灭掉。求助大神们,帮我解解惑,我到底问题出在哪里了?
  • TA的每日心情
    郁闷
    2018-12-6 22:21
  • 签到天数: 48 天

    [LV.5]常住居民I

    发表于 2018-6-2 19:47 | 显示全部楼层
    1.确定下你led是高电平亮,还是 低电平亮;
    2.while(!digitalRead(PIRpin)){}是一个等待过程,要检测到人了,传感器会输出一个脉冲,这个脉冲长短的要控制在10秒内,(我也忘了会不会超过10秒了)传感器上有一个电位器可以调解这个脉冲长度
    3.传感器有灵敏度,同样上面有个电位器可以调解,没调好会造成误触发

    我觉得以上可能会影响程序,具体只有你自查下了
    如果以上内容对你有帮助,你可以通过打赏支持作者
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    KittenBot杯第六届开源硬件开发大赛启动啦
    KittenBot杯第六届开源硬
    大赛简介: 第六届开源硬件开发大赛由Arduino中文社区发起 由KittenBot冠名赞助
    全过程展示:PWM自定义、测速、PID调速、PID自整定
    全过程展示:PWM自定义、
    arduino如何控制带驱动28步进电机
    arduino如何控制带驱动28
    有大佬知道吗,arduino不知道能不能发出脉冲信号
    Wifiduino(esp8266)+blinker+微信消息推送
    Wifiduino(esp8266)+bli
    最近呢,有个很小的项目 需要反馈现场电源工作状态,着急开发,没时间做方案。我又是
    因为DHT11是假的吗?
    因为DHT11是假的吗?
    用DHT11测温湿度时,监视窗口总是这样显示,这是为什么啊,求大佬告知!
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表