소스 뷰어
import RPi.GPIO as GPIO
from time import sleep
# GPIO 핀 번호 설정 (예: GPIO18)
ESC_PIN = 18
# PWM 신호 범위 설정
FREQUENCY = 50 # PWM 주파수 (50Hz)
MIN_DUTY_CYCLE = 5 # 1ms 신호 (5% Duty Cycle)
MAX_DUTY_CYCLE = 10 # 2ms 신호 (10% Duty Cycle)
# GPIO 및 PWM 초기화
GPIO.setmode(GPIO.BCM) # BCM 핀 넘버링 사용
GPIO.setup(ESC_PIN, GPIO.OUT) # ESC 핀이 출력으로 설정
pwm = GPIO.PWM(ESC_PIN, FREQUENCY) # PWM 객체 생성
pwm.start(0) # PWM 신호 초기화 (Duty Cycle = 0)
def calibrate_esc():
try:
print("ESC 캘리브레이션 시작")
# 최대 신호 전송
print("최대 신호 전송 중...")
pwm.ChangeDutyCycle(MAX_DUTY_CYCLE)
sleep(2) # ESC가 최대 신호를 받아들일 때까지 대기
# 최소 신호 전송
print("최소 신호 전송 중...")
pwm.ChangeDutyCycle(MIN_DUTY_CYCLE)
sleep(2) # ESC가 최소 신호를 받아들일 때까지 대기
print("ESC 캘리브레이션 완료!")
except KeyboardInterrupt:
print("ESC 캘리브레이션 중단")
finally:
pwm.ChangeDutyCycle(0) # 신호 중지
pwm.stop() # PWM 종료
GPIO.cleanup() # GPIO 상태 초기화
# 실행
if __name__ == "__main__":
calibrate_esc()