[Arduino] 基础知识

官网

https://www.arduino.cc/

什么是 Arduino 的 bootloader?

https://www.cnblogs.com/anandexuechengzhangzhilu/p/10719808.html

在arduino的板子上,作为核心的avr单片机往往都会烧录一个bootloader,这个叫做bootloader的东东其实是arduino研发团队针对arduino板子开发的一小段代码,借助于这段代码,我们可以在不用外部烧录工具的情况下来把我们自己的代码下载到AVR单片机中。为了使一些朋友更容易理解,不妨打个比方,bootloader类似于我们电脑中的windows操作系统,而我们的代码则类似于运行于windows上的各种程序。

一般而言,arduino板的卖家都会把每块板的bootloader都烧好后再出售,这样买家直接收到板后就能够把自己在arduinoIDE中编写的程序借助PC的USB口来下载到arduino单片机内。当然,下载bootloader是需要借助于外部下载器的,可支持的下载器不少,基中比较具有性价比的是usbtinyisp,在淘宝上很多店家都有出售,比如易捷机器人电路的价格就只有38元。

对于一般用户,因为在下载自己代码的时候偶尔会出现破坏bootloader的情况,就像PC的windows系统突然之间崩溃了一样。这时候,就会需要用外部下载器来恢复这个bootloader,就相当于PC重装系统。

Arduino 中 serial.available() 和 serial.read() 的使用?

https://www.cnblogs.com/anandexuechengzhangzhilu/p/10719555.html

Serial.available() 指返回串口缓冲区中当前剩余的字符个数。一般用这个函数来判断串口的缓冲区有无数据,当Serial.available()>0时,说明串口接收到了数据,可以读取。

Serial.read() 指从串口的缓冲区取出并读取一个Byte的数据。比如有设备通过串口向Arduino发送数据了,我们就可以用Serial.read()来读取发送的数据。

典型的用法如下:

while (Serial.available()>0)
{
  data = Serial.read();
  delay(2);
}

上面代码的意思就是,当串口接收到数据时(上面Serial.available()>0这句),反复读取串口的数据并赋值给data (上面data= Serial.read()这句),直到数据读完(即Serial.available()=0的时候)。

详解Arduino Uno开发板的引脚分配图及定义

https://www.yiboard.com/thread-831-1-1.html

Arduino Uno微控制器采用的是Atmel的ATmega328。 Arduino Uno 开发板的引脚分配图包含14个数字引脚、6个模拟输入、电源插孔、USB连接和ICSP插头。
引脚的复用功能提供了更多的不同选项,例如驱动电机、LED、读取传感器等。

Arduino Uno 引脚分配 - 电源

Arduino Uno开发板可以使用三种方式供电:

● 直流电源插孔 - 可以使用电源插孔为Arduino开发板供电。电源插孔通常连接到一个适配器。开发板的供电范围可以是5-20V,但制造商建议将其保持在7-12V之间。高于12V时,稳压芯片可能会过热,低于7V可能会供电不足。

● VIN引脚 - 该引脚用于使用外部电源为Arduino Uno开发板供电。电压应控制在上述提到的范围内。

● USB电缆 - 连接到计算机时,提供500mA/5V电压。

Arduino Uno引脚分配 - 模拟输入

Arduino Uno有6个模拟引脚,它们作为ADC(模数转换器)使用。
这些引脚用作模拟输入,但也可用作数字输入或数字输出。

模数转换

ADC表示模拟到数字转换器。 ADC是用于将模拟信号转换为数字信号的电子电路。模拟信号的这种数字表示允许处理器(其是数字设备)测量模拟信号并在其操作中使用它。
Arduino引脚A0-A5能够读取模拟电压。在Arduino上,ADC具有10位分辨率,这意味着它可以通过1,024个数字电平表示模拟电压。 ADC将电压转换成微处理器可以理解的位。
一个常见的ADC例子是IP语音(VoIP)。每部智能手机都有一个麦克风,可将声波(语音)转换为模拟电压。这通过设备的ADC,转换成数字数据,通过互联网传输到接收端。

Arduino Uno引脚分配 - 数字引脚

Arduino Uno的引脚0-13用作数字输入/输出引脚。
其中,引脚13连接到板载的LED指示灯;引脚3、5、6、9、10、11具有PWM功能。

需要注意的是:
● 每个引脚可提供/接收最高40 mA的电流。但推荐的电流是20毫安。
● 所有引脚提供的绝对最大电流为200mA。

数字电平意味着什么?

数字是一种表示1位电压的方式:0或1。
Arduino上的数字引脚是根据用户需求设计为输入或输出的引脚。数字引脚可以打开或关闭。开启时,它们处于5V的高电平状态,当关闭时,它们处于0V的低电平状态。

在Arduino上,当数字引脚配置为输出时,它们设置为0或5V。

