“第三课--按钮控制的LED开关实验/zh”的版本间的差异
(→调试) |
|||
(未显示1个用户的3个中间版本) | |||
第1行: | 第1行: | ||
+ | {{Language|Maple Lesson 03 - Button switch control LED}} | ||
{| style="width: 800px;" | {| style="width: 800px;" | ||
|- | |- | ||
第45行: | 第46行: | ||
首先定义了Microduino-CoreSTM32板子上的led灯的引脚为输出状态,按钮为输入状态。 | 首先定义了Microduino-CoreSTM32板子上的led灯的引脚为输出状态,按钮为输入状态。 | ||
− | '''isButtonPressed():'''如果当前按下的按钮,等到按钮不再被按下,则返回true。 否则,返回false。按键引脚必须有它的模式设置为输入。 | + | *'''isButtonPressed():''' |
+ | **如果当前按下的按钮,等到按钮不再被按下,则返回true。 否则,返回false。按键引脚必须有它的模式设置为输入。 | ||
按下按钮再松开按钮,返回true,则执行toggleLED()函数,切换引脚值。如果引脚为高电平,将其设置为低电平。如果是低,将它设置为高。这样就可实现每按一次按钮,led灯指示翻转一次。 | 按下按钮再松开按钮,返回true,则执行toggleLED()函数,切换引脚值。如果引脚为高电平,将其设置为低电平。如果是低,将它设置为高。这样就可实现每按一次按钮,led灯指示翻转一次。 | ||
第72行: | 第74行: | ||
</source> | </source> | ||
语法说明: | 语法说明: | ||
− | '''digitalRead(Pin):'''从一个数字引脚上读取值。该引脚必须有它的模式设置为输入。 | + | *'''digitalRead(Pin):''' |
− | + | **从一个数字引脚上读取值。该引脚必须有它的模式设置为输入。 | |
− | 从程序中我们可以看到如果读取到的值为高则点亮led灯,反之则熄灭。 | + | **从程序中我们可以看到如果读取到的值为高则点亮led灯,反之则熄灭。 |
我们换一种方法,将语句“pinMode(buttonPin, INPUT);”改为“pinMode(buttonPin, INPUT_PULLDOWN);” | 我们换一种方法,将语句“pinMode(buttonPin, INPUT);”改为“pinMode(buttonPin, INPUT_PULLDOWN);” | ||
− | 说明:'''INPUT_PULLUP'''(内部上拉)或'''INPUT_PULLDOWN''' | + | *说明:'''INPUT_PULLUP'''(内部上拉)或'''INPUT_PULLDOWN'''(内部下拉)。芯片内的通过电阻将该引脚接到3.3V或者GND,这样,按键就可以不用外界电阻,比较方便,简单。能达到同样的效果。 |
==视频== | ==视频== | ||
|} | |} |
2014年11月5日 (三) 07:28的最新版本
Language | English |
---|
目的前两个实验介绍了如何用软件直接控制led灯的亮灭。如果我们增加一个按键,通过按键来控制led的亮灭,就能够达到硬件与软件的结合。前面实际上是Microduino-CoreSTM32的I/O口作为输出去控制led,增加按键如何去监测按键输入的信号呢?今天以按键为例讲讲Microduino-CoreSTM32如何作为输入使用。 设备Microduino-CoreSTM32是采用 STM32F103CBT6芯片的ARM开发板,采用独特的Upin7接口,大小与一枚一元硬币差不多大,完全兼容Microduino其他扩展模块。
原理图我们将采用下拉电阻,也就是监测按键输入的I/O口接个电阻到GND,再通过按键接到VCC,这样没按下时为低“0”,按下为高“1”。这样就可以通过判断该引脚的高低电平来控制led灯的亮与灭。 同时如果上拉的话就接个电阻到VCC。举一反三,大家自己分析分析。 调试
单击菜单File -> Examples ->Digital ->Button: void setup() {
// Initialize the built-in LED pin as an output:
pinMode(BOARD_LED_PIN, OUTPUT);
// Initialize the built-in button (labeled BUT) as an input:
pinMode(BOARD_BUTTON_PIN, INPUT);
}
void loop() {
// Check if the button is pressed.
if (isButtonPressed()) {
// If so, turn the LED from on to off, or from off to on:
toggleLED();
}
}
程序说明: 首先定义了Microduino-CoreSTM32板子上的led灯的引脚为输出状态,按钮为输入状态。
按下按钮再松开按钮,返回true,则执行toggleLED()函数,切换引脚值。如果引脚为高电平,将其设置为低电平。如果是低,将它设置为高。这样就可实现每按一次按钮,led灯指示翻转一次。 明白程序后,点击Upload,就可把程序上传到板卡上。结果每按下一次按键led灯显示翻转一次。
按原理图接线,将程序拷贝到编译器,直接下载。 int buttonPin = 2; // 定义按键输入引脚
int ledPin = 13; //定义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); //否则熄灭
}
}
语法说明:
我们换一种方法,将语句“pinMode(buttonPin, INPUT);”改为“pinMode(buttonPin, INPUT_PULLDOWN);”
视频 |