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

程序设计:

按键控制LED灯亮灭——基于arduino单片机_第1张图片

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

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

硬件连接:按键控制LED灯亮灭——基于arduino单片机_第2张图片

按键结构图

按键控制LED灯亮灭——基于arduino单片机_第3张图片按键控制LED灯亮灭——基于arduino单片机_第4张图片

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

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

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

按键控制LED灯亮灭——基于arduino单片机_第5张图片

实验现象:

按键控制LED灯亮灭——基于arduino单片机_第6张图片

代码

#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);	//等待按键松手
    }
  }
}

你可能感兴趣的:(arduino,嵌入式硬件)