Waveshare
直播中

陈锐文

11年用户 780经验值
擅长:可编程逻辑 嵌入式技术 模拟技术 EDA/IC设计 处理器/DSP
私信 关注
[经验]

微雪Arduino系列教程六:按键

本帖最后由 依然落叶飘零 于 2016-4-27 19:54 编辑

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

[接口
  • Arduino接口
    方便接入各种带Arduino接口的主板
  • XBee接口
    方便接入各种XBee通信模块

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

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


  1. #define KEY A4
  2. void setup() {
  3.   pinMode(KEY,INPUT);
  4.   digitalWrite(KEY,HIGH);
  5.   Serial.begin(9600);
  6. }
  7.    
  8. void loop() {
  9.   if(digitalRead(KEY) == LOW){
  10.    delay(10);
  11.   if(digitalRead(KEY) == LOW)
  12.     Serial.println("KEY PRESS!!!");
  13.     while(digitalRead(KEY) == LOW){
  14.       delay(10);
  15.     }
  16.   }
  17. }


Accessory Shield插上UNO PLUS开发板。编译并上传程序,打开串口监视器。等待一会儿,按下Accessory Shield中五向摇杆的中间按键,串口监视器会显示按键按下的信息。

程序分析:

程序开头定义按键接到A4管脚,setup()函数中设置管脚为输入模式,默认高电平,初始化串口,波特率为9600.

loop()函数中判断管脚是否为低电平,若为低电平测表示有按键被按下。delay(10);

延时10ms去抖动,防干扰。再次判断管脚状态。若为低则表示不是抖动,是按键按下。使用Serial.println("KEY PRESS!!!")语句显示信息。然后等待按键被释放。


回帖(1)

蓝卓玟

2016-4-27 19:58:25
谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢
举报

更多回帖

发帖
×
20
完善资料,
赚取积分