![見出し画像](https://assets.st-note.com/production/uploads/images/121600047/rectangle_large_type_2_27d7df3350ab69aa3db13cf663029e1e.png?width=1200)
サーボモータの組み付けに困っていませんか
AI,IoT,DX...よくわからんけど,何か始めなきゃと思って,電子工作をやってみようかなとアマゾンをググるとロボットキットがたくさん出ていて,どれから始めればいいのか迷ってしまったという人にオススメなのは,SunFounderのPiArmという商品です.
喜び勇んで組み立ててみたものの,思った通りに動かない...
イライラしないで,まずは深呼吸.こんなロボットで週末に楽しめる喜びを噛み締めながら,1つ1つ確認していきましょう.
1.サーボモータの初期位置
サーボモータを使ったロボットにおいて,最も大事なことはサーボモータの組み付け初期位置です.
例えば,下図のRoot_Barが角度α:0〜180°動く様にしたい場合には,サーボモータを組み付ける時に,サーボチェッカーを使ってサーボモータの回転角度が0°にしてから組み付ける.
![](https://assets.st-note.com/img/1699943461682-Brbjvc2L8i.jpg?width=1200)
サーボモータの取り付け時の角度が狂っていると,思った通りの範囲角度で動かすことができなくなる.
サーボモータの可動範囲を超えた角度に動かす指令値をマイコンから送り続けると,サーボモータが過熱し,マイコンにも過剰な電流が(Arduino R3 1ピンあたり20mAまで)流れることとなり,破損してしまう.
2.サーボモータライブラリの利用
PWMとサーボモータの回転角度との関係をしっかりと理解した方がいいですが,手っ取り早く動かしたいという人は,サーボモータライブラリを読み込めば,PWM信号を詳しく理解できていなくても,角度で簡単にコントロールできます.
#include <Servo.h>
3.ジョイスティック入力
ジョイスティックからの入力は,0〜1023の値となっている.
![](https://assets.st-note.com/img/1699944339573-Wzi6986Lsr.png?width=1200)
このままでは,ジョイスティックを上下に動かしても0〜1023という正の値であり,直感的に分かりにくい.
そこで,Arduinoではmap関数を用いて,以下の様に変換する.
例:このJoystickでは,LX, LY, RX, RY ともにレバー中立時は512の値が出力されている.
Left_Y = map(val0, 0, 1023, 90, 270);
Cmd_Y = Init_Angle + (Left_Y - 180 );
1行目は,0〜2023を90〜270に変換(マッピング)する.中立位置では180を示す.
2行目は,Joystickを上下に動かすと初期角度から−90〜90の範囲で変化させたCmd_Yを指令値として出力する.
4.Arduinoプログラムの確認
Joystickからの入力値Left_Yと変換した指令値Cmd_YをArduino IDEのシリアルモニタに表示して確認する.
Serial.print("Joystick LY: "); Serial.print(Left_Y);
Serial.print(", Command Y: "); Serial.print(Cmd_Y);
Serial.println();
あるいは,Autodesk社のWebサイトで,Tinkercadというシミュレーションツールがあるので,自身で作成したArduinoプログラムが正しく実行できるかどうか確認する.
こういった地道な積み重ねができる環境にある,個人開発がやりやすい時代に生きていることに感謝です.
輝かしい Made in Japan を目指して,みんなで一緒に一歩を踏み出していきましょう.