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

Git例程源码仓库https://github.com/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例程源码仓库https://github.com/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输出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值