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 String 对象,你真的了解了吗?

    String 对象的实现 String对象是 Java 中使用最频繁的对象之一,所以 Java 公司也在不断的对String对象的实现进行优化,以便提升String对象的性能,看下面这张图,一起了解一 ...

  2. Ubuntu python-matplotlib安装couldn't connect to display ":0.0"

    先卸载旧的matplotlib库(sudo pip3 uninstall matplotlib),再利用命令 sudo apt-get install python-matplotlib安装,自动安装 ...

  3. vs加调试代码的正确姿势

    为了方便,我们会在系统中加入一些调试代码,比如自动登录,这样会省掉很多精力时间,但用的姿势不对, 第一重姿势:打包注释 我看一些人在vs中加调试代码(比如自动登录),然后打包的时候注释掉,这样操作是省 ...

  4. asp.net core IdentityServer4 实现 implicit(隐式许可)实现第三方登录

    前言 OAuth 2.0默认四种授权模式(GrantType) 授权码模式(authorization_code) 简化模式(implicit) 密码模式(resource owner passwor ...

  5. (6)autotools工具的使用

       autotools是专门用来生成Makefile的一系列工具,包括autoscan.aclocal.autoheader.autoconf.automake等.     (1)autotools ...

  6. AppBoxFuture: Raft快照及日志截断回收

      AppBoxFuture的存储引擎依赖Raft一致性协议来保证各个分区副本的一致性,如果不处理Raft日志将不断增长,因此需要特定的机制(定期或每处理一定数量的日志)来回收那些无用的日志数据.通过 ...

  7. Python IAQ中文版 - Python中少有人回答的问题

    Python中少有人回答的问题 The Python IAQ: Infrequently Answered Questions 1 Q: 什么是"少有人回答的问题(Infrequently ...

  8. WebGL简易教程(七):绘制一个矩形体

    目录 1. 概述 2. 示例 2.1. 顶点索引绘制 2.2. MVP矩阵设置 2.2.1. 模型矩阵 2.2.2. 投影矩阵 2.2.3. 视图矩阵 2.2.4. MVP矩阵 3. 结果 4. 参考 ...

  9. 详解Java多线程锁之synchronized

    synchronized是Java中解决并发问题的一种最常用的方法,也是最简单的一种方法. synchronized的四种使用方式 修饰代码块:被修饰的代码块称为同步语句块,其作用的范围是大括号{}括 ...

  10. python爬虫—— 抓取今日头条的街拍的妹子图

    AJAX 是一种用于创建快速动态网页的技术. 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新. 近期在学习获取j ...