5 有用
0 下载

Arduino PWM教程

文件列表(压缩包大小 1016B)

免费

概述

需要的元件

  • Arduino UNO

    ph-a000066_iso_(1)_ztBMuBhMHo

  • 杜邦线

    11026-02

  • 面包板

12002-04

  • 电阻220Ω

MFR-25FRF52-1K_sml

  • 单圈电位器10kΩ

Bourns-3362P-1-103LF-image_160px

  • 通用LED

09590-01

  • Arduino IDE

原理及流程

在Arduino PWM教程中,您将学习什么是PWM以及如何从Arduino的数字引脚获取PWM输出。首先,我们将通过代码控制LED的亮度,然后通过添加电位计来手动控制它。

什么是PWM

PWM代表脉冲宽度调制,它是一种用于控制LED亮度,控制直流电动机的速度,控制伺服电动机或必须通过数字方式获得模拟输出的技术。

Arduino数字引脚为我们提供5V(变为高电平时)或0V(变为低电平时),输出为方波信号。因此,如果要使LED变暗,则无法从数字引脚获得0至5V之间的电压,但可以更改信号的开启和关闭时间。如果我们足够快地改变ON和OFF时间,那么LED的亮度将会改变。

在继续之前,让我们讨论与PWM相关的一些术语。

TON(接通时间):这是信号为高的时间。

TOFF(关闭时间):这是信号低电平的时间。

时间:这是接通时间和断开时间的总和。

占空比:这是一段时间内信号为高电平的时间百分比。

因此,在占空比为50%和频率为1Hz时,LED将在半秒内保持高电平,而在另一半秒内保持低电平。如果将频率提高到50Hz(每秒50次ON和OFF),则人眼将看到发光二极管以一半的亮度发光。

word-image

Arduino和PWM

Arduino IDE具有内置函数“ analogWrite()”,可用于生成PWM信号。对于大多数引脚,此生成信号的频率约为490Hz,我们可以使用此功能在0-255之间给出值。

AnalogWrite(0)表示占空比为0%的信号。

AnalogWrite(127)表示占空比为50%的信号。

AnalogWrite(255)表示占空比为100%的信号。

在Arduino Uno上,PWM引脚为3、5、6、9、10和11。引脚5和6上的PWM信号频率约为980Hz,其他引脚为490Hz。PWM引脚标有〜符号。

通过代码控制LED的亮度

首先,如下所述进行连接。

将LED的正极(即较长的一端)连接到Arduino的数字引脚6。然后将220欧姆电阻器连接到LED的负极,并将电阻器的另一端连接到Arduino的接地引脚。

arduino_pwm_k3R9OhQ9qE

现在,让我们编写代码以使用PWM更改LED的亮度。

Arduino代码

将代码上传到Arduino IDE中,LED将开始消失。

//Initializing LED Pin
int led_pin = 6;
void setup() {
  //Declaring LED pin as output
  pinMode(led_pin, OUTPUT);
}
void loop() {
  //Fading the LED
  for(int i=0; i<255; i++){
    analogWrite(led_pin, i);
    delay(5);
  }
  for(int i=255; i>0; i--){
    analogWrite(led_pin, i);
    delay(5);
  }
}

Arduino代码可手动控制LED的亮度

在之前的连接中,添加10k欧姆电位计,并将电位计的两端连接到Arduino的5V和GND,然后将电位计的中心连接到Arduino的A0引脚。

arduino_pwm_manually_hKV5pk0MHl

Arduino代码

将代码上传到Arduino IDE中,然后移动电位器的旋钮,LED的亮度就会改变。

int led_pin = 6; 
int pot_pin = A0;
int output;
int led_value;
void setup() {
  pinMode(led_pin, OUTPUT);
}
void loop() {
  //Reading from potentiometer
  output = analogRead(pot_pin);
  //Mapping the Values between 0 to 255 because we can give output
  //from 0 -255 using the analogwrite funtion
  led_value = map(output, 0, 1023, 0, 255);
  analogWrite(led_pin, led_value);
  delay(1);
}

最后

所有需要的文件在下载区均可找到。

via:Arduino PWM教程-Hackster.io

理工酷提示:

如果遇到文件不能下载或其他产品问题,请添加管理员微信:ligongku001,并备注:产品反馈

评论(0)

0/250