【配線図】
サーボモーターからの配線をPCA9685の15番に接続します。
サーボモーター(SG-90)のデータシートより
PWMperiod:20ms(50Hz) ←freqencyは50がよさそう
Duty cycle:0.5~2.4ms
Operating speed: 0.12 s/60 degree
ライブラリ
adafruit_servokit
kit = adafruit_servokit.ServoKit(channels=16):PCA9685は16ch
kit.servo[15].set_pulse_width_range(500, 2400)
※PCA9685の15番ピンに接続したサーボモーター(SG90)のDuty cycleは0.5ms~2.4msなので上記の設定となる。
kit.servo[15].angle = 0
※PCA9685の15番ピンに接続したサーボモーター(SG90)の角度を0°にする。
servo.py | 備考 |
---|---|
import time import board import busio from adafruit_pca9685 import PCA9685 import RPi.GPIO as GPIO i2c = busio.I2C(board.SCL, board.SDA) pwm = PCA9685(i2c) pwm.frequency = 50 GPIO.setmode(GPIO.BCM) from adafruit_servokit import ServoKit kit = ServoKit(channels=16) kit.servo[15].set_pulse_width_range(500, 2400) kit.servo[15].angle = 0 time.sleep(2) for i in range(180): kit.servo[15].angle = i time.sleep(0.01) for i in range(180): x = 180 - i kit.servo[15].angle = x time.sleep(0.01) GPIO.cleanup() | I2Cオブジェクトの作成 周波数は50Hz adafruit_servokitを使用 Duty cycle:0.5~2.4ms 0°にして 2秒待つ 0~180°を 1°ずつ増やす 0.01秒ごとに 180~0°へ 1°ずつ減らす 0.01秒ごとに ピン解放 |
adafruit_pca9685でPCA9685.set_pwm()が使えない。
pwm.set_pwm(チャンネル, 0, パルス幅) のように使うらしいが、、
0 件のコメント:
コメントを投稿