Arduino学习笔记① 初识Arduino

时间:2022-02-04 04:36:11

1.前言

    近段时间,博主陆续更新了ESP8266学习笔记,主要开发平台是Arduino。但是,对于很多无基础的初学者来说,甚至不了解Arduino是什么。因此,博主决定加入一个Arduino学习笔记,方便零基础的初学者。初学者可以从基础去了解Arduino,这样才能设计自己的东西,所以博主建议初学者可以参考《ARDUINO程序设计基础》,《Arduino-语法手册》,请点击 传输门 提取码:0923。

注意:

  • 博主建议边学边练,巩固知识

2.什么是Arduino

    Arduino可以是一块小小电路板,也可以是一个开放的电子开发平台。它既包含了硬件,也包含了软件——开发环境以及开发者、使用者创造出来的代码、程序。Arduino抛开了传统硬件开发的复杂操作,不需要了解硬件的内部结构和寄存器设置(如果是单片机开发,是需要了解寄存器并且设置各个寄存器),也不需要过多的电子知识和编程知识,开发者只需要通过简单学习,了解各个引脚和函数的作用,便可利用它开发出各种出色的项目。
    Arduino编译器使用GCC,Arduino语音衍生自Wiring语言,这是一个开源的单片机编程架构,同时Arduino语言又是基于AVR-Libc这个AVR单片机扩展库编写的,意味着很多单片机的寄存器设置细节应该是被二次封装了。

3.选择一款适合自己的Arduino控制器

3.1 Arduino UNO

    Arduino UNO 是目前使用最广泛的Arduino控制器,具有Arduino的所有功能,是初学者最佳选择。掌握UNO开发技巧,其他型号控制器也是类似的。

Arduino学习笔记① 初识Arduino

Arduino学习笔记① 初识Arduino

  • 处理器 ATmega328
  • 工作电压 5V
  • 输入电压(推荐) 7-12V
  • 输入电压(范围) 6-20V
  • 数字IO脚 14 (其中6路作为PWM输出)
  • 模拟输入脚 6
  • IO脚直流电流 40 mA
  • 3.3V脚直流电流 50 mA
  • Flash Memory 32 KB (ATmega328,其中0.5 KB 用于 bootloader)
  • SRAM 2 KB (ATmega328)
  • EEPROM 1 KB (ATmega328)
  • 工作时钟 16 MHz

3.2 Arduino MEGA

    Arduino Mega 是一个增强型的Arduino 控制器,相对于UNO,它提供了更多的输入/输出接口,可以控制更多的设备,以及拥有更大的程序空间和内存,是完成较大型项目的较好选择。

Arduino学习笔记① 初识Arduino

Arduino学习笔记① 初识Arduino

  • 控制器 ATmega2560
  • 工作电压 5V
  • 输入电压(推荐) 7-12V
  • 输入电压(限制) 6-20V
  • 数字I/0口 54 (含15路PWM输出)
  • 模拟输入口 16
  • 每个I/0口直流电流 40 mA
  • 3.3v口直流电流 50 mA
  • 闪存(Flash Memory) 256 KB(其中8 KB用作bootloader)
  • 静态存储器(SRAM) 8 KB
  • EEPROM 4 KB
  • 时钟 16 MHz

3.3 Arduino Leonardo

    Arduino Leonardo 使用集成了USB功能的AVR单片机作为主控芯片,具备其他型号Arduino控制器的所有功能之外还可以轻松模拟USB键盘/鼠标等USB设备。
Arduino学习笔记① 初识Arduino

Arduino学习笔记① 初识Arduino

  • 微控制器 ATmega32u4
  • 工作电压 5V
  • 输入电压(推荐) 7-12V
  • 输入电压(限制) 6-20V
  • 数字I/O引脚 20
  • PWM通道 7
  • 模拟输入通道 12
  • 每个I/O直流输出能力 40毫安
  • 3.3V端口输出能力 50毫安
  • Flash 32 KB(ATmega32u4)其中4 KB由引导程序使用
  • SRAM 2.5 KB(ATmega32u4)
  • EEPROM 1 KB(ATmega32u4)
  • 时钟速度 16MHz

3.4 Arduino Due

    Arduino Due 突破性使用了32位的ARM Cortex-M3作为主控芯片。它集成了多种外设,有着其他Arduino板无法比拟的性能,是目前最为强大的Arduino控制器。

