按键控制LED灯亮灭——基于arduino单片机

程序设计:

函数:digitalRead()
作用:用来读取数字串口状态,HIGH还是LOW

(其实还有一种表达方式就是HIGH是“1”,LOW是“0”,只是HIGH/LOW更直观)。函数需要一个传递参数——LED,这里需要读取LED信号。

硬件连接:

按键结构图

 下拉电阻:把电压往下拉,降低电压。

按键作为开关,当输入电路状态为HIGH的时候,电压要尽可能接近5V;输入电路状态为LOW的时候,电压要尽可能接近0。如果不能确保状态接近所需电压,这部分电路就会产生电压浮动。所以,我们在按键那里接了一个电阻来确保一定达到LOW,这个电阻就是所谓的下拉电阻。

未接下拉电阻的电路,按键没被按下时,输入引脚就处于悬空状态。空气会使该引脚电压产生浮动,不能确保是0。然而接了下拉电阻的电路,当按键没被按下时,输入引脚通过电阻接地,确保电压为0,不会产生电压浮动现象。

实验现象:

代码

#define LED 13
#define KEY 2
int KEY_NUM = 0;			//按键键值存放变量,不等于1说明有按键按下
void setup()
{
  pinMode(LED,OUTPUT);					//定义LED为输出引脚
  pinMode(KEY,INPUT_PULLUP);		//定义KEY为带上拉输入引脚
}

void loop()
{
  ScanKey();						//按键扫描程序,当按键按下时候,该子程序会修改KEY_NUM的值
  if(KEY_NUM == 1)							//是否按键按下
  {   
    digitalWrite(LED,!digitalRead(LED));		//LED的状态翻转
  }
}

void ScanKey()						//按键扫描程序
{
  KEY_NUM = 0;							//清空变量
  if(digitalRead(KEY) == LOW)			//有按键按下
  {
    delay(20);						//延时去抖动
    if(digitalRead(KEY) == LOW)		//有按键按下
    {
      KEY_NUM = 1;				//变量设置为1
      while(digitalRead(KEY) == LOW);	//等待按键松手
    }
  }
}

  • 4
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用Arduino来编写这样的程序,具体步骤如下: 1. 首先,需要在Arduino板上插入一个LED。将LED的正极连接到板上的数字引脚2(这只是一个示例,可以使用任何数字引脚),将负极连接到板上的GND(接地)引脚。 2. 在Arduino开发环境中创建一个新的sketch(即程序)。 3. 在程序中,添加以下代码段: int ledPin = 2; //将变量ledPin设置为数字引脚2 void setup() { pinMode(ledPin, OUTPUT); //将引脚ledPin设置为输出模式 } void loop() { if (Serial.available() > 0) { //检查串口是否有数据可读 char incomingByte = Serial.read(); //读取串口中的一个字符 if (incomingByte == '1') { //如果收到'1',则点LED digitalWrite(ledPin, HIGH); } else if (incomingByte == '0') { //如果收到'0',则熄LED digitalWrite(ledPin, LOW); } } } 解释: 这段程序首先定义了一个变量ledPin,将其设置为数字引脚2,然后设置setup()函数,将ledPin引脚设置为输出模式。 然后,程序进入到无限循环的loop()函数中。在此函数中,程序首先使用Serial.available()函数检查串口是否有数据可读。如果有,程序使用Serial.read()函数将数据读取到incomingByte变量中。如果该字符为'1',则调用digitalWrite()函数,将LED引脚的电平设置为HIGH(即点LED)。如果该字符为'0',则将LED引脚的电平设置为LOW(即熄LED)。 4. 上传程序到Arduino板上,并打开串口监视器窗口(可以通过点击Arduino IDE窗口中的右上角放大镜按钮实现)。 5. 在串口监视器窗口中输入0或1,并按下回车键。您应该可以看到LED在接收到相应的字符后点或熄。 请注意,此程序只是示例代码。您可以根据您的具体应用程序和硬件配置进行修改。同时,确保您按顺序按下"Upload"按钮或使用快捷键Ctrl+U,这样才能将程序上传到您的Arduino板上。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值