- Arduino - 教程
- Arduino - 概述
- Arduino - Board Description
- Arduino - 安装
- Arduino - 程序结构
- Arduino - 数据类型
- Arduino - Variables & 常量
- Arduino - 运算符
- Arduino - 控制声明( Control Statements)
- Arduino - 循环
- Arduino - 功能( Functions)
- Arduino - 字符串( Strings)
- Arduino - String对象( String Object)
- Arduino - Time
- Arduino - 阵列( Arrays)
- Arduino - I/O Functions
- Arduino - Advanced I/O Function
- Arduino - 字符函数( Character Functions)
- Arduino - 数学图书馆( Math Library)
- Arduino - 三角函数( Trigonometric Functions)
- Arduino - Due & Zero
- Arduino - 脉冲宽度调制( Pulse Width Modulation)
- Arduino - 随机数( Random Numbers)
- Arduino - 中断( Interrupts)
- Arduino - 沟通( Communication)
- Arduino - 内部集成电路( Inter Integrated Circuit)
- Arduino - 串行外设接口( Serial Peripheral Interface)
- Arduino - 闪烁LED( Blinking LED)
- Arduino - 褪色LED( Fading LED)
- Arduino - 读取模拟电压( Reading Analog Voltage)
- Arduino - LED条形图( LED Bar Graph)
- Arduino - 键盘注销( Keyboard Logout)
- Arduino - 键盘消息( Keyboard Message)
- Arduino - 鼠标按钮控制( Mouse Button Control)
- Arduino - 键盘串口( Keyboard Serial)
- Arduino - 湿度传感器( Humidity Sensor)
- Arduino - 温度传感器( Temperature Sensor)
- Arduino - Water Detector / Sensor
- Arduino - PIR传感器( PIR Sensor)
- Arduino - 超声波传感器( Ultrasonic Sensor)
- Arduino - 连接开关( Connecting Switch)
- Arduino - 直流电机( DC Motor)
- Arduino - 伺服电机( Servo Motor)
- Arduino - 步进电机( Stepper Motor)
- Arduino - 音调库( Tone Library)
- Arduino - 无线通信( Wireless Communication)
- Arduino - 网络通信( Network Communication)
- Arduino - 有用的资源
- Arduino - 讨论
- Show Example 1
- Show Example 2
- Show Example 3
- Show Example 4
- Show Example 5
- If statement
- If …else statement
- If…else if …else statement
- switch case statement
- Conditional Operator ? :
- while循环
- do…while循环
- for循环
- Nested循环
- Infinite循环
- delay () function
- delayMicroseconds () function
- millis () function
- micros () function
- 将数组传递给函数(Passing Arrays to Functions)
- 多维数组(Multi-Dimensional Arrays)
Arduino - 脉冲宽度调制( Pulse Width Modulation)
脉冲宽度调制或PWM是用于改变脉冲序列中脉冲宽度的常用技术。 PWM具有许多应用,例如控制伺服和速度控制器,限制电机和LED的有效功率。
PWM的基本原理
脉冲宽度调制基本上是具有变化的高和低时间的方波。 基本PWM信号如下图所示。
有各种与PWM相关的术语 -
On-Time - 时间信号持续时间很长。
Off-Time - 时间信号持续时间很短。
Period - 表示为PWM信号的导通时间和关断时间之和。
Duty Cycle - 表示为PWM信号周期内保持的时间信号百分比。
Period
如图所示,T on表示导通时间,T off表示信号的关断时间。 期间是开启和关闭时间的总和,计算方法如下式所示 -
$$ T_ {total} = T_ {on} + T_ {off} $$占空比
占空比计算为该时间段的接通时间。 使用上面计算的时间,工作周期计算如下 -
$$ D =\frac {T_ {on}} {T_ {on} + T_ {off}} =\frac {T_ {on}} {T_ {total}} $$analogWrite() Function
analogWrite()函数将模拟值(PWM波)写入引脚。 它可用于点亮不同亮度的LED或以各种速度驱动电机。 在调用analogWrite()函数之后,该引脚将产生指定占空比的稳定方波,直到下一次调用analogWrite()或在同一引脚上调用digitalRead()或digitalWrite()。 大多数引脚上的PWM信号频率约为490 Hz。 在Uno和类似的板上,引脚5和6的频率约为980Hz。 莱昂纳多的第3和第11针也以980赫兹的速度运行。
在大多数Arduino板(带有ATmega168或ATmega328的板)上,此功能适用于引脚3,5,6,9,10和11.在Arduino Mega上,它适用于引脚2 - 13和44 - 46.较旧的Arduino具有ATmega8的电路板仅支持引脚9,10和11上的analogWrite() 。
Arduino Due支持引脚2至13上的analogWrite() ,以及引脚DAC0和DAC1。 与PWM引脚不同,DAC0和DAC1是数模转换器,可用作真正的模拟输出。
在调用analogWrite()之前,您无需调用pinMode()将引脚设置为输出。
analogWrite() Function Syntax
analogWrite ( pin , value ) ;
value - 占空比:介于0(始终关闭)和255(始终打开)之间。
Example
int ledPin = 9; // LED connected to digital pin 9
int analogPin = 3; // potentiometer connected to analog pin 3
int val = 0; // variable to store the read value
void setup() {
pinMode(ledPin, OUTPUT); // sets the pin as output
}
void loop() {
val = analogRead(analogPin); // read the input pin
analogWrite(ledPin, (val/4)); // analogRead values go from 0 to 1023,
// analogWrite values from 0 to 255
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论