连接图示:
http://s13/mw690/96f94f71gd2376816ed9c&690
实现代码如下:
#define LED_NUMBER
3
//定义LED总数量
int Left_Switch =
12;
//向左切换按键引脚编号
int Right_Switch =
11;
//向右切换按键引脚编号
boolean isPressed = false; //表明按钮是否被按下
int LED[LED_NUMBER]={3,5,7}; //每个LED的引脚
int
state=0;
//表示现在点亮的等的编号
void setup(){
for(int i=0;i
pinMode(LED[i],OUTPUT);
//初始化LEG的工作模式,是OUTPUT
}
pinMode(Left_Switch,INPUT);
//初始化左按钮的工作模式,是INPUT
pinMode(Right_Switch,INPUT);
//初始化右按钮的工作模式,是INPUT
digitalWrite(LED[state],HIGH);
//写入初始状态,(编号为state的等亮)
}
void loop(){
int
Right=digitalRead(Right_Switch);
//读取左按钮数值
int
Left=digitalRead(Left_Switch);
//读取右按钮数值
if(!isPressed&&Left==HIGH){
//如果此时不是按下状态,且左按钮被按下(isPressed是为了防止按住按钮产生连续按动)
digitalWrite(LED[state],LOW);
//把现在的灯关掉
state=(state+1)%LED_NUMBER;
//算算应该哪个灯亮
digitalWrite(LED[state],HIGH);
//点亮这个等
isPressed =
true;
//把现在的状态设置成已经按下状态
}
if(!isPressed&&Right==HIGH){
//这一部分刚好跟上面相反
digitalWrite(LED[state],LOW);
state=(state+2)%LED_NUMBER;
digitalWrite(LED[state],HIGH);
isPressed =
true;
}
if(Left==LOW&&Right==LOW){
//如果都是低相当于没有按钮按下
isPressed=false;
//置isPressed为假
}
}
实现图:http://s10/mw690/96f94f71gd237894eb6f9&690
资料来源:http://www.geek-workshop.com/forum.php?mod=viewthread&tid=1092
加载中,请稍候......