当数字引脚配置为输入时,电压由外部设备提供。该电压可以在0-5V之间变化,并转换成数字表示(0或1)。为了确定这一点,有2个阈值:

● 低于0.8v - 视为0。
● 高于2.0v - 视为1。

将组件连接到数字引脚时,确保逻辑电平匹配。如果电压在阈值之间,则返回值将不确定。

什么是PWM?

通常,脉宽调制(PWM)是一种调制技术,用于将消息编码为脉冲信号。
PWM由两个关键部分组成:频率和占空比。
PWM频率决定了完成单个周期(周期)所需的时间以及信号从高到低的波动速度。占空比决定信号在总时间段内保持高电平的时间。占空比以百分比表示。

在Arduino中,支持PWM的引脚产生约500Hz的恒定频率,而占空比根据用户设置的参数而变化。见下图:

PWM信号用于直流电机的速度控制,调光LED等。

通信协议

串行(TTL)- 数字引脚0和1是Arduino Uno的串行引脚。
它们由板载USB模块使用。

什么是串行通信?

串行通信用于在Arduino板和其他串行设备(如计算机,显示器,传感器等)之间交换数据。
每块Arduino板至少有一个串口。串行通信发生在数字引脚0(RX)和1(TX)以及USB上。Arduino也支持通过数字引脚与SoftwareSerial Library进行串行通信。
这允许用户连接多个支持串行的设备,并保留主串行端口可用于USB。

软件串行和硬件串行 - 大多数微控制器都具有用于与其他串行设备进行通信的硬件。软件串行端口使用引脚更改中断系统进行通信。有一个用于软件串行通信的内置库。处理器使用软件串行来模拟额外的串行端口。软件串行唯一的缺点是它需要更多的处理,并且不能支持与硬件串行相同的高速。

SPI - SS / SCK / MISO / MOSI引脚是SPI通信的专用引脚。

它们可以在Arduino Uno的数字引脚10-13和ICSP插头上找到。

串行外设接口(Serial Peripheral Interface,SPI)是一种串行数据协议,由微控制器用来与总线中的一个或多个外部设备进行通信,如连接。 SPI也可以用来连接2个微控制器。在SPI总线上,总是有一个设备表示为主设备,其余所有设备都表示为从设备。在大多数情况下,微控制器是主设备。 SS(从选择)引脚确定主器件当前正在与哪个器件通信。

启用S??PI的器件始终具有以下引脚:
● MISO(主从输出) - 用于向主设备发送数据的线路
● MOSI(主机输出从机输入) - 发送数据到外围设备的主机线
● SCK(串行时钟) - 由主设备生成的用于同步数据传输的时钟信号。

I2C - SCL / SDA引脚是I2C通信的专用引脚。

在Arduino Uno上,它们可以在模拟引脚A4和A5上找到。I2C通信协议通常称为 "I2C总线"。

I2C协议旨在实现单个电路板上组件之间的通信。使用I2C时,有2条通信线,称为SCL和SDA。
● SCL是用于同步数据传输的时钟线。
● SDA是用于传输数据的通讯线。

I2C总线上的每个器件都有一个唯一的地址,最多可以在同一条总线上连接255个器件。

Aref - 模拟输入的参考电压

中断 - INT0和INT1

Arduino Uno有两个外部中断引脚。

外部中断 - 外部中断是外部干扰出现时发生的系统中断。

干扰可能来自用户或网络中的其他硬件设备。 Arduino中这些中断的常见用途是读取编码器产生的方波或外部事件唤醒处理器的频率。

Arduino有两种形式的中断:

● 外部输入
● 引脚状态变化

ATmega168 / 328上有两个外部中断引脚,称为INT0和INT1。 INT0和INT1分别映射到引脚2和3。相反,引脚变化中断可以在任何引脚上激活。

Arduino Uno引脚定义 - ICSP插头

ICSP表示在线串行编程。该名称源自在系统编程(ISP)。

Arduino相关的制造商,如Atmel,开发了自己的在线串行编程插头。这些引脚使用户能够编程Arduino开发板上的固件。 Arduino开发板上有6个ICSP引脚,可通过编程电缆连接到编程器设备。

原文地址:https://www.cnblogs.com/jinzesudawei/p/12117692.html

时间: 2024-10-29 04:59:40

[Arduino] 基础知识的相关文章

MySQL数据库基础知识

day02 MySQL数据库基础知识 一.基础知识概述: 基础决定你这门课程的学习成败!只有学习好这些基础知识以后,你才能真正的运用自如.才能够对数据库有更深入的了解,道路才会越走越远. 二.基础知识: 1.数据库(database):数据库就好比是一个物理的文档柜,一个容器,把我们整理好的数据表等等归纳起来. 创建数据库命令:        create database 数据库名; 2.查看数据库         show databases; 3.打开指定的数据库         use 

