樹莓派(Linux系統)gpio 基於wiringPi輸出pwm信號

本文介紹了樹莓派的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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章