0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

XBUSServoをESP32やTeensyで使う

Last updated at Posted at 2023-11-26

SS 192.png Serial2などを使えるようにライブラリを雑改造

やること

の続きです。

JR PROPOブランドのXBUSServoをシリアルコマンドで動かしますが、ESP32などのSerial1,Serial2などで使えるようにします。

作業環境

  • Arduino UNO
  • Arduino IDE
  • ESP32DevkitC

ライブラリの導入

今回はESP32などのSerial2などでも使える様にしたバージョンをテスト用としてGithubにアップしておきました。
XBUSServoEX とライブラリ名を変更しました。

から、前回の要領でライブラリをインポートしてください。

ESP32との接続

サーボ線 機能 ESP32
外側の黒線 GND GNDピン
中央の黒線 Vcc 5Vピン
外側の白線 信号線 17番ピン(Serial2)

今回はハードウェアシリアルとサーボシリアルは別系統になります。
サーボを接続したままでも書き込みはできるはずですが、サーボが暴れる可能性があるので書き込み時はサーボの電源を抜いておくと安心です。

サンプルコード

メニューから「ファイル」→「スケッチ例」→「XBusServoEX」→「ESP32_demo」

ESP32_demo.ino
#include <XBusServoEx.h>

#define  kMaxServoNum    1       // XBusサーボの接続数 : 1 - 50
#define  kDirPinNum      -1      // 送受信切り替えピンの番号. -1 で送信のみ.

XBusServoEx      myXBusServo(kDirPinNum, kMaxServoNum); // ライブラリのインスタンス化
unsigned int   servoValue = 32767;// サーボ位置の値. 0x7FFF がXBusServoのサーボ位置の中央値
float radiansval = 0.0; // サインカーブ算出用のラジアン値
float radiansIncrement = 0.03; // ループ毎のラジアン値の増加量

void setup()
{
  myXBusServo.begin2();
  myXBusServo.addServo(0x01, kXbusServoNeutral);    // 最初のサーボID. 今回は1番(0x01)のみ. 
}

void sendPacket()
{
  myXBusServo.sendChannelDataPacket2();
}


void loop()
{
  // サインカーブ用の値を算出
  radiansval += radiansIncrement;  //ラジアン値を増加
  radiansval = (radiansval > 2 * PI) ? 0 : radiansval; //ラジアン値が2πを超えたら0にリセット

  // サーボの値をセットする
  servoValue = 32767 + int(sin(radiansval) * 30426); // サーボ位置の上限下限の許容範囲でサイン揺動させる
  myXBusServo.setServo(1, servoValue); //サーボ値をセットする
  myXBusServo.sendChannelDataPacket2(); //データを送信する
  delay(10); //10ミリ秒ディレイ. 14ミリ秒以下の必要がある.
}

起動と動作結果

1秒間隔ぐらいでサーボが加減速しながら左右に回転すれば実験成功です。

Teensy4.0では?

Teensy4.0でもSerial5まで使えることが確認できました。(送信のみですが)

さいごに

コマンドを使ってデータをとったりいろいろ試してみたいと思います。
複数のサーボを使った時にうまく動くかもテストが必要です。

よき電子工作ライフを〜

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?