Arduino学习笔记① 初识Arduino
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的更多相关文章
- Arduino学习笔记⑤ 模拟IO实验
1.前言 还记得前几个我们都是在讲解数字IO,而其实我们生活中大多数信号都是模拟信号,如声音以及温度变化.在Arduino中,常用0~5v的电压来表示模拟信号. 1.1 模拟输入功能 ...
- Arduino学习笔记② Arduino语言基础
授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...
- Arduino—学习笔记—基础语法
图解 函数具体讲解 pinMode(工作接脚,模式) 工作接脚 工作接脚编号(0--13与A0--A5) 模式 工作模式:INPUT或OUTPUT 例子 将8接口设置为输出模式 pinMode(8,O ...
- Arduino学习笔记二:修改LED点灯程序
看了开源社区的LED控制程序,开始上手代码编写,修改,下载以及调试,原文地址:http://www.arduino.cn/thread-1072-1-1.html,这个帖子写的比较通俗易懂. 自己移植 ...
- Arduino学习笔记A6(补充) - 在串口读取多个字符串,并且转换为数字数组
功能如题目. 在串口收到逗号分割的6串数字比如 100,200,45,4,87,99 然后在6个PWM端口3, 5, 6, 9, 10, 11输出对应PWM值 代码注释很详细了,就不再说明了. ARD ...
- Arduino学习笔记1---开发环境搭建
主要内容:(一). Arduino IDE的下载及安装 (二). Arduino IDE的应用 (三). Arduino的程序结构 (四). Arduino程序的编译及下载 (一). Arduino ...
- Arduino学习笔记0---开发板的了解
Arduino的入门文档https://wenku.baidu.com/view/4040861d58fafab069dc02d4.html?from=search,共61页的文档,看完就差不多可以入 ...
- Arduino学习笔记⑧ 红外通信
1.前言 红外通信是一种利用红外光编码进行数据传输的无线通信方式,在目前来说是使用非常广泛的.生活中常见电视遥控器,空调遥控器,DVD遥控器(现在估计是老古董了),均使用红外线遥控.使用红外线 ...
- Arduino学习笔记⑦ EEPROM断电保存数据
1.前言 EEPROM,叫做电可擦可编程可读寄存器(是不是觉得好官方,不知道是什么鬼?反正我也一脸懵逼),只需要知道这是一种断电后数据不会丢失的存储设备,可以用来应对需要做记录做保存的场合.简 ...
随机推荐
- [Advanced Python] 14 - "Generator": calculating prime
高性能编程 几个核心问题 • 生成器是怎样节约内存的?• 使用生成器的最佳时机是什么?• 我如何使用 itertools 来创建复杂的生成器工作流?• 延迟估值何时有益,何时无益? From: htt ...
- Java设计模式 - 单例模式(创建型模式)
单例模式我在上学期看一些资料时候学习过,没想到这学期的软件体系结构就有设计模式学习,不过看似篇幅不大,介绍得比较简单,在这里我总结下单例模式,一来整理之前的笔记,二来也算是预习复习课程了. 概述 单例 ...
- 采用redis生成唯一且随机的订单号
项目描述 最近做的一个项目有这么一个需求:需要生成一个唯一的11位的就餐码(类似于订单号的概念),就餐码的规则是:一共是11位的数字,前面6位是日期比如2019年07月20就是190720,后面五位是 ...
- 【面试必备】小伙伴栽在了JVM的内存分配策略。。。
周末有小伙伴留言说上周面试时被问到内存分配策略的问题,但回答的不够理想,小伙伴说之前公号里看过这一块的文章的,当时看时很清楚,也知道各个策略是干嘛的,但面试时脑子里清楚,心里很明白,但嘴里就是说不清楚 ...
- 品Spring:能工巧匠们对注解的“加持”
问题的描述与方案的提出 在Spring从XML转向注解时,为了自身的开发方便,对注解含义进行了扩充(具体参考本号上一篇文章). 这个扩充直接导致了一个问题,就是需要从注解往元注解以及元元注解(即沿着从 ...
- 制定一个学习liunx的目标
制定一个学习liunx的目标 学习目标方法 1.在这五个月的学习时间里,制定一套自己的学习方式. 2.养成做笔记以及写博客的习惯 . 3.坚持上课前预习,自习时间总结 . 4.紧跟 ...
- 【Dgango】模版
继承 ① extends用法:只继承一个模版 <!DOCTYPE html> <html lang="en"> <head> <meta ...
- Spring 梳理 - 视图解析器 VS 视图(View,ViewResolver)
View View接口表示一个响应给用户的视图,例如jsp文件,pdf文件,html文件等 该接口只有两个方法定义,分别表明该视图的ContentType和如何被渲染 Spring中提供了丰富的视图支 ...
- mysql having和using使用
1.having当用到聚合函数sum,count后,又需要筛选条件时,就可以考虑使用having,因为where是在聚合前筛选记录的,无法和统计函数一起使用,而having在聚合后筛选记录,可以和统计 ...
- 【SQL server】SQL Server 触发器
触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程.触发器主要是通过事件进行触发被自动调用执行的.而存储过程可以通过存储过程的名称被调用. Ø 什么是触发器 触发器对表进行插入.更新.删 ...