#!/usr/bin/env python
import RPi.GPIO as GPIO
# Set the GPIO pins by physical pin number
GPIO.setmode(GPIO.BOARD)
Servo_pin = 16
# Set the GPIO pins by BCM pin number
# GPIO.setmode(GPIO.BCM)
# Servo_pin = 23
GPIO.setup(Servo_pin, GPIO.OUT)
# PWM (Pulse Width Modulation) の設定
# SG90 の周波数は50Hz (周期20ms)
Servo = GPIO.PWM(Servo_pin, 50)
from time import sleep
# 指定角度 (単位 : 度) にサーボを定位
def servo_angle(degree):
# 角度 degree に対応する Duty比 duty
duty = 9.5 * degree / 180 + 7.25
# デューティ比を変更
Servo.ChangeDutyCycle(duty)
#0.3秒間待つ
sleep(0.3)
import sys
# exit プロセス
def destroy():
#サーボモータをストップ
servo_angle(0)
Servo.stop()
#GPIOをクリーンアップ
GPIO.cleanup()
#プログラムを終了
sys.exit()
# 角度 0° (デューティ比 7.25) からスタート
deg = 0
Servo.start(7.25)
sleep(0.3)
# while文で無限ループ
while True:
try:
servo_angle(deg)
sleep(0.3)
if deg < 90 :
deg += 30
else :
deg = -90
# Ctrl + C で,プログラム終了
except KeyboardInterrupt:
destroy()
|