基础教程1:初识 Arduino 与 点亮板载 LED

基础教程1:初识 Arduino 与 点亮板载 LED

Arduino现在成了不少极客和创业者的首选,因为它不仅开发简单、价格便宜、模块丰富,能够作为人机互动、物联网的节点,甚至成为各种人工智慧的中心。不过,千万不要把Arduino想的很复杂,其实,它原本只是给艺术家准备的玩具!

Arduino开发哲学是「用最短的时间,最大化你的创意」。你不需要懂高深的程式语言和电子电路,只要把想法快速表达出来。其实,很多消费电子产品的原型都是用Arduino开发的,然后交给专业的工程师、迁移至更高级的平台。

总之,Arduino是一款非常典型的「低门槛,宽边界,高天花板」的入门玩具。

这个教程一共55课,涵盖了Arduino基础编程、扩展、进阶实验三大部分。前面两部分,足够你玩转Aruidno的方方面面,最后,我们将Arduino放到充满挑战的现实中,完成一些很酷的玩意。

要撬动地球,先要一个支点:一块Arduino开发板。理解支点是一切的开始:

Arduino是一个开源的、基于I/O埠的控制平台和开发环境,利用过程语言,Arduino可以读取大量的开关和传感器信号,并且控制各式各样的电灯、电机或其他物理设备,同时连接你的PC或者手机。

第一步,购买一块Arduino开发板,初学者建议选择ArduinoUno或者GenuinoUno,前者为官方原版,价格贵;后者是姊妹品牌,价格便宜,但功能设计完全一模一样。

Uno上很多电子元器件,不用细究,只需要理解它有四个模块,控制晶片(Uno为ATMega328)、USB接口、I/O端子和供电系统。控制晶片是核心,以后我会介绍,怎样只用一块控制晶片,制作出最小的Arduino。

选择Uno的好处是I/O兼容性好且内置USB接口。但开发完成后,组装时,可以选用mini或者micro减少体积,复杂的项目可以用Mage2560提供更大存储空间和更多的I/O埠。

当然,兼容的Arduino开发板一直在推新,针对物联网,现在已经有集成了Wifi、蓝牙、NFC等功能的板,使得开发十分便捷。

第二步下载ArduinoIDE(IDE就是Arduino的开发界面),安装时会自动装上各种必须的驱动程序。

Arduino官方下载地址:包括Windows、Mac、Liunx版本。如果系统是Windows请选择Installer,Windows10以上安装程序会自动把驱动装上很方便:

如果系统是Windows7或XP,安装时搜索驱动,然后指定IDE目录下的drivers\FTDIUSBDrivers自动搜索即可。如果是Ubuntu,系统将自动识别驱动,使用Root权限启动IDE即可。

安装好之后选择启动,出现下面的界面:

一般来说,此时把Arduino通过USB连结到电脑上,就可以上传代码了,但有时还要在「工具」菜单中选择正确的版型(默认微Uno)和埠。

尝试第一个程序吧!点击IDE「文件」菜单,在「示例」选择「01.basics」,最后选中「Blink」,此时应用会新开一个窗口:

点击左上角的「上传」按钮,「Blink」的代码传送到Arduino开发板上。过程中RX和TX灯会不停闪烁,等上传结束,第13I/O埠的LED开始闪烁,这说明开发板已经可以与PC连结并正常工作了。

Blink是最简单的Arduino程序,说明一下:

//thesetupfunctionrunsoncewhenyoupressresetorpowertheboard

voidsetup(){

//initializedigitalpinLED_BUILTINasanoutput.

pinMode(LED_BUILTIN,OUTPUT);

}

//theloopfunctionrunsoverandoveragainforever

voidloop(){

digitalWrite(LED_BUILTIN,HIGH);//turntheLEDon(HIGHisthevoltagelevel)

delay(1000);//waitforasecond

digitalWrite(LED_BUILTIN,LOW);//turntheLEDoffbymakingthevoltageLOW

delay(1000);//waitforasecond

}

voidsetup()的代码在导通电源时会执行一次,用于初始化设置。这里将I/O埠LED_BUILTIN设置为OUTPUT,这意味着电平会根据程序变化,ArduinoUno所有埠只能输出高低电平两种信号,但后面我们会介绍用PWM来控制输出功率。

另外,LED_BUILTIN埠实际就是DIGITAL13,内置一颗LED,改为13效果也是一样的。

接着voidloop()里面的代码会不断循环执行,直到电源关闭。起始,LED_BUILTIN埠输出高电平,LED亮,延时1000毫秒;接着,输出低电平,LED灭,延时1000毫秒,这个过程反覆进行。另外,每块Arduino开发板都有一个Reset键,按下后程序从voidsetup()重新执行。

值得一提是,USB接口可能会出现供电不足,ArduinoUno有专用供电口,一般用路由器的电源即可,但要确保电压在11V以内(Arduino多採用AMS1117线性稳压晶片,11V是其最大耐压值)。