树莓派教程

您所在的位置:网站首页 gpio输出pwm波 树莓派教程

树莓派教程

2024-07-14 12:46| 来源: 网络整理| 查看: 265

Git例程源码仓库:https://github.com/ZhiliangMa/raspberry.git

使用到的硬件:

led,200Ω左右的电阻、杜邦线。

 

上一节使用最基本的 GPIO数字输出,led亮了,可如果想要调整led亮度怎么办?

PWM简介

PWM脉宽调制技术广泛存在于现实生活中,例如TFT显示屏的背光亮度调整,电机的速度控制,开关电源输出电压的控制。

相比于早期的线性调制,PWM具有效率高、电路简单等优点。

图中a)可以类比于灯的亮度/电机的速度/电源输出的电压,b)就对应为PWM的脉冲宽度。

如果想要灯变亮一些,就增大PWM的占空比;如果想要灯暗一些,就减小PWM的占空比。

 

树莓派的硬件PWM

树莓派的硬件pwm只有l路,也就是 物理引脚的12引脚,wiringPi引脚的1引脚。

树莓派内部pwm发生器的基频为19.2MHz,输出频率 freq(Hz) = 19200000 / divisor / range;

使用到的函数:

函数语句函数功能wiringPiSetup();使用wiring编码去初始化GPIO序号pinMode(int pin, int mode);设置GPIO电气属性pwmSetRange(unsigned int range);设置pwm脉宽范围,range与divisor共同决定pwm输出频率pwmSetClock(int divisor);设置pwm分频系数,range与divisor共同决定pwm输出频率pwmWrite(int pin, int value);输出pwm值,到pwm引脚delay(unsigned int howLong);延时 xx ms

c代码:

Git例程源码仓库:https://github.com/ZhiliangMa/raspberry.git

wiringPi编码的1引脚,led亮度渐变。

#include int hpwmLed = 1; // 定义使用wiringPi编码的1引脚 int main(void) { int xnum = 0; wiringPiSetup(); // 使用wiring编码去初始化GPIO序号 pinMode(hpwmLed, PWM_OUTPUT); // 设置GPIO电气属性为pwm输出 pwmSetRange(1024); // pwm脉宽范围 0~1024 pwmSetClock(75); // 250Hz,19.2MHz / 75 / 1024 = 250Hz while(1) { for(xnum = 0; xnum


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3