Arduino系列教程五:按键

来自丢石头百科


上面两章我们讲解两个经典的程序点亮一个LED灯和Hello World程序。这一章开始我们将讲解Arduino的软件编程控制硬件。本系列教程主要是Arduin的入门教程,讲解基本的接口编程。Arduino的很多教程都是通过面包板连接硬件电路。我本人很不喜欢这种方式,连接一些简单的电路还行,如果电路复杂的时候就非常麻烦了。再接下来的教程中我将使用Accessory Shield扩展板作为示例讲解Arduino的数字IO,模拟IO,PWM,I2C,SPI等接口的编程。

221208su4cquccmuu3mamg.png

<tbody></tbody>
[接口]
  1. Arduino接口 方便接入各种带Arduino接口的主板
  2. XBee接口 方便接入各种XBee通信模块
[器件]
  1. 0.96inch OLED 方便进行各种显示实验,分辨率128×64
  2. 多彩 LED 红绿蓝三基色LED,可以显示256×256×256种颜色 
  3. 蜂鸣器 PWM连接,能演奏简单的音乐
  4. * 10K可调电位器
  5. ADXL345 三轴加速度计,测量范围可达±16g
  6. LM75BDP  温度传感器,分辨率可达0.125℃
  1. 五向摇杆 上、下、左、右和按下,共5种状态
  2. * XBee 状态指示灯* 电源指示灯* XBee EASYLINK按键* Arduino和XBee复位按键
  3. DS3231 高精度实时时钟
  4. CR1220电池座 实时时钟供电
  5. P9813 RGB LED驱动芯片
[跳线]
  1. 调试/通信配置跳线 当选择TXD与TX,RXD与RX相连时,可使用上位机软件通过Arduino主控板串口对XBee通信模块进行调试和配置 当选择TXD与RX,RXD与TX相连时,可通过Arduino主控板串口与XBee通信模块进行数据通信

打开Arduino IDE,编写如下程序并保存。

#define KEY A4

void setup() {

  pinMode(KEY,INPUT);

  digitalWrite(KEY,HIGH);

  Serial.begin(9600);

}

 

void loop() {

  if(digitalRead(KEY) == LOW){

    delay(10);

    if(digitalRead(KEY) == LOW)

    Serial.println("KEY PRESS!!!");

    while(digitalRead(KEY) == LOW){

      delay(10);

    }

  }

}


把Accessory Shield插上UNO PLUS开发板。编译并上传程序,打开串口监视器。等待一会儿,按下Accessory Shield中五向摇杆的中间按键,串口监视器会显示按键按下的信息。 程序分析: 程序开头定义按键接到A4管脚,setup()函数中设置管脚为输入模式,默认高电平,初始化串口,波特率为9600. loop()函数中判断管脚是否为低电平,若为低电平测表示有按键被按下。delay(10); 延时10ms去抖动,防干扰。再次判断管脚状态。若为低则表示不是抖动,是按键按下。使用Serial.println("KEY PRESS!!!")语句显示信息。然后等待按键被释放。