#include // 定义控制LED灯的GPIO引脚,使用GPIO0
#define PWM_PIN 0
int main(void)
{
int bright ;
printf("wiringPi-C Software PWM test program\n") ;
// 初始化
wiringPiSetup();
pinMode(PWM_PIN, OUTPUT);
softPwmCreate(PWM_PIN, 0, 100);
while(1) {
for(bright = 0; bright < 100; bright++) {
softPwmWrite(PWM_PIN, bright);
delay(10);
}
for(bright = 100; bright >= 0; bright--) {
softPwmWrite(PWM_PIN, bright);
delay(10);
}
}
return 0 ;
}
```
保存,编译,运行(可不加sudo),和硬件PWM操作类似,注意连接LED灯的GPIO脚已经变成GPIO0,接线要对。
### 呼吸灯(Python版)
#### 使用硬件PWM实现
代码如下:
```python
#!/usr/bin/env python
# coding=utf-8
import wiringpi
INPUT = 0
OUTPUT = 1
PWM_OUTPUT = 2
GPIO_CLOCK = 3
SOFT_PWM_OUTPUT = 4
SOFT_TONE_OUTPUT= 5
PWM_TONE_OUTPUT = 6
LOW = 0
HIGH = 1
PWM_PIN = 1
// 初始化
wiringpi.wiringPiSetup()
wiringpi.pinMode(PWM_PIN, PWM_OUTPUT)
while 1:
for bright in range(0, 1000):
wiringpi.pwmWrite(PWM_PIN, bright)
wiringpi.delay(1)
for bright in range(1000, 0, -1):
wiringpi.pwmWrite(PWM_PIN, bright)
wiringpi.delay(1)
```
运行程序:
```bash
sudo python pwm.py
```
实验效果和C语言一样,图见上面C语言部分。
#### 使用软件PWM实现
代码如下:
```python
#!/usr/bin/env python
# coding=utf-8
INPUT = 0
OUTPUT = 1
PWM_OUTPUT = 2
GPIO_CLOCK = 3
SOFT_PWM_OUTPUT = 4
SOFT_TONE_OUTPUT= 5
PWM_TONE_OUTPUT = 6
LOW = 0
HIGH = 1
import wiringpi
// 设置LED控制引脚,GPIO0
PWM_PIN = 0
// 初始化
wiringpi.wiringPiSetup()
wiringpi.pinMode(PWM_PIN, OUTPUT)
wiringpi.softPwmCreate(PWM_PIN, 0, 100)
while 1:
for bright in range(0, 100):
wiringpi.softPwmWrite(PWM_PIN, bright)
wiringpi.delay(10)
for bright in range(100, 0, -1):
wiringpi.softPwmWrite(PWM_PIN, bright)
wiringpi.delay(10)
```
代码运行可以不加sudo,注意GPIO引脚已经改变为GPIO0,实验效果和C语言一样,图见上面C语言部分。
---
## 参考文献
* [WiringPi官方 Raspberry Pi Specifics](http://wiringpi.com/reference/raspberry-pi-specifics/)
* [wiringPi库的pwm配置及使用说明](https://www.cnblogs.com/miaoxiong/p/10556072.html)
== end ==