Arduino的PWM功能应用:会呼吸的灯

news2025/3/10 10:50:35

目录

概述

1 认识PWM

1.1 PWM原理

1.2 PWM的应用

1.3 在Arduino中使用PWM

2.硬件

2.1 硬件结构

2.2 线路连接

3 软件

3.1 编译和下载代码

3.2 详细代码

4 测试

4.1 灯的变化测试

4.2 使用逻辑分析仪看波形


概述

       本文通过一个简单的案例,介绍Arduino中PWM的应用方法。搭建一个控制LED的电路,然后使用PWM来控制LED的暗亮程度,以加强对PWM功能的理解。还详细介绍PWM相关知识,便于更加详尽的理解PWM在工程实践中的应用。

1 认识PWM

1.1 PWM原理

        PWM( Pluse Width Modulation )是方波控制信号。其通过控制高电平在一个周期内的宽度,可以控制输出信号的变化。PWM信号应用中有一个非常重要的概念: 占空比(Duty Cycle)。那么什么是占空比呢?

占空比 f = t/T 

t:   高电平持续时间

T:  周期

1.2 PWM的应用

1)  实现模拟信号输出。其实现方法是: 使输出的PWM通过一个滤波电路,将PWM转变成连续的模拟信号

2)  实现直流电机调速,控制步进电机步长,舵机旋转角度等

3)控制LED或者蜂鸣器的引脚电平,使其按照一定的规律工作

1.3 在Arduino中使用PWM

       在Arduino板卡中,只有部分引脚可以输出PWM,这些引脚在扩展插槽上有标识符(~)。一个使用PWM功能的案例:

Step - 1:   配置引脚为输出模式

pinMode( pin,OUTPUT);

Step - 2: 改变占空比参数,控制输出信号的高电平时长

 analogWrite( pin,  para); 

上述伪代码中,para为占空比参数,其范围为(0 ~ 255 ),数值越大,占空比越大。在Arduino UNO 板卡中,一个PWM的周期为: 2ms左右

2.硬件

2.1 硬件结构

1) Arduino UNO主控板,实现PWM波功能,用于控制灯的状态

2)led灯珠, 指示灯

3)一个500欧姆电阻,限流作用

4)面包板,方便导线连接

5)杜邦线若干,用于连接元器件

2.2 线路连接

建议LED的线路连接方式  

LED控制引脚与Arduino主板的线路对应关系

Arduino IOLED trigger IO注释
PIN-3LED负端口

3 软件

3.1 编译和下载代码

3.2 详细代码

/*
Copyright  2024-2029. All rights reserved.
文件名     : breath_led
作者       : tangmingfei2013@126.com
版本       : V1.0
描述       : 呼吸灯
其他       : 无
日志       : 初版V1.0 2024/2/18  
文档路径   : 
*/
#include <MsTimer2.h>

#define  LEDPIN   3

void setup ()
{
  pinMode(LEDPIN,OUTPUT);
}
 
void loop()
{
  //循环语句,控制PWM亮度的增加
  for (int a=0; a<=255;a++)
  {
    analogWrite(LEDPIN,a);
    delay(5);      //当前亮度级别维持的时间,单位毫秒
  }

  //循环语句,控制PWM亮度减小 
  for (int a=255; a>=0;a--)
  {
    analogWrite(LEDPIN,a);
    delay(5);     //当前亮度的维持的时间,单位毫秒  
  }

  delay(100);//完成一个循环后等待的时间,单位毫秒
}


4 测试

4.1 灯的变化测试

编译代码后,下载到板卡中,可以看到led由暗到亮,由亮到暗的变化特征

4.2 使用逻辑分析仪看波形

1)亮度大的波形

2)亮度中等波形

3)亮度暗时波形

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1454151.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Nginx 正向代理、反向代理

文章目录 前言1. 正向代理1.1 概念1.2 逻辑图1.3 使用场景 2. 反向代理2.1 概念2.2 逻辑图2.3 使用场景 前言 正向代理主要是用来解决访问限制问题&#xff1b;反向代理则是提供负载均衡、安全防护等作用 1. 正向代理 1.1 概念 正向代理是一个位于客户端和目标服务器之间的代理…

echarts图表中的基本设置参数

取消显示坐标值 axisLabel: { show: false} 取消坐标轴刻度线 axisTick: { show: false} 取消网格线 splitLine: { show: false } 去除y轴的线 //写在yAxis里面 axisLine:{show:false},axisTick:{show:false},去除y轴轴线&#xff08;背景线&#xff09; splitLine…

【PyQt】在PyQt5的界面上集成matplotlib绘制的图像

文章目录 0 前期教程1 概述2 matplotlib2.1 库导入2.2 图片的各个部分解释2.3 代码风格2.4 后端 3 集成matplotlib图像到pyqt界面中3.1 使用到的模块3.2 理解Qt Designer中的“控件提升”3.3 界面与逻辑分离的思路3.4 扩展 0 前期教程 【PyQt】PyQt5进阶——串口上位机及实时数…

[HTML]Web前端开发技术26(HTML5、CSS3、JavaScript )JavaScript基础——喵喵画网页

希望你开心&#xff0c;希望你健康&#xff0c;希望你幸福&#xff0c;希望你点赞&#xff01; 最后的最后&#xff0c;关注喵&#xff0c;关注喵&#xff0c;关注喵&#xff0c;佬佬会看到更多有趣的博客哦&#xff01;&#xff01;&#xff01; 喵喵喵&#xff0c;你对我真的…

Java并发基础:ConcurrentSkipListSet全面解析!

内容概要 ConcurrentSkipListSet类在多线程环境下&#xff0c;它能够轻松应对大量的插入、删除和查找操作&#xff0c;同时保持数据的完整性和一致性&#xff0c;其内部基于跳表数据结构的实现&#xff0c;确保了即使在处理大规模数据时&#xff0c;也能具有出色的性能表现。 …

