第三课--按钮控制的LED开关实验/zh
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);”
视频 |