版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhangjiali12011/article/details/78338295
ps. 每个例程实验的第一组代码来自购买arduino板是附赠的例程代码,第二组代码为根据前者进行的修改练习。
1.按键控制LED
int ledpin=11;//定义数字11 接口
int inpin=7;//定义数字7 接口
int val;//定义变量val
void setup()
{
pinMode(ledpin,OUTPUT);//定义小灯接口为输出接口
pinMode(inpin,INPUT);//定义按键接口为输入接口
}
void loop()
{
val=digitalRead(inpin);//读取数字7 口电平值赋给val
if(val==LOW)//检测按键是否按下,按键按下时小灯亮起
digitalWrite(ledpin,LOW);
else
digitalWrite(ledpin,HIGH);
}
此处需要:arduino板,跳线若干,按键一个,LED灯一个,10k电阻一个
接线如图所示(与灯相连的电阻220欧,与开关相连的10K)
上传后的效果为,按键不按时,7接口输入低电平,LED灯不亮;按键按下时,7接口输入高电平,LED灯点亮。
在此基础上进行修改
int ledpin=11;//定义数字11 接绿灯
int ledpin2=2;//定义数字2接口接红灯
int inpin=7;//定义数字7 接口
int val;//定义变量val
void setup()
{
pinMode(ledpin,OUTPUT);
pinMode(ledpin2,OUTPUT);//定义小灯接口为输出接口
pinMode(inpin,INPUT);//定义按键接口为输入接口
}
void loop()
{
val=digitalRead(inpin);//读取数字7 口电平值赋给val
if(val==LOW)//检测按键是否按下
{digitalWrite(ledpin,LOW);
digitalWrite(ledpin2,HIGH);}//未按下,红灯亮绿灯灭
else
{digitalWrite(ledpin,HIGH);
digitalWrite(ledpin2,LOW);}//按下,绿灯亮红灯灭
}
此处需要增加一个220欧电阻和一个LED灯
接线图如下(与灯相连的电阻220欧,与开关相连的10K)
此时上传的效果为,按键不按时,红灯亮绿灯熄灭;按键按下时,绿灯亮红灯熄灭。
2.抢答器
int redled=10; //set IO 10 to red LED
int yellowled=9;//set IO 10 to yellow LED
int greenled=8;//set IO 10 to green LED
int redpin=7; //red key pin IO 7
int yellowpin=6;//yellow key pin IO 6
int greenpin=5;//green key pin IO 5
int red; //变量声明
int yellow;//变量声明
int green;//变量声明
void setup()
{
pinMode(redled,OUTPUT); //set as output
pinMode(yellowled,OUTPUT); //set as output
pinMode(greenled,OUTPUT); //set as output
pinMode(redpin,INPUT); //set as input
pinMode(yellowpin,INPUT); //set as input
pinMode(greenpin,INPUT); //set as input
}
void loop()
{
red=digitalRead(redpin);//读取按键状态
if(red==LOW) //按键状态为低
{ digitalWrite(redled,LOW);}//LED熄灭
else //按键状态为高
{ digitalWrite(redled,HIGH);}//LED点亮
yellow=digitalRead(yellowpin);
if(yellow==LOW)
{ digitalWrite(yellowled,LOW);}
else
{ digitalWrite(yellowled,HIGH);}
green=digitalRead(greenpin);
if(green==LOW)
{ digitalWrite(greenled,LOW);}
else
{ digitalWrite(greenled,HIGH);}
}
接线图如下(和上一组唯一的差别就是灯变成了三个)
然而我从未见过如此撒fufu的抢答器,就是一个三开关分别控制一个小灯的电路,同时按完全看不出先后,没有抢答器的效果。
故修改为
int redled=10; //set IO 10 to red LED
int whiteled=9;//set IO 10 to white LED
int greenled=8;//set IO 10 to green LED
int redpin=7; //red key pin IO 7
int whitepin=6;//yellow key pin IO 6
int greenpin=5;//green key pin IO 5
int red; //变量声明
int white;//变量声明
int green;//变量声明
boolean RESET=false;//重置
void setup()
{
pinMode(redled,OUTPUT); //set as output
pinMode(whiteled,OUTPUT); //set as output
pinMode(greenled,OUTPUT); //set as output
pinMode(redpin,INPUT); //set as input
pinMode(whitepin,INPUT); //set as input
pinMode(greenpin,INPUT); //set as input
}
void loop()
{
red=digitalRead(redpin);
white=digitalRead(whitepin);
green=digitalRead(greenpin);//读取按键状态
if(green==LOW&red==LOW&white==LOW)
{
digitalWrite(redled,LOW);
digitalWrite(whiteled,LOW);
digitalWrite(greenled,LOW);
RESET=false;
}//当三个按键都不按下时,重置
if(RESET)return;{
if(red==HIGH)
{
digitalWrite(redled,HIGH);
}
if(white==HIGH)
{
digitalWrite(whiteled,HIGH);
}
if(green==HIGH)
{
digitalWrite(greenled,HIGH);
}}
if(red==HIGH||green==HIGH||white==HIGH)
{
RESET=true;}//三个键任意一个接通,其余两个均不会再亮
}
接线图如下
注:这种抢答器,抢答人员按下后不能松手不然就是无效的,若想像电视节目那样拍一下即可,需要再加一个复位按键。
此时的效果是,最快按下的键对应的灯亮,其余皆不亮。三个按键均松开后,复位,可再次抢答。