17449浏览
查看: 17449|回复: 14

按一下灯亮,再按一下灯灭。。。

[复制链接]
本帖最后由 lisper 于 2014-5-17 22:27 编辑

很多人问我这个怎么做,为了避免被人重复骚扰,只好发帖

  1. /*******    switch_led.ino    *******/
  2. #define BUTTON_PIN        6
  3. #define LED                13
  4. //
  5. boolean button_now_state = LOW;
  6. boolean button_old_state = LOW;
  7. boolean led_state = LOW;
  8. //
  9. void setup () {
  10.         pinMode (BUTTON_PIN, INPUT);
  11.         pinMode (LED, OUTPUT);
  12. }
  13. //
  14. void loop () {
  15.         button_now_state = digitalRead (BUTTON_PIN);        //read button state
  16.         if (button_old_state == LOW && button_now_state == HIGH) {        //if low -> high
  17.                 led_state = !led_state;                        //switch state: true <-> false
  18.                 digitalWrite (LED, led_state);
  19.         }
  20.         button_old_state = button_now_state;       //save button state
  21. }
  22. /*******    end of file    *******/
复制代码




发图一副,镇楼。


按一下灯亮,再按一下灯灭。。。图1







Jane  高级技匠

发表于 2014-5-17 20:08:53

那就顶一下吧~
回复

使用道具 举报

lisper  中级技匠
 楼主|

发表于 2014-5-17 20:33:21

Jane 发表于 2014-5-17 20:08
那就顶一下吧~

饭啊。。
回复

使用道具 举报

Holiday  初级技匠

发表于 2014-6-12 17:16:20

我觉得很多人是看了图就不想看帖子了,,,,你就不能放个好点的图?
比如这种
回复

使用道具 举报

lisper  中级技匠
 楼主|

发表于 2014-6-13 19:09:39

Holiday 发表于 2014-6-12 17:16
我觉得很多人是看了图就不想看帖子了,,,,你就不能放个好点的图?
比如这种 ...

这个太随便了。。。
回复

使用道具 举报

YukTseng  学徒

发表于 2014-6-18 04:59:48

学习学习~~~~:D
回复

使用道具 举报

Rockets  NPC

发表于 2014-6-25 10:21:52

敢不敢在工程师一点?
回复

使用道具 举报

lauren  高级技师

发表于 2014-6-25 21:38:01

哈哈,这个貌似很多小朋友有问。。。

Arduino如何按键,开关,按一下亮灯,再按一下灭掉。;P
在这里看到真相了哈哈。
回复

使用道具 举报

lisper  中级技匠
 楼主|

发表于 2014-6-26 09:52:56

Rockets 发表于 2014-6-25 10:21
敢不敢在工程师一点?

还不够吗?下次努力。。。
回复

使用道具 举报

Youyou  初级技匠

发表于 2014-7-18 18:49:25

楼主需要对按键抖动做下处理,不然很容易误触发。:lol
回复

使用道具 举报

Youyou  初级技匠

发表于 2014-7-18 19:03:59

本帖最后由 Youyou 于 2014-7-18 19:05 编辑
  1. byte LED = 13;
  2. byte BUTTON = 3;
  3. void setup(void)
  4. {
  5.   pinMode(LED,OUTPUT);
  6.   pinMode(BUTTON,INPUT_PULLUP);
  7.   digitalWrite(LED,LOW);
  8. }
  9. void loop(void)
  10. {
  11.   static unsigned long timepoint = millis();
  12.   static byte count = 0;
  13.   if(millis()-timepoint > 10)
  14.   {
  15.     timepoint = millis();
  16.     if(digitalRead(BUTTON)) count = 0;
  17.     if( (count<100) && (++count==10) )
  18.       digitalWrite(LED,digitalRead(LED)^1);
  19.   }
  20. }
复制代码

回复

使用道具 举报

lisper  中级技匠
 楼主|

发表于 2014-9-2 22:10:36

回复

使用道具 举报

mmaer  初级技师

发表于 2016-8-30 16:36:27

  1. int BUTTON = 6;
  2. int LED = 13;
  3. int state = HIGH;
  4. long timepoint = 0;
  5. void setup()
  6. {
  7.   pinMode(BUTTON, INPUT);
  8.   pinMode(LED, OUTPUT);
  9. }
  10. void loop()
  11. {
  12.   if ( digitalRead(BUTTON) == HIGH && millis() - timepoint > 200)
  13.   {
  14.     timepoint = millis();
  15.     digitalWrite(LED, state++ % 2) ;
  16. //    digitalWrite(LED, state = (state == LOW)) ;
  17.   }
  18. }
复制代码


回复

使用道具 举报

lisper  中级技匠
 楼主|

发表于 2016-12-6 17:23:58


重点是讲原理。。。
回复

使用道具 举报

gray6666  初级技神

发表于 2017-3-27 14:33:00

感谢分享
回复

使用道具 举报

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

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail