方法一
const int LED=13; //声明变量 LED灯接在13针脚; const int BUTTON=7; //声明变量,按钮接在第7针脚; int
val=0; //声明变量,用来存储按钮返回值HIGH或者LOW; int val_old=0;
//声明变量,存储上一次按钮返回值;比对val和val_old的值,来判断按钮是按下还是抬起 //val==LOW && val_old==HIGHT
抬起状态;val==HIGH && val_old==LOW 按下状态; int state=0;//0 off,1 on 声明变量,起到中转的作用,小技巧;
void setup() //初始化; { pinMode(LED,OUTPUT); //定义LED灯输入模式; pinMode(BUTTON,INPUT);
//定义BUTTON为输出模式; } void loop() { val=digitalRead(BUTTON);//读取数字针脚的值; if
((val==HIGH) && (val_old==LOW))//比较前一次和现在的按钮返回的值, //只有现在按下按钮这个状态下,才改变state的值 {
state=1-state; } if((val==LOW && val_old==HIGH)) //去抖的作用,一般10-15ms; { delay(10
); } val_old=val;//把现在按钮返回的值赋予val_old; if(state==1)//控制灯开关; {
digitalWrite(LED,HIGH); }else { digitalWrite(LED,LOW); } }

方法二(使用了内部上拉电阻)
// 按键控制LED灯开关,使用内部上拉电阻; const int LED = 13; const int BUTTON = 7; boolean
state =false;//声明led灯的状态,默认是关的; void setup { pinMode(LED,OUTPUT);
pinMode(BUTTON,INPUT_PULLUP);//按钮接内部上拉电阻; } void loop { while
(digitalRead(BUTTON) == HIGH){}//模拟:等待开关被按下; //因为使用了上拉电阻,未按下 //之前,按钮一直保持着高电平。
//直到按钮被按下,条件为假,跳出 //循环,执行下边的语句。 if(state = true)//判断:如果灯的状态是亮,则熄灭它,然后将状态
//标记为灭(使用了取反的技巧);否则,如果灯的 //状态是灭的,则点亮它,然后将状态标记为亮(使用取反); { digitalWrite(LED,LOW);
state = !state;//标记灯的当前状态 } else { digitalWrite(LED,HIGH); state = !state;
//标记灯的当前状态 } delay(500); }

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信