找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4363|回复: 5
打印 上一主题 下一主题
收起左侧

编一个Arduino程序,人离开3秒后,灯自动熄灭,现在想再加一个按键开关

[复制链接]
跳转到指定楼层
楼主
ID:395068 发表于 2018-10-29 17:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
30黑币
int LED = 9;
int Sensor = 6;
int BUTTON=8;
unsigned long now_time  ;
void setup() {
  pinMode(LED, OUTPUT);
  pinMode(Sensor, INPUT);
  pinMode(BUTTON,INPUT);
  Serial.begin(9600);
}
void loop() {
  //WIFI遥控部分
  while (Serial.available() > 0)
  {
    char  val= Serial.read();
    if (val == '1') {
      now_time = millis();
      digitalWrite(LED, HIGH);
    }
    if (val == '2') {
      digitalWrite(LED, LOW);
    }
  }
  //红外感应部分
if(digitalRead(Sensor) == HIGH){
   now_time = millis();
   }
   if(millis()>(now_time+3000)){
    digitalWrite(LED,LOW);
   }  
//开关部分
}
上面是用WIFI和红外感应控制LED灯的程序,可通过手机发送1或2控制LED灯开关,人离开3秒后,灯自动熄灭,现在想再加一个按键开关,同时也能用按键控制LED灯的开关,应该怎么加

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:396960 发表于 2018-10-30 13:01 | 只看该作者
好奇怪的问题
按键的话,可以扫描电平,或者通过外部中断来实现控制LED。

不会是直接问代码怎么写吧??这样伸手不好的。
回复

使用道具 举报

板凳
ID:319344 发表于 2018-10-30 16:26 | 只看该作者
放在loop函数中,与while (Serial.available() > 0)和if(digitalRead(Sensor) == HIGH) 并列,int state = digitalRead(button);  if(state == LOW){digitalWrite(LED,HIGH);}
这样应该就可以了,你试试。
我没写过arduino程序,但是看着语句功能很直观,我手头也有资料,翻了一下
按键另一端接地,当按键按下,灯亮,松开,灯灭
回复

使用道具 举报

地板
ID:418194 发表于 2018-10-30 21:33 | 只看该作者
这个问题有点古怪,不是不帮你,是感觉没有实际意义
回复

使用道具 举报

5#
ID:418852 发表于 2018-11-1 08:46 | 只看该作者
按键按一次开,再按一次关
loop() {
..................
if (digitalRead(BUTTON) == HIGH) {
  if (digitalRead(LED)==HIGH) {
}
}
回复

使用道具 举报

6#
ID:418852 发表于 2018-11-1 08:51 | 只看该作者
按一次开,再按一次关 :
bool led_on = false;
void loop() {
...............
if (digitalRead(BUTTON)==HIGH) {
if(led_on==false)
digitalWrite(LED,HIGH) ;
led_on = true ;
}  else {
digitalWrite(LED,LOW) ;
led_on = false ;
}  
}
}
   
   
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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