Arduioでシリアルサーボを制御するメーカー推奨の方法
UNOの場合は”KSBシールド2 ” + ”ICS変換基板”
Nano、Pro miniの場合は”ICS変換基板”を配線(以下のURL参照)
ICS変換基板 | 近藤科学 (kondo-robot.com)
デフォールトではプログラムの書き込み&シリアルモニタに使うTX、RXを兼用(スライドスイッチ切替)、送受信の切り替えに1個のGPIOが必要です。
この場合はシリアルモニタを見ながらロボットの動作確認を行う時にシリアルサーボは動かせません。
ソフトウエアシリアル・ライブラリを用いれば、この問題を解決をできますが、3個のGPIOが必要になります。
非推奨の方法
オシロスコープを見ながらカット&トライして得た結果ですので、安定動作を保証できる代物ではありません。
ハードウエア要求仕様を満たしてない状態ですのでライブラリのバージョンアップの際に動かなくなる可能性があります。
ハードウエアは、ICS-SIGとソフトウエアシリアル・ライブラリにてTX指定するGPIOを2.2kΩで繋ぐだけです。
以下が、動作確認済みのセットアップ部分ですが、loop() 内で A6はアナログ値を得れますし、13はLチカできます。
つまり、GPIOを1個でICS制御している訳です。
#include <IcsSoftSerialClass.h>
const byte S_RX_PIN = A6;
const byte S_TX_PIN = 9;
const byte EN_PIN = 13;
const long BAUDRATE = 115200;
const int TIMEOUT = 0;
IcsSoftSerialClass krs(S_RX_PIN, S_TX_PIN, EN_PIN, BAUDRATE, TIMEOUT);
void setup()
{
Serial.begin(115200);
krs.begin();
krs.setPos(1, 7500);
krs.setPos(0, 7500);
}
注意点としては、EN_PIN = 13;の部分はA6、A7の様な入力専用ピンのアサインでは正しく動作しません。
動作確認に使用したライブラリ : ICS Library for Arduino ver.2 (Posted on 2018.01.19 in)