这篇文档主要介绍如何在WiringPi以及WiringPi-Python上使用软件PWM。
1. PWM舵机
舵机控制原理
舵机的基准信号都是周期为20ms,宽度为1.5ms。对应舵机的中间位置。
不同的宽度对应着舵机的不同角度,脉冲宽度对应的范围是0.5到2.5ms。
1 | 0.5ms -- 0度 |
360度模拟舵机工作原理与舵机相同。
1 | 0.5ms -- 逆时针最大转速 |
源码编译以及演示
说明
- 通过
gpio readall
可查看可用的引脚
1 | $ gpio readall |
引脚配置成普通IO输出
通过
softPwmCreate()
和softPwmWrite()
函数模拟PWM并控制
WiringPi源码以及编译
- 舵机在1800度、90度、0度之间来回切换,切换间隔为3S切换一次,周期为9S。
- 模拟舵机在顺时针转动,暂停转动和逆时针转动来回切换,切换间隔为3S切换一次,周期为9S。
1 |
|
编译命令
1 | $ gcc -o SoftPwm SoftPwm.c -lwiringPi -lpthread -lrt -lm -lcrypt |
WiringPi-Python源码
- 舵机先后在180度、90度和0度之间切换,时间间隔为3S。
- 模拟舵机在顺时针转动,暂停转动和逆时针转动之间切换,时间间隔为3S。
1 | import wiringpi as GPIO |
2. PWM RGB灯
控制原理
模块由3路PWM控制,分别各控制三色通道中的一个。通过控制三个通道的发光强度,合成不同的颜色。
源码编译以及演示
运行效果,红灯绿灯蓝灯白灯各亮起3秒。
说明
- 通过
gpio readall
可查看可用的引脚
1 | $ gpio readall |
引脚配置成普通IO输出
通过
softPwmCreate()
和softPwmWrite()
函数模拟PWM并控制
WiringPi源码以及编译
1 |
|
编译命令
1 | $ gcc -o SoftPwm SoftPwm.c -lwiringPi -lpthread -lrt -lm -lcrypt |
WiringPi-Python源码
1 | import wiringpi as GPIO |
其他颜色等可以自行尝试,配置不同的PWM就会产生不同的颜色。