linux入门基础知识及简单命令介绍

linux入门基础知识介绍 1.计算机硬件组成介绍 计算机主要由cpu(运算器.控制器),内存,I/O,外部存储等构成. cpu主要是用来对二进制数据进行运算操作,它从内存中取出数据,然后进行相应的运算操作.不能从硬盘中直接取数据. 内存从外部存储中取出数据供cpu运存.内存的最小单位是字节(byte) 备注:由于32的cpu逻辑寻址能力最大为32内存单元.因此32位cpu可以访问的最大内存空间为:4GB,算法如下: 2^32=2^10*2^10*2^10*2^2 =1024*1024*1024

BroadcastReceive基础知识总结

BroadcastReceive基础知识总结 1.BroadcastReceive简介 BroadcastReceive也就是"广播接收者"的意思,顾名思义,就是用来接收来自系统和应用中的广播 在Android系统中,广播体现在方方面面,例如当开机完成后系统会产生一条广播,接收到这条广播就能实现开机启动服务的功能,当网络状态改变时,系统会产生一条广播,接收到这条广播,就能及时的做出提示和保存数据等操作,当电池的电量改变的时候,系统会产生一条广播,接收到这条广播就能在电量低的时候告知用户

基础知识--:before伪元素和:after伪元素

http://book.51cto.com/art/201108/285688.htm 3.7  替换指定位置 大家都知道before和after是前.后的意思.但是奇怪的是,CSS中的:before伪元素和:after伪元素是为源文档中不存在的内容设置样式的. 没有内容怎么设置样式呢?别急!它们有一个content属性,一起使用就可以为某个选择器前.后的内容设置样式了. 下面就来了解一下:before伪元素和:after伪元素的用法. 视频教学:光盘/视频/3/3.7  替换指定位置.avi 

20_Shell语言———VIM编辑器基础知识三之窗口属性定制、配置文件及查找替换功能

Vim编辑器可以让用户按照需求来定制一些使用属性. 一.窗口属性定义 1)显示行号 行号不是内容,只是用来帮助用户确认文本所在的行.在vim编辑器中,如果要显示行号,可以在末行模式下输入: set number 如果想关闭,则可以在功能名称前面加上no,即: set nonumber 命令可以被简写,如set number 可以简写为 set nu:set nonumber 可以简写为 set nonu. 注意,上述设定仅对当前vim的进程有效,一旦当前进程关闭,这些设定就会失效,如果要使设定永

web基础知识(一)关于ajax传值最基础东西

HTTP方法之 GET对比POST GET:从指定的资源请求数据, POST:向指定的资源提交要被处理的数据 GET方法: 请注意,查询字符串(名称/值对)是在 GET 请求的 URL 中发送的: /test/demo_form.asp?name1=value1&name2=value2 有关 GET 请求的其他一些注释: GET 请求可被缓存 GET 请求保留在浏览器历史记录中 GET 请求可被收藏为书签 GET 请求不应在处理敏感数据时使用 GET 请求有长度限制 GET 请求只应当用于取回

线程基础知识

什么是线程: 在一个程序里的一个执行路线就叫做线程(thread).更准确的定义是:线程是"一个进程内部的控制序列" 一切进程至少都有一个执行线程 进程与线程 进程是资源竞争的基本单位 线程是程序执行的最小单位 线程共享进程数据,但也拥有自己的一部分数据 线程ID 一组寄存器 栈 errno 信号状态 优先级 fork和创建新线程的区别 当一个进程执行一个fork调用的时候,会创建出进程的一个新拷贝,新进程将拥有它自己的变量和它自己的PID.这个新进程的运行时间是独立的,它在执行时几乎

Keepalived基础知识

大纲: 一.什么是Keepalived? 二.VRRP协议简介. 三.Keepalived原理. 四.Keepalived配置文件详解. 五.Keepalived配置示例. 一.什么是Keepalived? 什么是Keepalived呢,keepalived观其名可知,保持存活,在网络里面就是保持在线了,也就是所谓的高可用或热备,用来防止单点故障(单点故障是指一旦某一点出现故障就会导致整个系统架构的不可用)的发生,那说到keepalived时不得不说的一个协议就是VRRP协议,可以说这个协议就是

【Python数据挖掘课程】六.Numpy、Pandas和Matplotlib包基础知识

前面几篇文章采用的案例的方法进行介绍的,这篇文章主要介绍Python常用的扩展包,同时结合数据挖掘相关知识介绍该包具体的用法,主要介绍Numpy.Pandas和Matplotlib三个包.目录:        一.Python常用扩展包        二.Numpy科学计算包        三.Pandas数据分析包        四.Matplotlib绘图包 前文推荐:       [Python数据挖掘课程]一.安装Python及爬虫入门介绍       [Python数据挖掘课程]二.K