弘毅 发表于 2014-4-24 19:36:45

OCROBOT入门教程009--按键控制多LED

本帖最后由 董董soul 于 2016-10-27 10:53 编辑

上节课我们学习了怎样获取数字信号输入,在日常使用中我们会大量使用到微动开关,判断一个开关是否是按住通常都是获取其输入的数字信号。

这节课我们学习一下微动开关的使用,使用微动开关来控制多个LED。

下图这种就是一个微动开关,AB两侧默认是断开的,当你按下去后,断开的引脚会接通,按下去不需要很大的力气,行程也很短。

A侧与B侧各有两个引脚,这两个引脚不论什么时候都是连通的。

我们按照多LED闪烁课程的接法,在D2-D7接6颗LED,然后在D10接口连接微动开关。

大家有没有发现,微动开关连接D10引脚的那一侧,我们同时也接了一个电阻连接到了5V。为什么要这样子接呢?
这样子接的主要作用是在微动开关没有按下的时候,判断微动开关是否按下的D10端口一直保持一个高电平状态,这样子就不会由于空气中电磁波干扰而产生误触发,这种接法也叫做上拉。



#define button_pin 10
int num=1;
void setup() {
for(int i=2;i<8;i++) //初始化D2-D7为输出状态
{
    pinMode(i,OUTPUT);
    digitalWrite(i,HIGH);
}
pinMode(button_pin,INPUT);
}

void loop() {
if(digitalRead(button_pin)==LOW)
{
    delay(5);
    if(digitalRead(button_pin)==LOW)
    {
      num+=1;
      if(num>2)
      {
      digitalWrite(num-1,HIGH);
      }
      if(num>7)
      {
      num=2;
      }
      digitalWrite(num,LOW);
    }
}
delay(100);
}


http://player.youku.com/player.php/sid/XNzE1ODYyMTQ4/v.swf

dtiger2014 发表于 2014-10-10 17:51:19

强哥 什么是上拉? 不好理解

弘毅 发表于 2014-10-11 21:02:35

dtiger2014 发表于 2014-10-10 17:51 static/image/common/back.gif
强哥 什么是上拉? 不好理解

上拉就是将不确定的信号通过一个电阻钳位在高电平,电阻同时起限流作用。

wanghhui 发表于 2015-2-5 13:28:45

请问LED一脚接在5V上,不接GRD,这样做的好处是什么?

averillliu 发表于 2015-2-5 21:05:32

若IO口输出高电平点亮LED,则多个LED同时亮时会超出Atmega328P的最大输出电流,印象中是40mA 吧。

lglfa 发表于 2016-4-11 02:55:45

本帖最后由 lglfa 于 2016-4-11 02:56 编辑

我只连了一个LED,其余的接法都是一样的,想让它按一下亮起来,再按一下灭掉。但是老是不稳定,有时候得按好几下才可以,然后程序如下:楼主帮看看程序有错么,多谢了
#define button_pin 10
int num=1;
void setup() {
      pinMode(2,OUTPUT);
    digitalWrite(2,HIGH);
pinMode(button_pin,INPUT);
}

void loop() {
if(digitalRead(button_pin)==LOW)
{
    delay(5);
    if(digitalRead(button_pin)==LOW)
    {
      num+=1;
      if(num>2)
      {
      digitalWrite(num-1,HIGH);
      }
      if(num>3)
      {
      num=2;
      }
      digitalWrite(num,LOW);
    }
}
delay(50);
}

弘毅 发表于 2016-4-11 10:46:48

lglfa 发表于 2016-4-11 02:55 static/image/common/back.gif
我只连了一个LED,其余的接法都是一样的,想让它按一下亮起来,再按一下灭掉。但是老是不稳定,有时候得按好 ...

需要做消抖

mlyl 发表于 2017-2-9 15:50:58

:):):):):):):):):)

j.in 发表于 2017-2-16 19:45:25

为什么按键按下去之后,四个都连通了之后,它会是LOW而不是HIGH。按键下去并没有改变它原来的电路,只是又多了一条接地的线路吧。为什么他就变了呢?
页: [1]
查看完整版本: OCROBOT入门教程009--按键控制多LED