弘毅 发表于 2014-4-17 16:49:47

OCROBOT入门教程002--单LED闪烁

本帖最后由 弘毅 于 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秒钟。
}

我们看看这段代码的效果

http://player.youku.com/player.php/sid/XNzEwMDkyNTU2/v.swf

这里我们介绍一下这段代码中用到的几个函数

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秒钟。
}

效果如下

http://player.youku.com/player.php/sid/XNzEwMTAxOTAw/v.swf

课后练习:
大家已经学会在D13端口,D12端口驱动LED了,那么尝试一下在D5端口和A3点亮一下LED,试着改变一下delay的时间,看看人眼看到闪烁的极限是多少(delay低到多少你就看不到闪烁)?

mlyl 发表于 2017-2-7 12:52:09

沙发!:):):):):)
页: [1]
查看完整版本: OCROBOT入门教程002--单LED闪烁