实际上一接线顿时就明白了,这根本就是两趟电路,一趟接的5V的电连接一个比较大的电阻,另一个数字信号发出接上一个小电阻,通过大电阻的按键控制LED灯的开关。(当然在板的内部其实是有联系的)
材料准备
arduino 板1块,按键开关1个,LED灯1个,10KR电阻一个,250R电阻一个,导线若干。
接线按上图接线即可。
实际效果代码部分
const int buttonPin =2;//定义按键频道
const int ledPin=13;//定义灯的频道
int buttonState =0;//定义按键的状态为0(关)
void setup()
{
pinMode(ledPin,OUTPUT);//设置灯的信号和输出模式
pinMode(buttonPin,INPUT); //设置按键的信号和输出模式
}
void loop()
{
buttonState = digitalRead(buttonPin);//按键状态等于数字信号读取的2号信道的状态,当然此刻是0或者说是LOW
if(buttonState == HIGH)
{
digitalWrite(ledPin,HIGH);//按下按键灯就亮
}
else
{
digitalWrite(ledPin,LOW);
}
}
实际效果
GIF.gif修改电路图用arduino板内部的上拉电阻来控制灯的亮灭。
image.png修改代码
const int buttonPin =2;
const int ledPin=13;
int buttonState =0;
void setup()
{
pinMode(ledPin,OUTPUT);
pinMode(buttonPin,INPUT_PULLUP);
}
void loop()
{
buttonState = digitalRead(buttonPin);
if(buttonState == HIGH)
{
digitalWrite(ledPin,HIGH);
}
else
{
digitalWrite(ledPin,LOW);
}
}
效果是一样的不同的是LED灯是常亮的,按下按键会灭掉。
升级
按一下按键灯亮,再按一下灯灭。
接线方式
与第一种一样。
代码部分
int buttonPin =2;
int ledPin=13;
boolean ledState = false;//定义灯的状态为假
boolean buttonState =true;//定义按键的状态为真
void setup()
{
pinMode(ledPin,OUTPUT);
pinMode(buttonPin,INPUT_PULLUP);
}
void loop()
{
while (digitalRead(buttonPin) == HIGH){//while循环如果按键频道读取为真时循环
if(ledState == true)//判断灯的状态为真时
{
digitalWrite(ledPin,LOW);//灯灭
ledState = !ledState;//更改灯的状态,第一次变成假
}
else
{
digitalWrite(ledPin,HIGH);//灯亮
ledState = !ledState;//更改灯的状态,第一次变成假
}
delay(500);//延迟很重要,不然系统运行速度过快按键可能失灵
}
}
网友评论