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 static/image/common/back.gif
强哥 什么是上拉? 不好理解
上拉就是将不确定的信号通过一个电阻钳位在高电平,电阻同时起限流作用。 请问LED一脚接在5V上,不接GRD,这样做的好处是什么? 若IO口输出高电平点亮LED,则多个LED同时亮时会超出Atmega328P的最大输出电流,印象中是40mA 吧。 本帖最后由 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);
}
lglfa 发表于 2016-4-11 02:55 static/image/common/back.gif
我只连了一个LED,其余的接法都是一样的,想让它按一下亮起来,再按一下灭掉。但是老是不稳定,有时候得按好 ...
需要做消抖 :):):):):):):):):) 为什么按键按下去之后,四个都连通了之后,它会是LOW而不是HIGH。按键下去并没有改变它原来的电路,只是又多了一条接地的线路吧。为什么他就变了呢?
页:
[1]