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. 夯实Java基础系列1:Java面向对象三大特性(基础篇)

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 [https://github.com/h2pl/Java-Tutorial](https: ...

  2. Salesforce学习之路-developer篇(二)利用Jenkins和Bitbucket实现Salesforce的CI/CD功能

    上文提到,基于CRM的二次开发是必不可少的,但是在实际项目中CI/CD是不可忽略的一个重要部分,与传统的Java,Python项目不同,如果对Salesforce进行持续集成和持续部署呢? 结合找到的 ...

  3. python正则表达式字符记录

    代码 功能 . 匹配任意1个字符(除了\n) [] 匹配[]中列举的字符 \d    匹配数字,即0-9 \D   匹配非数字, 即不是数字 \s 匹配空白,即空格,tab键 \S 匹配非空白 \w ...

  4. 第八届蓝桥杯java b组第一题

    1,标题: 购物单    小明刚刚找到工作,老板人很好,只是老板夫人很爱购物.老板忙的时候经常让小明帮忙到商场代为购物.小明很厌烦,但又不好推辞.    这不,XX大促销又来了!老板夫人开出了长长的购 ...

  5. 提交第一个spark作业到集群运行

    写在前面 接触spark有一段时间了,但是一直都没有真正意义上的在集群上面跑自己编写的代码.今天在本地使用scala编写一个简单的WordCount程序.然后,打包提交到集群上面跑一下... 在本地使 ...

  6. CentOS7 64位下MySQL安装与配置(YUM)

    安装环境:腾讯云CentOS7 64位安装MySQL5.7 1.配置YUM源 在MySQL官网中下载YUM源rpm安装包:http://dev.mysql.com/downloads/repo/yum ...

  7. RMAN备份归档日志ORA-19575

    RMAN备份归档日志ORA-19575 一.问题描述 1)环境oracle 10g; 2)报错现象RMAN进行备份归档报错失败ORA-19575 二.问题处理 1)根据客户说明的现象,百度了一波(详见 ...

  8. locate,find

    locate:非实时查找,模糊匹配,查找是根据全系统文件数据库进行的,可以使用updatedb命令来手动生成数据库 find:实时查找,精确匹配,支持众多查找标准,遍历指定目录中的所有文件完成查找,速 ...

  9. uC/OS-III 任务详解(四)

    uC/OS系统的任务一般都放在最开始介绍,我放在第四章主要是对模糊的概念作清晰的讲解. 从用户的角度来看,uC/OS-III 中的任务可以分为5 种状态,分别是休眠态.就绪态.运行态.挂起态和中断态, ...

  10. Grafana 6.4 正式发布!

    原文链接:Grafana 6.4 正式发布! 2019 年 10 月 2 日,也就是国内小伙伴们的放假期间,Grafana 实验室正式发布了 Grafana 6.4 版本.这个版本主要围绕数据模型和指 ...