라즈베리파이 서보모터 ( SG90 ) 제어
라즈베리파이 서보모터 ( SG90 ) 제어
라즈베리파이 서보모터 ( SG90 ) 제어
작성자 :
네오즈
1. SG90 테스트 회로 구성
( SG90 서보모터 1EA, , 빨강 전원선(+) / 갈색 Ground(-) / 오렌지색 (데이터) : GPIO 18번 연결 )
코드 작성 및 실행 방법은 "; 라즈베리파이 GPIO 포트 ( LED, 버튼 ) 제어 "; 가이드 참조
2. SG90 테스트 Python 코드
import RPi.GPIO as GPIO # RPi.GPIO에 정의된 기능을 GPIO라는 명칭으로 사용
import time # time 모듈
pin = 18 # Python(BCM) 18번 핀 사용
GPIO.setmode(GPIO.BCM)
GPIO.setup(pin,GPIO.OUT)
P = GPIO.PWM(pin,50) #PWM 펄스폭 변조, 크기를 50으로 지정
p.start(0)
try:
while True:
var = raw_input(“Enter L/R/C : “)
if var == ‘R’ or var == ‘r’ : # R 또는 r 입력되면 각도 Right 조정
print “Right”
p.ChangeDutyCycle(2.5) #Dutycycle을 인자로 받아 실행 중에
time.sleep(0.5)
elif var == ‘L’ or var == ‘l’ : # L 또는 l 입력되면 각도 Left 조정
print “Left”
p.ChangeDutyCycle(12.5)
time.sleep(0.5)
elif var == ‘C’ or var == ‘c’ : # C 또는 c 입력되면 각도 Center 조정
print “Center”
p.ChangeDutyCycle(7.5)
time.sleep(0.5)
except KeyboardInterrupt:
p.stop()
GPIO.cleanup()
3. SG90 테스트 C 코드
#include <stdio.h> // stdio.h 파일 포함( printf() 사용하기 위해 )
#include <wiringPi.h> // wiringPi.h 파일 포함
#include <softPwm.h>
#define SERVO 1 // wiringPi GPIO 1번 = Python(BCM) 18번
int main()
{
char str;
If(wiringPiSetup() == -1)
Return 1;
softPwmCreate(SERVO,0,200); // 주기를 200으로 하면 20ms 주기를 가지며, 20ms 마다
// 신호가 나오므로 50hz로 볼 수있다
while(1)
{
fputs(“select c(Center)/r(Right)/l(Left)/q(Quit) : “, stdout);
scanf(“%c”, &str);
getchar();
if(str == ‘C’ || str == ‘c’)
softPwmWrite(SERVO,15); // 0 degree
else if(str == ‘R’ || str==’r’)
softPwmWrite(SERVO,24); // 90 degree
else if(str == ‘L’ || str==’l’)
softPwmWrite(SERVO,5); // -90 degree
else if(str == ‘Q’ || str == ‘q’)
return 0;
}
return 0;
}
※ e4ds make에 등록된 자료는 e4ds와 지식 제공자(기업포함) 이외에는 상업화 용도로 사용할 수 없습니다. 영리 목적 이외의 사용 시 출처를 밝혀야 합니다.