极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 16920|回复: 1

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

[复制链接]
发表于 2014-4-17 16:49:47 | 显示全部楼层 |阅读模式
本帖最后由 弘毅 于 2016-10-27 10:38 编辑

单LED闪烁,英文俗称BLINK。这个就像在PC机上写程序入门是“Hello world”一样属于嵌入式学习的入门第一个,咱也不免落俗第一个例子就来先介绍一下怎么样让MANGO控制板上的板载L灯闪烁。(L灯连接在D13端口)



这是我们第一次实战,怎样把代码下载进入控制板呢?

首先,我们需要在IDE中,选择正在使用的控制板,比如我们现在所使用的MANGO,那么就要在控制板选项中选择Ocrobot Mango。




然后选择端口号,一般而言在windows操作系统中,所使用的控制板端口号是列表中最大的那个。



如果无法确定自己的端口号,可以进入设备管理器的端口中进行查看。



下面就是我们的第一例代码,我们把它们复制进入IDE,选择好控制板和端口号以后,点击编译、下载。

  1. /*
  2. 程序说明:
  3. 使一个LED亮一秒,灭一秒,如此往复。
  4. */

  5. void setup() {               
  6.   // 初始化数字引脚,使其为输出状态。
  7.   // 在控制板上,数字13号引脚有一颗LED。
  8.   pinMode(13, OUTPUT);     
  9. }

  10. void loop() {
  11.   digitalWrite(13, HIGH);   // 使Led亮
  12.   delay(1000);              // 持续1秒钟
  13.   digitalWrite(13, LOW);    // 使Led灭
  14.   delay(1000);              // 持续1秒钟。
  15. }
复制代码


我们看看这段代码的效果



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


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管脚驱动,所以程序我们需要修改一下。

  1. void setup() {               
  2.   pinMode(12, OUTPUT);     
  3. }

  4. void loop() {
  5.   digitalWrite(12, HIGH);   // 使Led亮
  6.   delay(500);              // 持续1秒钟
  7.   digitalWrite(12, LOW);    // 使Led灭
  8.   delay(500);              // 持续1秒钟。
  9. }
复制代码


效果如下



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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-20 13:19 , Processed in 0.071123 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表