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开发技巧,其他型号控制器也是类似的。

  • 处理器 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,它提供了更多的输入/输出接口,可以控制更多的设备,以及拥有更大的程序空间和内存,是完成较大型项目的较好选择。

  • 控制器 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设备。

  • 微控制器 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控制器。

  • 微控制器 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型插座。

  • 处理器 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没有保护电路,输入电压不能正负接反也不能超过阀值。

  • 处理器 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必须外接扩展板才能够下载程序。

  • 处理器 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板子,性价比高。

Arduino学习笔记① 初识Arduino的更多相关文章

  1. Arduino学习笔记⑤ 模拟IO实验

    1.前言     还记得前几个我们都是在讲解数字IO,而其实我们生活中大多数信号都是模拟信号,如声音以及温度变化.在Arduino中,常用0~5v的电压来表示模拟信号. 1.1 模拟输入功能      ...

  2. Arduino学习笔记② Arduino语言基础

    授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...

  3. Arduino—学习笔记—基础语法

    图解 函数具体讲解 pinMode(工作接脚,模式) 工作接脚 工作接脚编号(0--13与A0--A5) 模式 工作模式:INPUT或OUTPUT 例子 将8接口设置为输出模式 pinMode(8,O ...

  4. Arduino学习笔记二:修改LED点灯程序

    看了开源社区的LED控制程序,开始上手代码编写,修改,下载以及调试,原文地址:http://www.arduino.cn/thread-1072-1-1.html,这个帖子写的比较通俗易懂. 自己移植 ...

  5. Arduino学习笔记A6(补充) - 在串口读取多个字符串,并且转换为数字数组

    功能如题目. 在串口收到逗号分割的6串数字比如 100,200,45,4,87,99 然后在6个PWM端口3, 5, 6, 9, 10, 11输出对应PWM值 代码注释很详细了,就不再说明了. ARD ...

  6. Arduino学习笔记1---开发环境搭建

    主要内容:(一). Arduino IDE的下载及安装 (二). Arduino IDE的应用 (三). Arduino的程序结构 (四). Arduino程序的编译及下载 (一). Arduino ...

  7. Arduino学习笔记0---开发板的了解

    Arduino的入门文档https://wenku.baidu.com/view/4040861d58fafab069dc02d4.html?from=search,共61页的文档,看完就差不多可以入 ...

  8. Arduino学习笔记⑧ 红外通信

    1.前言     红外通信是一种利用红外光编码进行数据传输的无线通信方式,在目前来说是使用非常广泛的.生活中常见电视遥控器,空调遥控器,DVD遥控器(现在估计是老古董了),均使用红外线遥控.使用红外线 ...

  9. Arduino学习笔记⑦ EEPROM断电保存数据

    1.前言     EEPROM,叫做电可擦可编程可读寄存器(是不是觉得好官方,不知道是什么鬼?反正我也一脸懵逼),只需要知道这是一种断电后数据不会丢失的存储设备,可以用来应对需要做记录做保存的场合.简 ...

随机推荐

  1. [C++] 类的使用(1)

    1.类的基本思想是数据抽象和封装.数据抽象是一种依赖于接口和实现分离的编程(以及设计)技术. 2.常量对象,以及常量对象的引用或指针都只能调用常量成员函数.因为非常量成员函数有可能修改其作用的对象,与 ...

  2. MySQL中常用到的关于时间的SQL

    -- 今天 SELECT DATE_FORMAT(NOW(),'%Y-%m-%d 00:00:00') AS dayStart;SELECT DATE_FORMAT(NOW(),'%Y-%m-%d 2 ...

  3. 第六届蓝桥杯java b组第8题

    乐羊羊饮料厂正在举办一次促销优惠活动.乐羊羊C型饮料,凭3个瓶盖可以再换一瓶C型饮料,并且可以一直循环下去,但不允许赊账. 请你计算一下,如果小明不浪费瓶盖,尽量地参加活动,那么,对于他初始买入的n瓶 ...

  4. 从零开始用golang创建一条简单的区块链

    区块链(Blockchain),是比特币的一个重要概念,它本质上是一个去中心化的数据库,同时作为比特币的底层技术,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次比特币网络交易的信息 ...

  5. Salem and Sticks-萨鲁曼的棍子 CodeForce#1105A 暴力

    题目链接:Salem and Sticks 题目原文 Salem gave you 

  6. 阿里云短信服务开发报错Java.lang.NoClassDefFoundError:com/aliyuncs/exceptions/ClientException

    手机app获取短信验证码功能时候,遇到的问题.使用的是阿里云的短信服务,下载平台demo时运行不报错,但是在service层调用的时候报错 Java.lang.NoClassDefFoundError ...

  7. Idea插件之IdeTalk

    前言 随着越来越多的公司与Java工程师,逐步从Eclipse过度到Idea,安装相应的插件可能会成倍的增加工作效率. IDETalk是由JetBrains的工程师开发的一款代码级的协同工具,主要是为 ...

  8. Angular 文件上传、下载

    1. 文件上传 本地可同时选择多个文件 将本地所选择的文件列出来 单个文件上传至服务器: 删除本地选择的文件 样式使用了bootstrap的样式 1. html - file.component.ht ...

  9. Tornado基础学习篇

    1.1 Tornado是什么? Tornado是使用Python编写的一个强大的.可扩展的Web服务器.它在处理严峻的网络流量时表现得足够强健,但却在创建和编写时有着足够的轻量级,并能够被用在大量的应 ...

  10. 3DEarth PPT :一款专为GIS系统研发的三维汇报演示系统

    3DEarth PPT(三维地球汇报演示系统)又称 3DGis PPT,是专为GIS系统研发的三维汇报演示系统.对有3DGis系统的客户它可以作为一个组件(dll)嵌入原系统,对没有3DGis系统的客 ...