M5StickCでPuppyCを動かす

  • このエントリーをはてなブックマークに追加

はじめに

PuppyCにM5StickCを接続して動かしてみます。

  1. 必要なもの
  2. スケッチ例
  3. 実行

 

1.必要なもの

M5SticKCとPuppyCが必要です。

番号

商品名

価格

参考販売店

1

M5StickC

1980円(セット)

1650円(本体のみ)

SwitchSience

2

PuppyC

2002円

SwitchSience

PuppyCはM5StickC用の四脚ロボットベースです。

 

長方形の箱に入っていますが、半分はクッションです。

 


2.PuppyCの動作確認

PuppyCの動作確認はスケッチ例の中にある「PuppyC」で確認します。

[ファイル]⇒[スケッチ例]⇒[M5StickC]⇒[HAT]⇒[PuppyC]でスケッチを書き込みます。

ソースコードを見ると、puppy.hがインクルードされています。これはpuppuy.cppで作成した関数 IIC_Init()、angle_all_set、angle_setを使用するためです。

初期化用の関数IIC_Init()はpuppy.cppで定義されています。WireはI2Cとの通信を可能にするために必要なライブラリです。beginで接続します。第1引数はデータを送受信するためのポート名、第2引数はクロックに使用するポート名、第3引数は周波数(100は100kbit/s)です。

GitHubにあるESP32のWire.hを見るとデフォルト値は以下のように設定されています。

angle_all_setは4つのサーボモーターすべての動作位置を指定、angle_setは個々のサーボモーターの動作位置を決定するのに使用します。

Wire.beginTransmission(SERVO_ADDRESS)でサーボ―モータを動かすためのアドレスを設定します。このあと、Wire.Write()でデータを送信したのち、Wire.endTransmission()で通信を終了します。angle_all_setは第1引数からサーボモーターの1番、2番、3番、4番に割り振られています。設定する値は角度(angle )を表しています。値に90と記述すると90°を意味し、サーボモーターが地面と垂直になっている状態です。

angle_all_setが全体のサーボモーターに設定しているのに対して、angle_setは個別にサーボモーターを設定することができます。内部で使用している関数はangle_all_setと同様です。

PuppyCではangle_all_setを使用して前に進むための関数puppy_startと後ろに進むための関数puppy_backを作成しています。

サーボモーターの1番は左前足、2番は右の後足、3番が左の後足、4番が右の前足となっています。

 

 

3.実行

M5StickCをPuppyCの上に載せ、実行すると前に後ろにと交互に動きます。PuppyCの後ろのスイッチをONにしないと書き込みを行っても動作しないので、注意が必要です。スイッチが付いている方が後ろのようです。

 

参考

ESP32データシート

 

  • このエントリーをはてなブックマークに追加

SNSでもご購読できます。

コメント

コメントを残す

*