本帖最后由 弘毅 于 2016-10-27 10:38 编辑
单LED闪烁,英文俗称BLINK。这个就像在PC机上写程序入门是“Hello world”一样属于嵌入式学习的入门第一个,咱也不免落俗第一个例子就来先介绍一下怎么样让MANGO控制板上的板载L灯闪烁。(L灯连接在D13端口)
这是我们第一次实战,怎样把代码下载进入控制板呢?
首先,我们需要在IDE中,选择正在使用的控制板,比如我们现在所使用的MANGO,那么就要在控制板选项中选择Ocrobot Mango。
然后选择端口号,一般而言在windows操作系统中,所使用的控制板端口号是列表中最大的那个。
如果无法确定自己的端口号,可以进入设备管理器的端口中进行查看。
下面就是我们的第一例代码,我们把它们复制进入IDE,选择好控制板和端口号以后,点击编译、下载。
- /*
- 程序说明:
- 使一个LED亮一秒,灭一秒,如此往复。
- */
-
- void setup() {
- // 初始化数字引脚,使其为输出状态。
- // 在控制板上,数字13号引脚有一颗LED。
- pinMode(13, OUTPUT);
- }
-
- void loop() {
- digitalWrite(13, HIGH); // 使Led亮
- delay(1000); // 持续1秒钟
- digitalWrite(13, LOW); // 使Led灭
- delay(1000); // 持续1秒钟。
- }
复制代码
我们看看这段代码的效果
这里我们介绍一下这段代码中用到的几个函数
setup()
OCROBOT IDE编译器是GCC,所用编程语言基础是C语言。所有的OCROBOT程序都会有一个setup()函数,他是OCROBOT程序的起点,这一点与标准的C语言不太一样,C是以一个名为main()的函数作为程序起点的。setup()函数在整个程序中只会运行一次。
loop()
在setup()函数完成之后,OCROBOT程序会自动调用loop()函数。顾名思义loop是循环的意思,在loop()函数中的代码会从头执行到尾不停循环。
pinMode()
pinMode()将指定的引脚配置成输出或输入。
语法
pinMode(pin, mode)。
参数
pin:要设置模式的引脚,比如D0口我们就写0,D9口我们就写9,如果我们数字口不够用想用模拟口怎么办呢,我们这里写A0,A1这些也都是可以用的。
mode:INPUT或OUTPUT。INPUT和OUTPUT两种模式必须选择一种,而且只能大写。INPUT指的是输入模式,这个我们后面会介绍到,OUTPUT是输出模式,这次代码点亮LED我们就是使用的OUTPUT。
digitalWrite()
给一个数字引脚写入HIGH或者LOW。
如果一个引脚已经使用pinMode()配置为OUTPUT模式,其电压将被设置为相应的值,HIGH为5V(3.3V控制板上为3.3V),LOW为0V。
语法
digitalWrite(pin, value)。
参数
pin: 引脚编号(如1,5,10,A0,A3)
value: HIGH or LOW
delay()
使程序暂定设定的时间(单位毫秒)。(一秒等于1000毫秒)
语法
delay(ms)
参数
ms:暂停的毫秒数(unsigned long)
只用这么几个简单的函数就能把一个LED点亮,是不是顿时觉得有了信心。
下面我们把一颗LED通过面包板接到D12引脚上,所用的是一颗普亮LED,需要接一个220Ω的限流电阻上去,否则容易烧掉LED。
介绍一下直插LED的正负极怎样区分。
如图,一颗直插LED有一长一短两个引脚,长的是正极,短的是负极。
如下图:
因为要使用D12管脚驱动,所以程序我们需要修改一下。
- void setup() {
- pinMode(12, OUTPUT);
- }
-
- void loop() {
- digitalWrite(12, HIGH); // 使Led亮
- delay(500); // 持续1秒钟
- digitalWrite(12, LOW); // 使Led灭
- delay(500); // 持续1秒钟。
- }
复制代码
效果如下
课后练习:
大家已经学会在D13端口,D12端口驱动LED了,那么尝试一下在D5端口和A3点亮一下LED,试着改变一下delay的时间,看看人眼看到闪烁的极限是多少(delay低到多少你就看不到闪烁)? |