摘要:本文主要介绍什么Arduino, Arduino的开发环境, 以及Arduino相关的资源网站等
Arduino是一款便捷灵活、方便上手的开源电子原型平台,包含硬件(各种型号的Arduino板)和软件(Arduino IDE)。
Arduino简单的说就是一款单片机, 与C51单片机不同的是,Arduino平台是基于AVR指令集的单片机. 对Arduino的编程是利用 Arduino编程语言 (基于 Wiring)和Arduino开发环境(基于 Processing)来实现的.
Arduino是一个基于开放原始码的软硬件平台, 构建于开放原始码simple I/O介面版, 并且具有使用类似Java、C语言的Processing/Wiring开发环境.
这个是网络上找到的一张表格
名称 | 属性 | 名称 | 属性 |
---|---|---|---|
外文名称 | Arduino | 烧录方式 | UART串口 |
驱动电压 | 直流5V | 编程语言 | C/C++语言 |
编程软件 | Arduino IDE | 创始人 | Massimo Banzi |
主控单片机 | Atmega328 | 开放性 | 开放源码 |
使用Arduino开发有以下几点好处:
- 开源 包括开发环境和电路图设计等
- 低成本 AVR系列控制器, USB供电/9VDC, 某宝购买Arduino UNO等板子成本价在几十元, 官网正品价在几百元左右
- 多平台开发 支持Windows, Linux, Mac OS X等
- 代码部署简单 ISP在线烧录Boatloader, 之后可以通过串口或者USB to RS232线更新固件
- 开发难度低 简单编程即可连接各式各样的电子元件, 例如: 红外线,超声波,热敏电阻,光敏电阻,伺服马达等
- 大量在线资源 例如极客工坊, 电子火花, Arduino中文社区等
- 扩展方便 Arduino有很多扩展板, 例如: GSM Shield, Ethernet Shield, Wi-Fi Shield, Motor Shield, USB Host Shield 等
界面如下
Arduino的源文件格式是.ino
, Arduino创建文件时, 自动生成 setup()
和 loop()
两个函数, setup()
函数做一些初始化的工作, 在系统上电或复位后, 此函数只会执行一次. loop()
函数会在 setup()
之后一直循环运行。
void setup() {
// put your setup code here, to run once:
// 初始化函数,Arduino开机之后只执行一次
}
void loop() {
// put your main code here, to run repeatedly:
// 主要的工作放在这里, Arduino会一直执行这部分
}
Arduino的代码编写主要就是在这两个函数中, 了解了这两个基础的函数之后, 我们不禁对底层产生兴趣, 底层到底是怎么工作的呢? 我们查找一下Arduino的源码main.cpp
在Mac OS X系统下, 该文件的路路径是
/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino
在Windows环境下,该文件路径是
C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino\main.cpp
源码如下:
#include
// Declared weak in Arduino.h to allow user redefinitions.
int atexit(void (* /*func*/ )()) { return 0; }
// Weak empty variant initialization function.
// May be redefined by variant files.
void initVariant() __attribute__((weak));
void initVariant() { }
void setupUSB() __attribute__((weak));
void setupUSB() { }
int main(void)
{
init();
initVariant();
#if defined(USBCON)
USBDevice.attach();
#endif
setup();
for (;;) {
loop();
if (serialEventRun) serialEventRun();
}
return 0;
}
由于涉及底层驱动, 我们暂不深入研究, 这里可以得出结论是: Arduino在启动之后, 执行init()
, initVariant()
和 USBDevice.attach()
等三个函数初始化硬件环境之后, 执行了一次setup()
函数, 之后死循环, 执行loop()
函数和serialEventRun()
, 当串口有数据过来的时候, Arduino会调用 serialEvent()
. 具体的说明我们在研究串口的时候再补充.
Arduino语法学习请移步 Arduino语言参考