CircuitPython 10行プログラミング Step2 (8) サーボ・モータ②

 前回、ラジコン用サーボ・モータを複数個つないで動作を確認しました。I/Oポートはたくさんあるので、10個でもつないでいけますが、配線が煩雑になります。そこで、16チャネルのPWM出力をもち、I2Cバスで接続できるPCA9685ボードを利用します。Adafruitのブレークアウト・ボードで、スイッチサイエンスから入手しました。

 ピンヘッダは、ユーザがはんだ付けします。I2Cバスは2か所に同じ信号が出ているので、一方には付属しているピンヘッダを、もう片方はGroveのコネクタをはんだ付けしました。

接続

 マイコン・ボードGrand Centralとは、Groveコネクタで接続します。マイコン・ボードには、3個のGroveコネクタを配線したサブボードを利用しました(自作)。PCA9685ボードのV+はマイコン・ボードの5Vへつなぎました。
 サーボ・モータとの接続は、ケーブルの色に合わせて、シルク印刷で書かれているPWM(黄色)、V+(赤色)、GND(茶色)に合わせてコネクタを挿しこみます。

プログラム

 Adafruitの解説ページのサンプル・プログラムを参考にプログラムを作成しました。

 手持ちのサーボ・モータが七つあったので、全部つなぎました。問題なく動いているように見えます。

"""Simple test for a standard servo on channel 0 and a continuous rotation servo on channel 1."""
import time
from adafruit_servokit import ServoKit

# Set channels to the number of servo channels on your kit.
# 8 for FeatherWing, 16 for Shield/HAT/Bonnet.
kit = ServoKit(channels=16)
print('start')

kit.servo[0].angle = 180
kit.servo[1].angle = 180
kit.servo[2].angle = 180
kit.servo[3].angle = 180
kit.servo[4].angle = 180
kit.servo[5].angle = 180
kit.servo[6].angle = 180
time.sleep(1)

kit.servo[0].angle = 0
kit.servo[1].angle = 0
kit.servo[2].angle = 0
kit.servo[3].angle = 0
kit.servo[4].angle = 0
kit.servo[5].angle = 0
kit.servo[6].angle = 0
time.sleep(1)

kit.servo[0].angle = 90
kit.servo[1].angle = 90
kit.servo[2].angle = 90
kit.servo[3].angle = 90
kit.servo[4].angle = 90
kit.servo[5].angle = 90
kit.servo[6].angle = 90
time.sleep(1)