PWM이란?
- Pulse Width Modulation(펄스 폭 변조)
- 디지털 출력으로 아날로그 회로를 제어하는 기법
(GPIO핀은 디지털이기때문에 PWM을 이용하여 아날로그 신호를 제어한다)
duty : 한 주기(T)동안 HIGH가 차지하는 비율
ex) duty cycle = 50%이면 2.5V의 효과를 낼 수 있다.
PWM으로 Servo motor(SG90) 제어
핀 연결
Servo motor Raspberry Pi
Orange 12 pin
VCC 2 pin
GND 6 pin
라즈베리파이3 GPIO Pin 구조는 http://cccding.tistory.com/89 확인
servo.c
#include<stdio.h>
#include<wiringPi.h>
#include<softPwm.h>
#define SERVO 1
int main()
{
char str;
if(wiringPiSetup()==-1)
return 1;
softPwmCreate(SERVO,0,200);
while(1)
{
fputs("select c ,r , l , q : " , stdout);
scanf("%c" , &str);
getchar();
if(str=='c') softPwmWrite(SERVO,15); //0 degree
else if(str=='r') softPwmWrite(SERVO,24); //90 degree
else if(str=='l') softPwmWrite(SERVO,5); //-90 degree
else if(str=='q') return 0;
}
return 0;
}
컴파일 : gcc servo.c -o servo -lwiringPi
실행 : sudo ./servo
결과
'Embedded > Raspberry Pi3' 카테고리의 다른 글
[Raspberry Pi3] 라즈베리파이3 OS 라즈비안 설치 (0) | 2017.01.06 |
---|---|
[Raspberry Pi3] 라즈베리파이3 UART 시리얼 통신 (1) | 2017.01.04 |
[Raspberry Pi3] 라즈베리파이3 PWM을 이용한 LED 제어 (0) | 2017.01.04 |
[Raspberry Pi3] 라즈베리파이3 wiringPi 라이브러리설치 (0) | 2017.01.03 |
[Raspberry Pi3] 라즈베리파이3 GPIO Header (0) | 2017.01.03 |