官网
https://www.arduino.cc/
什么是 Arduino 的 bootloader?
在 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() 的使用?
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 引脚, 可通过编程电缆连接到编程器设备.
[Arduino] 基础知识
来源: http://www.bubuko.com/infodetail-3357180.html