“第三课--按钮控制的LED开关/zh”的版本间的差异
(→按键) |
(→设备) |
||
(未显示1个用户的6个中间版本) | |||
第6行: | 第6行: | ||
前两个实验介绍了如何用软件直接控制led灯的亮灭。如果我们增加一个按键,通过按键来控制led的亮灭,就可以实现硬件与软件的结合。前面实际上是Microduino的I/O口作为输出去控制led,增加按键如何去监测按键输入的信号呢?今天以按键为例讲讲Microduino如何作为输入使用。 | 前两个实验介绍了如何用软件直接控制led灯的亮灭。如果我们增加一个按键,通过按键来控制led的亮灭,就可以实现硬件与软件的结合。前面实际上是Microduino的I/O口作为输出去控制led,增加按键如何去监测按键输入的信号呢?今天以按键为例讲讲Microduino如何作为输入使用。 | ||
==设备== | ==设备== | ||
− | *'''[[Microduino-Core]]''' | + | *'''[[Microduino-Core/zh]]''' |
− | *'''[[Microduino- | + | *'''[[Microduino-USBTTL/zh]]''' |
*其他硬件设备 | *其他硬件设备 | ||
**面包板跳线 一盒 | **面包板跳线 一盒 | ||
第14行: | 第14行: | ||
**220欧姆电阻 一个 | **220欧姆电阻 一个 | ||
**按键 一个 | **按键 一个 | ||
− | **USB数据连接线 一根 | + | **USB数据连接线 一根 |
+ | |||
+ | [[File:lesson3All.jpg|600px|center|thumb]] | ||
==按键== | ==按键== | ||
第24行: | 第26行: | ||
==原理图== | ==原理图== | ||
− | [[File: | + | [[File:button schematic.jpg|600px|center|thumb]] |
采用外部下拉,没按下时为低“0”,按下为高。 | 采用外部下拉,没按下时为低“0”,按下为高。 | ||
+ | |||
+ | |||
+ | [[File:lesson3Setup.jpg|600px|center|thumb]] | ||
==程序== | ==程序== | ||
第31行: | 第36行: | ||
<source lang="cpp"> | <source lang="cpp"> | ||
const int buttonPin = 2; // 定义按键输入引脚 | const int buttonPin = 2; // 定义按键输入引脚 | ||
− | const int ledPin = | + | const int ledPin = 11; //定义led引脚 |
int buttonState = 0; //初始化按键值 | int buttonState = 0; //初始化按键值 | ||
void setup() { | void setup() { | ||
第50行: | 第55行: | ||
<source lang="cpp"> | <source lang="cpp"> | ||
const int buttonPin = 2; // 定义按键输入引脚 | const int buttonPin = 2; // 定义按键输入引脚 | ||
− | const int ledPin = | + | const int ledPin = 11; |
int buttonState = 0; | int buttonState = 0; | ||
第71行: | 第76行: | ||
digitalWrite(ledPin, led); | digitalWrite(ledPin, led); | ||
} | } | ||
+ | |||
+ | </source> | ||
此实验需要注意按键的防抖,可以调整延时时间,或者在按键信号变化两端加104电容,电压信号不会突变,稳定点。 | 此实验需要注意按键的防抖,可以调整延时时间,或者在按键信号变化两端加104电容,电压信号不会突变,稳定点。 | ||
− | |||
按键防抖详细参考:http://www.geek-workshop.com/thread-74-1-1.html | 按键防抖详细参考:http://www.geek-workshop.com/thread-74-1-1.html | ||
===digitalRead()用法=== | ===digitalRead()用法=== | ||
第80行: | 第86行: | ||
*程序1:led显示按键按键引脚值,按键值高则点亮,低则熄灭。 | *程序1:led显示按键按键引脚值,按键值高则点亮,低则熄灭。 | ||
*程序2:每按一次按键,led电压翻转一次,注意防抖。 | *程序2:每按一次按键,led电压翻转一次,注意防抖。 | ||
+ | |||
+ | [[File:lesson3Result.jpg|600px|center|thumb]] | ||
+ | |||
==视频== | ==视频== | ||
|} | |} |
2014年10月29日 (三) 03:24的最新版本
Language | English |
---|
目的前两个实验介绍了如何用软件直接控制led灯的亮灭。如果我们增加一个按键,通过按键来控制led的亮灭,就可以实现硬件与软件的结合。前面实际上是Microduino的I/O口作为输出去控制led,增加按键如何去监测按键输入的信号呢?今天以按键为例讲讲Microduino如何作为输入使用。 设备
按键
若用此封装按键制作PCB时,若不好布线,可利用它有两对引脚始终导通作为导线布线。
原理图采用外部下拉,没按下时为低“0”,按下为高。
程序
const int buttonPin = 2; // 定义按键输入引脚
const int ledPin = 11; //定义led引脚
int buttonState = 0; //初始化按键值
void setup() {
pinMode(ledPin, OUTPUT); //设置led引脚为输出状态
pinMode(buttonPin, INPUT); //设置按键引脚为输入状态
}
void loop(){
buttonState = digitalRead(buttonPin);//从指定的数字引脚读取数值,是高还是低。
if (buttonState == HIGH) {
digitalWrite(ledPin, HIGH); //如果按键信号是高,则led点亮(led接法阳极接控制脚,阴极接GND)
}
else {
digitalWrite(ledPin, LOW); //否则熄灭
}
}
const int buttonPin = 2; // 定义按键输入引脚
const int ledPin = 11;
int buttonState = 0;
boolean led; //定义led为布尔型(true或false)
void setup() {
pinMode(ledPin, OUTPUT);
// pinMode(buttonPin, INPUT); //设置按键引脚为输入状态
pinMode(buttonPin, INPUT_PULLUP);//设置按键引脚为内部上拉输入状态
}
void loop(){
buttonState = digitalRead(buttonPin);
if (buttonState ==HIGH)
//外部下拉,因为这样起始状态为低,只有按下才是高,按下才翻转,否则不按时则会闪烁
{
delay(200); //短暂延时,防抖
// delay(1000); //长按
// if (buttonState == LOW) //判断是否还是低
led=!led; //led状态翻转
}
digitalWrite(ledPin, led);
}
此实验需要注意按键的防抖,可以调整延时时间,或者在按键信号变化两端加104电容,电压信号不会突变,稳定点。 按键防抖详细参考:http://www.geek-workshop.com/thread-74-1-1.html digitalRead()用法读一个引脚的值,返回值为HIGH或低。 结果
视频 |