ちょっと前に買っていたM5stickc(Plus)用の8チャンネルサーボ基板。HAT_8servosって名称なのかな。ver1.1で現在販売されてるやつ。以前はver1.0だったようですが、どうも調べるとライブラリーは以前のは使えないらしい。しかしスイッチサイエンスのページからたどるリンクも切れているようでどうしたものかと思っていたら普通にあった。

 ArduinoIDEのライブラリをインクルードからライブラリを管理を押すと検索画面が開く。 M5Hat_8Servos という名称で普通にライブラリーにあった。それをインストゥールすればOK.なぜかGitHubでは見つからなかった。

 サンプルプログラムはM5Stickc用とPlus用の2種類がある。シロートの自分にはそのサンプルプログラムは Taskというコマンドつかっておりよくわからない。いろいろいじくって自分なりに使えたのでメモしておく。

 まずこんな外見。Ver1.0はシルクが白いようであった。まぁ16340の電池つきで1340円なのは結構買い得っぽい。一応うごいているので多分大丈夫。スケッチは最初に

#include "Hat_8Servos.h"

Hat_8Servos drive;

あたりが必要みたい。

void setup() 内で

drive.begin(&Wire, 0, 26, 0x36);

これで I2Cで接続できて使用可能になるみたい。

 あとは void loop() 内でいろいろコマンドで動かすのだけれど、角度読み取りとかもできるみたい。今は使わないのでドライブ用のコマンドだけ。

drive.enableServoPower(1);  見ればわかると思うがサーボ基板への電源投入。 0 でオフ 1 でオンでいいみたい。 ストップさせたいときはこれでオフで止まるので結構楽かも。

drive.setServoAngle(CH, degree);

角度指定で動かせる。CHには指定CHの数字を入れるのだがCH1なら0 CH2なら1と1少ない数を代入すること。

drive.setServoPulse(CH, pulse幅); パルス幅時間でも入力可能でCHは同じ。pelse幅には500なら0° 2500なら180°になるようである。

 制御によって使いやすい方を使えばいいようである。

 今はローテーションサーボでつくった前回までの車体を動かしているだけなので、2CHしか使っていない。それも今後かな。

 そうそう、各駆動コマンドの間にdelay()をいれておかないとうまく動かないようです。I2Cでの通信時間が必要?? いまのところdelay(1)で1msで大丈夫そうです。