18. GPIO-PWM 실험
이전 강좌에서는 GPIO의 입출력에 관해서 C 언어를 이용해서 프로그램을 작성하는 방법에 대해서 알아 보았다. 이번 강좌에서는 GPIO 출력 포트를 PWM 신호로 출력하는 방법에 대해서 알아 보도록 한다.
16강좌에서 언급했듯이 GPIO 1 포트가 PWM 출력을 지원하기 때문에, 제작한 테스트 보드의 LED 2에 PWM 신호를 출력하여 단순히 ON/OFF 되는 것이 아니고, 밝기가 밝아 지거나 어두워 지는 코드를 작성해 보기로 한다.
$ nano pwm.c
|
#include
#include
int main(void)
{
int pwm;
if(wiringPiSetup() == -1){
printf("Please setup wiringPi");
return 1;
}
pinMode(1, PWM_OUTPUT); //GPIO 1 -> PWM_OUTPUT
while(1){
for(pwm = 0; pwm < 1024; pwm++){
pwmWrite(1, pwm); // pwm 출력
delay(1);
}
for(pwm = 1023; pwm > 0; pwm--){
pwmWrite(1, pwm);
delay(1);
}
}
return 0; |
위 코드에서 새로 나온 함수 하나가 나온다.
pwmWrite(pin, value)는 PWM 신호를 해당 핀에 출력을 하는 함수로, value 값은 0 ~ 1023로 1024 레벨로 출력이 가능하다.
pinMode(1, PWM_OUTPUT)에서 볼 수 있듯이, 이전 강좌에서 GPIO 핀 모드를 INPUT 혹은 OUTPUT으로 설정을 하는 것이 아니고, PWM_OUTPUT이라고 정의해 준다.
에디터를 종료하면서 저장을 한 후에, 빌드 해 보자.
$ gcc pwm.c –o pwm –I/usr/local/include –L/usr/local/lib –lwiringPi
$ sudo ./pwm
별 문제 없다면 빌드가 정상적으로 완료되고, 실행을 시켜 보면 LED 2(OUTPUT 1)가 밝아 졌다가 어두워 지는 동작을 반복할 것이다.
아래 동영상을 한번 확인해 보자.