Arduino入门(一)

摘要:本文主要介绍什么Arduino, Arduino的开发环境, 以及Arduino相关的资源网站等


什么是Arduino?

Arduino是一款便捷灵活、方便上手的开源电子原型平台,包含硬件(各种型号的Arduino板)和软件(Arduino IDE)。

Arduino入门(一)_第1张图片

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 IDE

Arduino的IDE目前的版本是1.6.7 下载
Arduino入门(一)_第2张图片

界面如下

Arduino入门(一)_第3张图片


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语言参考


本文参考文献:

  • Arduino官网
  • Arduino中文社区
  • ElecSpark电子火花
  • 极客工坊
  • 好搜百科

你可能感兴趣的:(Arduino)