Arduino机器人开发指南(一)基础篇

首先是硬件部分的知识,关于Arduino开发板的相关资料及选择,开发者论坛上有很多,这里主要阐述一下整个软件编码部分的开发流程及技术难点。板子选择的是MEGA2560,如图:

黑白两根线分别为电源和数据线,黄灯为板载灯L,绿灯为Power。其他的串口后面用到的时候再说吧。

首先是搭建Arduino的开发环境。Arduino是基于C语言开发的,在VS及Eclipse上均有插件,不过设置略显麻烦。简单起见,选择官方自己的IDE吧(下载地址)

如图,官方IDE是绿色软件包,无须安装即可使用,注意左上角的dirvers文件夹,一会USB连接开发板后需要安装的驱动就在这里。

将板子通电后连接PC端,提示安装驱动,搜索文件夹设为刚才我们看到的dirvers文件夹。安装完毕之后,开发环境的搭建就此结束,接下来我们就进入IDE开始编码。

进入IDE后首先设置一下开发版型号,点击Tools -> Board 并选择自己的开发板型号,这里我用的是Mega2560

然后是设置串口号 Tools -> Serial Port 串口号可以在设备管理器中看到。

完毕后开始编码,首先了解下Arduino的语言特性及程序结构,以下是官方描述:

在Arduino中, 标准的程序入口main函数在内部被定义, 用户只需要关心以下两个函数:
void setup()
void loop()
setup() 函数用于初始化, loop() 函数用于执行. 初始化函数一般放在程序开头, 用于设置一些引脚的输出/输入模式, 初始化串口通讯等类似工作. loop() 函数中 的代码将被循环执行, 例如: 读入引脚状态, 设置引脚输出状态等.

现在编码如下:

1
2
3
4
5
6
7
8
9
10
11
int ledPin = 13;//板载黄色LED灯的引脚编号

//初始化
void setup() {
    pinMode(ledPin, OUTPUT);//设置引脚状态为OUTOUT模式
}

//主循环
void loop() {
    digitalWrite(ledPin, HIGH); //写入引脚电平
}

这里解释下,pinMode及digitalWrite均为API函数,分别为设置引脚状态及对引脚进行高低电平的写入。
OUTPUT是写出状态,与之对应的是INPUT是读取,用于获得某一个引脚的电平状态,需要用到digitalRead函数,并返回一个int型1或0。
这里digitalWrite(13,HIGH)意为将13号引脚设为高电平状态。点击编译并Update到Mega里,如图

OK,首个test demo就已经完成了,Update完毕之后,Mega主板自动开始运行代码,LED灯持续高电平状态,即保持常亮。

接下来我们可以试试digitalRead()这个函数,代码修改如下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int ledPin = 13;//板载黄色LED灯的引脚编号
int keyPin = 7;//声明一个要使用的引脚

//初始化
void setup() {
    pinMode(ledPin, OUTPUT);//设置引脚状态为OUTOUT模式
    pinMode(keyPin, INPUT);
}

//主循环
void loop() {

    if (digitalRead(keyPin) == 1 )
   {
        digitalWrite(ledPin, HIGH);
   }
   else
   {
        digitalWrite(ledPin, LOW);
   }

}

此时我们需要用到PMW区域的7号引脚。程序会监听7号引脚的电平状态,当其接地(GND)时为低电平返回值为0,反之则为1。烧入程序,可看到,当用一根线将PMW7和GND相连时,L灯熄灭。证明运行正常

以上仅为Arduion的基础应用。关于Arduino的其他语法,大家可以参考API,这里提供一份下载(点击下载API

后续内容会继续更新。谢谢关注。

BeiTown
2013.03.23

本文链接:Arduino机器人开发指南(一)基础篇

转载声明:BeiTown原创,转载请注明来源:BeiTown's Coder 编码之源,谢谢


Tags: , , ,

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>