ほとんど以下の記事そのままです。記事中でも言及されていますが、間違った情報が散見されるような気がするので、これで動きましたという意味でここにも掲載します。
もともとは以下のようにServoBlasterというライブラリを使用していましたが、Linuxカーネル変更の影響か、全く反応しなくなってしまって代替策を探してたどり着いています(jessieでもstretchでも動かなかったです)。
というわけでプログラムは以下の通り。
import time
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
gp_out = 4
GPIO.setup(gp_out, GPIO.OUT)
servo = GPIO.PWM(gp_out, 50)
servo.start(0.0)
for i in range(10):
servo.ChangeDutyCycle(2.5)
time.sleep(0.5)
servo.ChangeDutyCycle(12.0)
time.sleep(0.5)
GPIO.cleanup()
参考: Arduinoでサーボ制御