Git例程源码仓库:/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;
使用到的函数:
c代码:
Git例程源码仓库:/ZhiliangMa/raspberry.git
wiringPi编码的1引脚,led亮度渐变。
#include <wiringPi.h>int hpwmLed = 1;// 定义使用wiringPi编码的1引脚int main(void){int xnum = 0;wiringPiSetup();// 使用wiring编码去初始化GPIO序号pinMode(hpwmLed, PWM_OUTPUT); // 设置GPIO电气属性为pwm输出pwmSetRange(1024); // pwm脉宽范围 0~1024pwmSetClock(75);// 250Hz,19.2MHz / 75 / 1024 = 250Hzwhile(1){for(xnum = 0; xnum <= 1024; xnum++){pwmWrite(hpwmLed,xnum);delay(2);// 延时2ms}}return 0;}