什么是抖音小店?什么是直播带货?一篇详解!

大家好&#xff0c;我是电商糖果 随着抖音卖货的火爆&#xff0c;不少朋友都有抖音卖货的想法。 但是会有很多人搞不清什么是抖音小店&#xff1f;什么是直播带货&#xff1f; 糖果这里就给大家详细讲解一下&#xff0c;看看普通人最适合做哪个。 什么是抖音小店&#xff1f…

linux系统Grafana关联zabbix显示

Grafana关联zabbix 服务器下载浏览器配置开启zabbix插件配置zabbix数据源可视化Zabbix数据 服务器下载 grafana-cli plugins list-remote grafana-cli plugins list-remote|grep -i zabbix grafana-cli plugins install alexanderzobnin-zabbix-appsystemctl restart grafana-…

Open CASCADE学习|曲线的切线

今天要实现的功能是在曲线的终点处沿切线方向延长该曲线。为了解决这个问题&#xff0c;需要求解该曲线在终点处的坐标值以及切矢量。问题转化为&#xff1a;已知曲线TopoDS_Edge aE&#xff0c;求其在终点处的坐标值及切线方向向量。 首先&#xff0c;将TopoDS_Edge对象转化为…

不同品牌和种类的电容与电感实测对比(D值、Q值、ESR、X)

最近买了个LCR电桥&#xff0c;就想测一下手头上的各种电容电感的参数&#xff0c;对比一下。 测试设备是中创ET4410&#xff0c;测量的参数有&#xff1a;电容值、电感值、D(损耗角正切值)、Q(品质因数)、ESR(等效串联电阻)、X(电抗&#xff0c;通常表示为感抗XL或容抗XC)。 …

20. Qt 表格控件tableWidget的使用(1)

目录 前言&#xff1a; 内容&#xff1a; 1. 界面 2. 代码 参考&#xff1a; 前言&#xff1a; 学习表格控件tableWidget的学习记录1&#xff0c;主要是用代码实现表格本身的设计&#xff08;上篇&#xff09; 内容&#xff1a; 1. 界面 ui文件添加tableWidget控件&a…

C语言学习day16:二维数组

二维数组格式&#xff1a; 数据类型 数组名[行][列] { {值1&#xff0c;值2}, {值3&#xff0c;值4} } 代码&#xff1a; int arr[2][3] { {1,2,3},{4,5,6} }; 那么我们怎么找它的下标呢&#xff0c;我先上一副图&#xff1a; 假如我现在要找1&#xff0c;那么它…

惠普打印机驱动安装

一、下载驱动 支持 --> 软件与驱动程序 https://www.hp.com/cn-zh/home.html 选择打印机 输入打印机型号&#xff0c;下拉框选择自己的打印机型号 打印机型号正常在打印机的正面会有 往下滑选择安装软件和全功能/基本功能驱动程序-仅支持打印和扫描功能 (1) 点击下载…

idea将springboot打包成jar包

打开idea->view->Tool Windows->Terminal 在控制台输入&#xff1a; mvn clean package

Matlab论文插图绘制模板第136期—极坐标气泡图

在之前的文章中&#xff0c;分享了Matlab笛卡尔坐标系的气泡图的绘制模板&#xff1a; 进一步&#xff0c;再来分享一下极坐标气泡图。 先来看一下成品效果&#xff1a; 特别提示&#xff1a;本期内容『数据代码』已上传资源群中&#xff0c;加群的朋友请自行下载。有需要的朋…

【全网首篇】Copyparty 路径遍历漏洞 CVE-2023-37474 漏洞分析

Copyparty是一个便携式文件服务器 Copyparty 路径遍历漏洞 CVE-2023-37474 漏洞分析&#xff0c;这个漏洞研究了一些时间&#xff0c;不过这个不难 漏洞复现分析环境 Copyparty测试版本&#xff1a;1.8.0和1.8.2 系统&#xff1a;Windows10 和 Linux 运行环境&#xff1a;…

helm部署gitlab-runner问题解决

关于.gitlab-ci.yml中build镜像时&#xff0c;docker守护进程未启动错误 问题截图 解决方法 conf.toml添加 [[runners.kubernetes.volumes.host_path]]name "docker"mount_path "/var/run/docker.sock"read_only falsehost_path "/var/run/dock…

PyCharm - Run Debug 程序安全执行步骤

PyCharm - Run & Debug 程序安全执行步骤 1. Run2. DebugReferences 1. Run right click -> Run ‘simulation_data_gene…’ or Ctrl Shift F10 2. Debug right click -> Debug ‘simulation_data_gene…’ 在一个 PyCharm 工程下&#xff0c;存在多个 Pytho…

Spin Image自旋图像描述符可视化以及ICP配准

一、Spin Image自旋图像描述符可视化 C #include <pcl/point_types.h> #include <pcl/point_cloud.h> #include <pcl/search/kdtree.h> #include <pcl/io/pcd_io.h> #include <pcl/features/normal_3d_omp.h>//使用OMP需要添加的头文件 #inclu…

【机器学习笔记】12 聚类

无监督学习概述 监督学习 在一个典型的监督学习中&#xff0c;训练集有标签&#x1d466; &#xff0c;我们的目标是找到能够区分正样本和负样本的决策边界&#xff0c;需要据此拟合一个假设函数。无监督学习 与此不同的是&#xff0c;在无监督学习中&#xff0c;我们的数据没…

Json格式文件

1.把Java对象转换成Json格式 1.1.导入依赖 这里推荐一个插件Jackson&#xff0c;其提供的类可以让Java的类转换成Jason格式文件 <dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><vers…