本文介紹了樹莓派的gpio引腳輸出pwm波用以控制led燈亮度的方法,使用的是基於樹莓派官方系統中自帶的wiringPi庫函數實現的。
樹莓派中輸出pwm波有兩種方式:一種是硬件pwm波,一種是軟件模擬的pwm波。軟件模擬的pwm可以自定義pwm的週期。
1.wiringPi函數接口模擬pwm
1.1代碼源碼
#include <stdio.h>
#include <wiringPi.h>
#include <softPwm.h>
#include <unistd.h>
#include <stdlib.h>
#define BACK_LIGHT (17)
int main(int argc, char *argv[])
{
if(-1 == wiringPiSetup()){
printf("wirong pi init fail\n");
return -1;
}
int i=0;
softPwmCreate(BACK_LIGHT, 0, 100);// 生成一個初始值爲0,週期爲10ms的pwm控制引腳17(週期=0.1*第三個參數)
if(1 == argc){
for(i = 0; i < 100; i++)
{
softPwmWrite(BACK_LIGHT, i);
//usleep(5000);
sleep(1);
}
}
else{
i = atoi(argv[1]);
printf("i = %d\n", i);
softPwmWrite(BACK_LIGHT, i);
sleep(4);
printf("end\n");
}
return 0;
}
1.2代碼的編譯方式
sudo gcc gpio_pwm.c -lpthread -lwiringPi
1.3執行
sudo ./a.out