Arduino是源于意大利的一套开源硬件开发平台,Arduino Uno是其推出的最为基础的开发板。配合外围器件(传感器,控制开关,LED屏等),任何稍有电子电路基础的人都可以基于这个平台快速搭建出具有各种有趣功能的实用电子电路。首先介绍一下Arduino Uno开发板的基本组成。
图1 ArduinoUno开发板
1. 微处理器:ATmega328,8位微处理器,片内包含32KB Flash(0.5KB由BootLoader使用),2KB SRAM,1KB EEPROM,运行时钟频率为16MHz。
2. USB接口:与电脑连接,用于从电脑中下载程序,同时给Uno单板供电。
3. 外接电源:当Uno脱离电脑独立运行时,用来给装置供电,一般使用9V电池供电即可。
4. 电源管脚,地:可输出5V,3.3V;也可以通过Vin给整个装置供电。
5. 模拟输入:6个模拟输入,提供10-bit的解析度(0-1023)。
6. 数字输入/输出:14个数字输入/输出管脚,可以由程序自己定义为输入或者输出;其中0,1两个管脚是串口复用管脚;3,5,6,9,10,11六个管脚可提供8位(0-255)的PWM输出;13管脚与板上LED相连,当输出高电平时,LED点亮。
下面简要介绍一下Arduino的开发环境。从Arduino - Home网站上可以免费下载到其开发环境,有Windows/Mac/Linux版本,大家可根据自己的需要选择。工具安装运行后界面见图2。由于是单板和PC相连是通过串口转USB,所以PC上通常需要安装一下驱动,驱动就在Arduino软件目录下的driver目录,例如:f:\arduino-1.6.4\drivers\。安装驱动后,可以看到当前的端口,如图3所示(不同PC端口号一般都不相同,例如此处是COM3)。
图2. Arduino 开发工具界面
图3. 当驱动安装正确,连接PC后,会显示对应的端口
编辑窗口中有两个函数,一个是setup,这个函数将在程序运行一开始就调用,通常是进行一些管脚的初值设置;而loop就是程序运行的主函数,系统会不断循环调用loop,我们将软件逻辑写在loop函数中就可以了。
下面再介绍一下软件常用的函数。
pinMode(pin, mode) - 定义数字管脚的输入/输出,pin可以取0-13,对应14个数字管脚;mode为INPUT/OUTPUT之一,表明该管脚是用于输入还是输出
digitalWrite(pin, val) - 设置数字管脚输出电平,val取值为HIGH/LOW之一
digitalRead(pin)– 读取数字输入管脚的电平,函数返回值为HIGH/LOW之一,通常根据返回值为高或者低从而进行不同的处理
analogRead(pin) – 读取模拟输入管脚的值,pin取值为A0 – A5;返回0-1023之间的值
analogWrite(pin, val) – 设置数字管脚中的PWM管脚的输出值,val取值为0-255
Serial.begin(speed) – 初始化串口并设置串口速率,如Serial.begin(9600); 即将串口速率设置为9600bps
Serial.print()/Serial.println() – 串口输出函数
delay(val) – 延时函数,单位为ms,如delay(1000)为延时1s
Arduino的编程与C语言很类似,例如行尾以分号结尾,int定义整形变量,if做判断,for做循环等等。例如,下面这段是一个最基本的程序,完成的功能是控制led灯闪烁。
int ledPin = 13; //使用管脚13来控制led(实际是用板子上自带的led)
void setup() {
// put your setup code here, to run once:
pinMode(ledPin, OUTPUT); //设定数字管脚13为输出管脚
}
void loop() {
// put your main code here, to runrepeatedly:
digitalWrite(ledPin, HIGH); //输出高电平,led灯亮
delay(1000); //延时1s
digitalWrite(ledPin, LOW); //输出低电平,led灯灭
delay(1000); //延时1s
}
编辑完程序后,按图2中菜单下面的“√”按钮即可启动编译,若有错误会在下面的窗口给出提示;如果正确就可以继续按后面的“→”按钮将程序下载到Arduino单板并开始运行。例如上面的程序将控制板上自带的led以2s的频率亮灭变化。
另外,为便于对编程不了解的人使用,还可以安装Ardublock工具,该工具提供控件拖放来实现程序逻辑,后台自动生成代码,不需要手工敲代码,例如上面的代码段用Ardublock可以表示为图3的逻辑。不过个人还是觉得,对于稍有编程基础的人来说,还是直接写代码更加方便一些。
图3 用Ardublock来完成控制led灯闪烁的功能
ArduinoUno是最基本的开发板,对于更加复杂的应用,Arduino还有多种硬件可供选择。Arduino开发套件配合面包板及各种元器件,提供了一种快速开发硬件原型的平台和手段,是当前学习电子制作,进行硬件原型开发的优秀平台。淘宝上有众多Arduino开发套件出售,可根据自己的需求酌情选购。
【参考资料】
1. Arduino - Home,提供单板信息,Arduino软件,编程文档等下载;
2. http://blog.ardublock.com/,Ardublock官方网站;