Arduino的特点之一就是有趣的人机互动,要实现互动当然少不了输入设备。我们从最简单的输入设备按键来入手,今天就把按键控制加入1.5的LED流水灯实验上,通过按键控制流水灯方向。
Fireduino开发平台 | 1块 | 万用板 | 1块 | LED(发光二极管) | 4个(不同颜色) | 220欧姆电阻 | 4个 | 杜邦线 | 若干 |
电路连接图如下:
实现原理:这次教程用到的按键是四角轻触开关,这种按键在电子产品很常用。它的原理如下图,12脚与34脚是相通的,在没按下的时候这两组是断开的,按下按键的时候1234则相通在一起。我们利用这个特性来制作开关
其次,我们这次用到了下拉电阻在没有按下按键的时候让引脚通过这个10K电阻接地。在按下按键的时候Fireduino上的3V输出口输出电平到输入检测口达到高电平。这样我们就可以通过读取电平来识别按键的状态了。
Arduino代码:
- /*
- 作者:暴走的阿Sai
- 时间:2016年9月5日
- 发表地址:www.t-firefly.com
- 程序说明:
- 通过按键控制LED流水方向
- */
- void setup() {
- // 初始化引脚8,9,10,11为输出
- pinMode(8, OUTPUT);
- pinMode(9, OUTPUT);
- pinMode(10, OUTPUT);
- pinMode(11, OUTPUT);
- //初始化2,13引脚为输入
- pinMode(7, INPUT);
- pinMode(12, INPUT);
- }
- // the loop function runs over and over again forever
- void loop() {
- int i,j;//设置变量i与变量j用于循环
- if(digitalRead(12) == HIGH )//检测12引脚为高的时候执行
- {
- for(i=8;i<=11;i++)
- {
- digitalWrite(i, HIGH); // 设置引脚i为高电平
- delay(200); // 延迟200毫秒
- digitalWrite(i, LOW); // 设置引脚i为低电平
- delay(200); // 延迟200毫秒
- }
- }
- if(digitalRead(7) == HIGH )//检测7引脚为高的时候执行
- {
- for(j=11;j>=8;j--)
- {
- digitalWrite(j, HIGH); // 设置引脚j为高电平
- delay(200); // 延迟200毫秒
- digitalWrite(j, LOW); // 设置引脚j为低电平
- delay(200); // 延迟200毫秒
- }
- }
- }
[color=rgb(247, 87, 51) !important]复制代码
运行效果如下:
主要用到的函数:
[color=rgb(247, 87, 51) !important]复制代码
———————————————————————————
【教程传送】Arduino单片机创客进化之路教程汇总贴
【Fireduino QQ交流群】:450340779
——————————————————————————— Firefly微信公众号 阿Sai微博 ———————————————————————————
|