嵌入式人工智能(9-基于树莓派4B的PWM-LED呼吸灯)

news/2024/8/26 11:27:09 标签: 嵌入式硬件, 边缘计算

1、PWM简介

(1)、什么是PWM

脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是在具有惯性的系统中利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换和电机控速等的许多领域中。

(2)、PWM参数

        (a)频率 = 1 / Ts(是指1秒钟内信号从高电平到低电平再回到高电平的次数(一个周期);)

        (b)占空比 = Ton /  Ts(有效电平与周期之比

        (c)分辨率 = 占空比变化步距

2、控制亮度

通过PWM可以改变输出电压,RPi.GPIO库内置了PWM的相关方法,通过它3任意一个GPIO引脚都能进行PWM输出。LED灯的接线仍然不变,接第11脚,GPIO17。

3、代码

import RPi.GPIO as GPIO
import time

PWM_LED = 11
# 指定编号规则为BOARD
GPIO.setmode(GPIO.BOARD)

# 将11号引脚设置为输出模式
GPIO.setup(PWM_LED, GPIO.OUT)

# 创建一个 PWM 实例,需要两个参数:
# 第一个是GPIO端口号,这里我们用12号
# 第二个是频率(Hz),频率越高LED看上去越不会闪烁,相应对CPU要求就越高,设置合适的值就可以
pwm = GPIO.PWM(PWM_LED, 80)

# 启用 PWM,参数是占空比,范围:0.0 <= 占空比 >= 100.0
pwm.start(0)

try:
    while True:
        # 电流从小到大,LED由暗到亮
        for i in range(0, 101, 1):
            # 更改占空比,
            pwm.ChangeDutyCycle(i)
            time.sleep(0.02)

        # 再让电流从大到小,LED由亮变暗
        for i in range(100, -1, -1):
            pwm.ChangeDutyCycle(i)
            time.sleep(0.02)

# 捕捉 Ctrl+C 强制中断的动作,以便于清理GPIO引脚
except KeyboardInterrupt:
    pass

# 停用 PWM
pwm.stop()

# 清理GPIO引脚
GPIO.cleanup()

http://www.niftyadmin.cn/n/5558816.html

相关文章

Java web从入门到精通 (第 2版)中文电子版

前言 《Java Web从入门到精通&#xff08;第2版&#xff09;》共分21章&#xff0c;包括Java Web应用开发概述、HTML与CSS网页开发基础、JavaScript脚本语言、搭建开发环境、JavaBean技术、Servlet技术、过滤器和监听器、Hibernate高级应用、Java Web的数据库操作、EL&#xf…

Fastgpt本地或服务器私有化部署常见问题

一、错误排查方式 遇到问题先按下面方式排查。 docker ps -a 查看所有容器运行状态,检查是否全部 running,如有异常,尝试docker logs 容器名查看对应日志。容器都运行正常的,docker logs 容器名 查看报错日志带有requestId的,都是 OneAPI 提示错误,大部分都是因为模型接…

Abp(PasteTemplate)项目如何添加对审计日志Auditing的支持

PasteTemplate作为Abp vNext项目的精简版&#xff0c;也就是阉割版&#xff01; 这个精简的原则是能不要的都不要&#xff0c;所以Auditing也很荣幸的被移除了&#xff01; 如果有需求&#xff0c;需要加回去&#xff0c;咋办? 我的项目是Volo.Abp的8.2.0版本为例 (我的项…

<Rust>egui部件学习:如何在egui窗口中添加按钮button以及标签label部件?

前言 本专栏是关于Rust的GUI库egui的部件讲解及应用实例分析&#xff0c;主要讲解egui的源代码、部件属性、如何应用。 环境配置 系统&#xff1a;windows 平台&#xff1a;visual studio code 语言&#xff1a;rust 库&#xff1a;egui、eframe 概述 本文是本专栏的第二篇博…

libwebrtc.a+exosip连接fS 环境部署tips

//运行FS服务器 sudo ./freeswitch -nc -nonat //公网sudo ./freeswitch //运行客户端 sudo ./fs_cli //加载模块 load mod_av load mod_verto0.Invite交互过程 1.fs码率设置 2.用户密码改动 3.数字签名的摘要 4.FS收不到ACK 5.公网部署 6.查看frewswitch都占用哪些端口 7.日志…

django报错(三):No crontab program或got an unexpected keyword argument ‘user’

Crontab是linux系统上的定时管理模块&#xff0c;简单配置&#xff0c;灵活使用。但是要在windows使用必须借助Cygwin等虚拟工具&#xff0c;否则会报错“No crontab program”。如下图&#xff1a; python-crontab是其提供了python模块对crontab的访问&#xff0c;即可以通过p…

权威认可 | 海云安开发者安全助手系统通过信通院支撑产品功能认证并荣获信通院2024年数据安全体系建设优秀案例

近日&#xff0c;2024全球数字经济大会——数字安全生态建设专题论坛&#xff08;以下简称“论坛”&#xff09;在京成功举办。由全球数字经济大会组委会主办&#xff0c;中国信息通信研究院及公安部第三研究所共同承办&#xff0c;论坛邀请多位专家和企业共同参与。 会上颁发…

文件访问:C/C++/MFC

文章目录 1. C语言1.1 打开并读取文件1.2 写入文件1.3 读取二进制文件1.4 写入二进制文件1.5 文件指针的移动 2. C2.1 包含头文件2.2 打开文件2.3 检查文件是否成功打开2.4 读取文件2.5 写入文件2.6 关闭文件2.7 文件指针的移动和获取位置2.8 实例 3. C语言和C文件打开模式4. M…