极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13949|回复: 4

[胖熊笔记]小白的第二个程序,按键控制开关灯

[复制链接]
发表于 2011-12-17 23:39:38 | 显示全部楼层 |阅读模式
本帖最后由 panda 于 2011-12-18 09:51 编辑

今天收到了买的元件立刻尝试做了用按键开关灯的实验。

    代码如下

  1.    /*
  2.   Panda Learning Arduino
  3.   Exp:02
  4.   Date:2011-12-15
  5.   Program: Test the LED on UNO board.
  6. */

  7. //define const
  8. #define LED 13                                //setting the LED on the PIN 13
  9. #define BUTTON 7                        //setting the Botton input from the PIN 7
  10. #define SHORT 100                //setting the short delay is 100ms
  11. #define LONG 200                        //setting the long delay is 200ms

  12. //Define Variable
  13. boolean ledStat = false;                                //save the led stat

  14. //setup
  15. void setup() {
  16.         pinMode(LED,OUTPUT);       
  17.         pinMode(BUTTON,INPUT);
  18. }

  19. //function: the LED flashing
  20. void ledFlash() {
  21.         digitalWrite(LED,HIGH);
  22.         delay(LONG);
  23.         digitalWrite(LED,LOW);
  24.         delay(SHORT);
  25. }

  26. //function: the LED flashing return the button action
  27. void ledChecking(boolean f) {
  28.         switch (f) {
  29.                 case 0:
  30.                         for(int i=0;i<=2;i++) ledFlash();  // close LED
  31.                         break;
  32.                 case 1:
  33.                         for(int i=0;i<=3;i++) ledFlash();  // open LED
  34.                         break;       
  35.         }
  36. }

  37. //main
  38. void loop() {
  39.         if(digitalRead(BUTTON)==HIGH) {
  40.             delay(10);
  41.             if(digitalRead(BUTTON) == LOW) {
  42.                 ledStat = (!ledStat);
  43.                 ledChecking(ledStat);
  44.                 digitalWrite(LED,ledStat);
  45.             }
  46.         }

  47. }
复制代码
一开始的时候始终不行,后来请教了叫兽,才知道电路接的有问题,我只接了从 5V ----  button  ---- pin7, 这样按键下去 pin7 会有5v, 原先想的是不按就没有了。叫兽说这样板子会读不到pin7,然后就开始随便给值,所谓的抽风。 于是改为现在的接法, ok了。
  
  程序内部用了下降沿触发。
另外 自己搞了个让led闪的函数,呵呵,开灯闪三下,灭灯闪两下。

回复

使用道具 举报

 楼主| 发表于 2011-12-18 09:52:35 | 显示全部楼层
有个问题,感觉开灯的时候闪了4下再亮的,为啥呢?
回复 支持 反对

使用道具 举报

发表于 2011-12-18 19:44:29 | 显示全部楼层
{:soso_e142:}支持分享自己的学习过程和心得~

不外接led,只是板子上的13号口的led会闪4次吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-12-18 19:59:29 | 显示全部楼层
呵呵,看了程序是自己写的问题
  i=0; i<=3;i++
0,1,2,3 就是4下
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-12-18 20:00:53 | 显示全部楼层
灭灯其实是闪三下,因为第一下开始灯是亮着的,所以看上去是闪了两下。{:soso_e112:}
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-3-29 16:02 , Processed in 0.039316 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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