【夏休みの自由研究】RaspberryPi3でサーボモーター(SG-90)を動かしてみた

Facebook にシェア
Pocket
LINEで送る
このエントリーを Google ブックマーク に追加

イマサラナガラ

[amazonjs asin=”B01CSFZ4JG” locale=”JP” title=”Raspberry Pi3 Model B ボード&ケースセット (Element14版, Clear)-Physical Computing Lab”]

前提

Pyenvをホームディレクトリに構築 でpython環境を構築した後に、

pip install RPi.GPIO

でインストール。

回路図

sg-90_ブレッドボード

ソースコード

#!/usr/bin/python
# coding: utf-8 

import RPi.GPIO as GPIO
import time
import signal
import sys


def exit_handler(signal, frame):
        servo.ChangeDutyCycle(2.0)
        time.sleep(0.5)
        servo.stop()
        GPIO.cleanup()
        sys.exit(0)

def rotate(servo, angle, sleep_time=1):
    """
    回転する
    """
    dc =(1.0 + angle/180.0)/20.0*100.0
    servo.ChangeDutyCycle(dc)
    time.sleep(sleep_time)


def refresh(servo):
    """
    終わったら初期化する
    """
    servo.ChangeDutyCycle(2.0)
    time.sleep(1.0)
    servo.stop()


if __name__ == '__main__':

    signal.signal(signal.SIGINT, exit_handler)

    GPIO.setmode(GPIO.BCM)
    gp_out = 25
    GPIO.setup(gp_out, GPIO.OUT)
    servo = GPIO.PWM(gp_out, 50)


    # 初期化
    servo.start(0.0)

    houkou  = 1
    angle = 0

    while True:

        rotate(servo, angle, 0.5)

        if angle >= 270:
            houkou = -1
        elif angle <= -90:
            houkou = 1

        angle += houkou * 30

    refresh(servo)
    GPIO.cleanup()

実行後

回転させただけ。