Arduino学习笔记① 初识Arduino

  • 微控制器 AT91SAM3X8E
  • 工作电压 Voltage 3.3V
  • 输入电压(推荐) 7-12V
  • 输入电压(限制) 6-20V
  • 数字I/O引脚 54 (其中12路PWM输出)
  • 模拟输入通道 Pins 12
  • 模拟输出通道 Pins 2 (DAC)
  • IO口总输出电流 130 mA
  • 3.3V端口输出能力 800 mA
  • 5V端口输出能力 800 mA
  • Flash 512 KB (所有空间都可以储存用户程序)
  • SRAM 96 KB (两个部分: 64KB and 32KB)
  • 时钟速率 84 MHz

3.5 小型化的Arduino

    常见小型Arduino控制器有Arduino Nano,Arduino Mini,Arduino Micro,Arduino LilyPad等。

3.5.1 Arduino Nano

    Arduino Nano是Arduino USB接口的微型版本,最大的不同是没有电源插座以及USB接口是Mini-B型插座。

Arduino学习笔记① 初识Arduino

Arduino学习笔记① 初识Arduino

  • 处理器 ATmega168 or ATmega328
  • 工作电压 5V
  • 输入电压(推荐) 7-12V
  • 输入电压(范围) 6-20V
  • 数字IO脚 14 (其中6路作为PWM输出)
  • 模拟输入脚 6
  • IO脚直流电流 40 mA
  • Flash Memory 16 or 32 KB (其中2 KB 用于 bootloader)
  • SRAM 1 KB or 2 KB
  • EEPROM 0.5 KB or 1 KB (ATmega328)
  • FT232RL FTDI USB接口芯片
  • 工作时钟 16 MHz

3.5.2 Arduino LilyPad

    Arduino 一个特殊版本,是为可穿戴设备和电子纺织品而开发的。
    Arduino LilyPad可以通过USB连接或者外部电源供电,电压可从2.7V到5.5V,需要注意Arduino LilyPad没有保护电路,输入电压不能正负接反也不能超过阀值。

Arduino学习笔记① 初识Arduino

  • 处理器 ATmega168 or ATmega328
  • 工作电压 2.7V-5.5V
  • 输入电压 2.7V-5.5V
  • 数字IO脚 14 (其中6路作为PWM输出)
  • 模拟输入脚 6
  • IO脚直流电流 40 mA
  • 3.3V脚直流电流 50 mA
  • Flash Memory 16 KB (ATmega168,其中2 KB 用于 bootloader)
  • SRAM 1 KB
  • EEPROM 0.5 KB
  • 工作时钟 8 MHz

3.5.3 Arduino Mini

    Arduino Mini是Arduino 的最简洁微型版本,可以插在面包板上,适用于对尺寸要求严苛的场合。
    Arduino MIni必须外接扩展板才能够下载程序。

Arduino学习笔记① 初识Arduino

  • 处理器 ATmega328
  • 工作电压 5V
  • 输入电压 7-9V
  • 输入充电电压 3.7-7V
  • 数字IO脚 14 (其中6路作为PWM输出)
  • 模拟输入脚 8
  • IO脚直流电流 40 mA
  • Flash Memory 32 KB (其中2 KB 用于 bootloader)
  • SRAM 2 KB
  • EEPROM 1 KB
  • 工作时钟 16 MHz

4.第一行代码

    博主这里不交大家安装ArduinoIDE,请自行到Arduino官网下载最新版本,目前是1.8.9版本。当你在Arduino IDE上新增项目,默认是以下代码:

void setup() {
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly:

}

    会发现,Arduino的程序结构与传统的c程序结构有所不同——Arduino程序中没有main函数。其实并不是Arduino程序中没有main函数,而是main函数的定义隐藏在了Arduino的核心库文件中。在进行Arduino开发中不直接操作main函数,而是使用setup和loop这两个函数。

4.1 setup()

    Arduino控制器通电或者复位后,就会开始执行Arduino的初始化配置(IO口 串口等);

4.2 loop()

    setup函数执行完毕后,Arduino会接着执行loop()函数中的程序。而loop函数是一个死循环,其中的程序会不断地重复运行。通常在loop函数中完成程序的主要功能,如驱动各种模块和采集数据等。
    所以,这个模型应该是这样的:

int main(){
    setup();
    while(1){
        loop();
    }
}

    这样就满足c的程序结构了。

5.总结

    本篇主要讲解常用的Arduino板子以及它们的硬件特性,读者可以根据自己的实际情况购买学习,博主建议初学者可以入手Mega板子,性价比高。