“第三课--按钮控制的LED开关实验/zh”的版本间的差异
(Created page with "{| style="width: 800px;" |- | ==目的== 前两个实验介绍了如何用软件直接控制led灯的亮灭。如果我们增加一个按键,通过按键来控制led的亮...") |
(→调试) |
||
第44行: | 第44行: | ||
程序说明: | 程序说明: | ||
首先定义了Microduino-CoreSTM32板子上的led灯的引脚为输出状态,按钮为输入状态。 | 首先定义了Microduino-CoreSTM32板子上的led灯的引脚为输出状态,按钮为输入状态。 | ||
− | isButtonPressed() | + | |
+ | '''isButtonPressed():'''如果当前按下的按钮,等到按钮不再被按下,则返回true。 否则,返回false。按键引脚必须有它的模式设置为输入。 | ||
按下按钮再松开按钮,返回true,则执行toggleLED()函数,切换引脚值。如果引脚为高电平,将其设置为低电平。如果是低,将它设置为高。这样就可实现每按一次按钮,led灯指示翻转一次。 | 按下按钮再松开按钮,返回true,则执行toggleLED()函数,切换引脚值。如果引脚为高电平,将其设置为低电平。如果是低,将它设置为高。这样就可实现每按一次按钮,led灯指示翻转一次。 | ||
+ | |||
明白程序后,点击Upload,就可把程序上传到板卡上。结果每按下一次按键led灯显示翻转一次。 | 明白程序后,点击Upload,就可把程序上传到板卡上。结果每按下一次按键led灯显示翻转一次。 | ||
第69行: | 第71行: | ||
</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'''(内部下拉)。是芯片内的通过电阻将该引脚接到3.3V或者GND,这样,按键就可以不用外界电阻,比较方便,简单。能达到同样的效果。 | |
+ | |||
==视频== | ==视频== | ||
|} | |} |
2014年7月18日 (五) 04:40的版本
目的前两个实验介绍了如何用软件直接控制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灯的引脚为输出状态,按钮为输入状态。 isButtonPressed():如果当前按下的按钮,等到按钮不再被按下,则返回true。 否则,返回false。按键引脚必须有它的模式设置为输入。 按下按钮再松开按钮,返回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); //否则熄灭
}
}
语法说明: digitalRead(Pin):从一个数字引脚上读取值。该引脚必须有它的模式设置为输入。 从程序中我们可以看到如果读取到的值为高则点亮led灯,反之则熄灭。 我们换一种方法,将语句“pinMode(buttonPin, INPUT);”改为“pinMode(buttonPin, INPUT_PULLDOWN);” 说明:INPUT_PULLUP(内部上拉)或INPUT_PULLDOWN(内部下拉)。是芯片内的通过电阻将该引脚接到3.3V或者GND,这样,按键就可以不用外界电阻,比较方便,简单。能达到同样的效果。 视频 |