查看: 1652|回复: 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.传感器有灵敏度,同样上面有个电位器可以调解,没调好会造成误触发

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

    本版积分规则

    热门推荐

    博哥零基础教你玩转ESP8266(十三) ESP8266WiFiGeneric库
    博哥零基础教你玩转ESP826
    帖子导航帖 博哥零基础教你玩转ESP8266(一) 重识ESP8266 博哥零基础教你玩转ESP8266
    求助!WeMos D1 WiFi怎么接0.96寸OLED?(ㄒoㄒ)
    求助!WeMos D1 WiFi怎么
    求助!WeMos D1 WiFi怎么接0.96寸OLED?(ㄒoㄒ) 想用WeMos D1 WiFi接收服务器的数据然
    串口发送16进制指令求助
    串口发送16进制指令求助
    我准备串口发出16进制指令到我的外置设备 代码如下图 我分别监控ARDUINO的tx口和USB口
    一文教你选择Arduino开发板,小白进
    一文教你选择Arduino开发
    笔者在2016年接触了Arduino,跳了万条坑,行了千里弯,到今天也算是Arduino的一
    大神们!1602显示屏上的MQ2浓度示数不是实时监测的何解
    大神们!1602显示屏上的MQ
    本人小白,刚刚接触arduino,长时间的查阅资料后,通过复制修改代码接线实现了DHT11实
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表