失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 树莓派教程 - 1.2 树莓派GPIO库wiringPi 软件PWM

树莓派教程 - 1.2 树莓派GPIO库wiringPi 软件PWM

时间:2023-05-03 03:08:22

相关推荐

树莓派教程 - 1.2 树莓派GPIO库wiringPi 软件PWM

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

使用到的硬件:

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

上一节使用硬件PWM来控制led亮度,可树莓派的硬件PWM引脚只有1路,在实际应用中,1路PWM几乎干不了什么

庆幸的是wiringPi库提供了一个软PWM功能。可以将任意GPIO都复用为PWM,但缺点是会增加CPU负担。

树莓派的软件PWM

软件PWM默认频率是100Hz,一般的pwm范围设置为100,所以一般的pwm分辨率为0.1ms,太大会增加CPU开销

int softPwmCreate (int pin, int initialValue, int pwmRange) ; //pin引脚,initialValue初始PWM值,pwmRange输出pwm范围

用软件PWM,实现的呼吸灯:

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

include <wiringPi.h>#include <softPwm.h>int spwmLed = 1; // 定义使用wiringPi编码的1引脚int main(void){int xnum = 0;wiringPiSetup();// 使用wiring编码去初始化GPIO序号softPwmCreate (spwmLed, 0, 100); // 设置wiringPi编码的1引脚为软件PWM输出while(1){for(xnum = 0; xnum <= 100; xnum++){softPwmWrite(spwmLed, xnum);delay(15); // 延时15ms}for(xnum = 99; xnum > 0; xnum--){softPwmWrite(spwmLed, xnum);delay(15); // 延时15ms}}return 0;}

应用要点

由于软件PWM会很大程度上占用树莓派的CPU开销,挤压其他任务的调度。

而且性能一般般,准确性查,几KHz以上的高频PWM几乎是输出不了的。

所以建议应用电机控制的玩家,外挂一片单片机/PCA9685,使用总线通信方式去控制其他外设做PWM输出。

如果觉得《树莓派教程 - 1.2 树莓派GPIO库wiringPi 软件PWM》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。