2018年7月29日日曜日

ラズパイで PWM で Python3 でサーボモーターを制御

環境

  • Raspberry Pi 3 Model B
  • Raspbian GNU/Linux 9.4 (stretch)
  • サーボモーター: SG90

wiringpi2 インストール

$ sudo pip3 install wiringpi2

Python3 コード

SG90 の信号線は Raspberry Pi の GPIO18 に接続しています。

DUTY_MIN, DUTY_MAX の値は適当に。。。

あと、このスクリプトは root 権限で実行しないと、Raspberry Pi が固まります。

#!/usr/bin/env python3

import wiringpi
import time

PWM_PIN = 18

DUTY_MIN = 45
DUTY_MAX = 105

wiringpi.wiringPiSetupGpio()
wiringpi.pinMode(PWM_PIN, wiringpi.GPIO.PWM_OUTPUT)
wiringpi.pwmSetMode(wiringpi.GPIO.PWM_MODE_MS)
wiringpi.pwmSetClock(375)

while True:
    for duty in range(DUTY_MIN, DUTY_MAX):
        wiringpi.pwmWrite(PWM_PIN, duty)
        time.sleep(0.01)

    for duty in range(DUTY_MAX, DUTY_MIN, -1):
        wiringpi.pwmWrite(PWM_PIN, duty)
        time.sleep(0.01)