查看“第三课--按钮控制的LED开关实验/zh”的源代码
←
第三课--按钮控制的LED开关实验/zh
跳转至:
导航
、
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
{| style="width: 800px;" |- | ==目的== 前两个实验介绍了如何用软件直接控制led灯的亮灭。如果我们增加一个按键,通过按键来控制led的亮灭,就能够达到硬件与软件的结合。前面实际上是Microduino-CoreSTM32的I/O口作为输出去控制led,增加按键如何去监测按键输入的信号呢?今天以按键为例讲讲Microduino-CoreSTM32如何作为输入使用。 ==设备== *[[ Microduino-CoreSTM32]] Microduino-CoreSTM32是采用 STM32F103CBT6芯片的ARM开发板,采用独特的Upin7接口,大小与一枚一元硬币差不多大,完全兼容Microduino其他扩展模块。 *其他硬件设备 **面包板跳线 一盒 **面包板 一块 **LED发光二极管 一个 **220欧姆电阻 一个 **按键 一个 **USB数据连接线 一根 [[File:stm32-lesson3All.jpg|600px|center|thumb]] ==原理图== [[File:stm32-button schematic.jpg|600px|center|thumb]] 我们将采用下拉电阻,也就是监测按键输入的I/O口接个电阻到GND,再通过按键接到VCC,这样没按下时为低“0”,按下为高“1”。这样就可以通过判断该引脚的高低电平来控制led灯的亮与灭。 同时如果上拉的话就接个电阻到VCC。举一反三,大家自己分析分析。 ==调试 == *切换指示灯 单击菜单File -> Examples ->Digital ->Button: <source lang="cpp"> 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(); } } </source> 程序说明: 首先定义了Microduino-CoreSTM32板子上的led灯的引脚为输出状态,按钮为输入状态。 '''isButtonPressed():''' 如果当前按下的按钮,等到按钮不再被按下,则返回true。 否则,返回false。按键引脚必须有它的模式设置为输入。 按下按钮再松开按钮,返回true,则执行toggleLED()函数,切换引脚值。如果引脚为高电平,将其设置为低电平。如果是低,将它设置为高。这样就可实现每按一次按钮,led灯指示翻转一次。 明白程序后,点击Upload,就可把程序上传到板卡上。结果每按下一次按键led灯显示翻转一次。 *led显示按键值 按原理图接线,将程序拷贝到编译器,直接下载。 <source lang="cpp"> 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); //否则熄灭 } } </source> 语法说明: '''digitalRead(Pin):''' 从一个数字引脚上读取值。该引脚必须有它的模式设置为输入。 从程序中我们可以看到如果读取到的值为高则点亮led灯,反之则熄灭。 我们换一种方法,将语句“pinMode(buttonPin, INPUT);”改为“pinMode(buttonPin, INPUT_PULLDOWN);” 说明:'''INPUT_PULLUP'''(内部上拉)或'''INPUT_PULLDOWN'''(内部下拉)。芯片内的通过电阻将该引脚接到3.3V或者GND,这样,按键就可以不用外界电阻,比较方便,简单。能达到同样的效果。 ==视频== |}
该页面使用的模板:
模板:Language
(
查看源代码
)
模板:Nmbox
(
查看源代码
)
返回至
第三课--按钮控制的LED开关实验/zh
。
导航菜单
个人工具
创建账户
登录
名字空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
Welcome
首页
创客大赛
大赛详情
3D打印
安装月球车
图形化编程
操控月球车
升级月球车
编程工具下载
软件下载
Arduino
Processing
Mixly
Scratch
模块套件
Microduino 102
mCookie 102
mCookie 202
mCookie 302
IBC
其他
应用套件
四轴飞行器
平衡车
小车CUBE
音乐播放器
刷卡音乐播放器
wifi气象站
彩虹音乐触摸灯
分贝检测仪
迎门汇报
LED点阵时钟
LED点阵屏幕
硬件
mCookie
Sensor
Microduino
MicroWrt
MicroNux
MicroRobot-Core
MicroRobot-CoreESP
ideaBoard
ideaBox
MicroMV
MicroAI
帮助
常见问题
帮助
工具
链入页面
相关更改
特殊页面
页面信息