(多分)第10回目
みなさんこんにちは、お久しぶりです。松です。
今回は塩君と2名でベースキャンプ名古屋で開催しました。
今回はソースの解析を行いました。
解析に使用したソースは下記です。
GitHub - gmossy/Sainsmart-4WD-Robot: Documentation for the Sainsmart 4WD Robot
[ setup()関数 ]
1.初期化
[ loop()関数 ]
2.シリアルによるモードの読み取る
3.モードは下記
(a) Forward
(b) Turning Left
(c) Turning Right
(d) Turning Backward
(e) Stop
(f) toggle Roam Mode
(g) 1(?) Mode
4.roamステータスの読み取り
0(=ELSE)なら何もしない。1(=TRUE)ならRoaming動作
5.8番ピンに接続されたボタンの読み取り
ボタンが押されると関数が動作。(現時点で動作未定義)
6.2に戻る
(a)のForward Modeから(e)のStop Modeまでと、(g)の1 Modeを読みました。
1 Modeの動作は、25(ms)ごとにモータスピード20%から100%まで前進加速した後、100%から0%まで後退します。
動作確認のため、Smart Carを動作させてみましたが、前進するのみで後退してくれず、上手く動作しませんでした。
原因究明は次回の課題です。
各モードの関数は2つのモータを動作させるための、motorAとmotorBにmodeとmotorspeedの引数を渡しています。
渡す引数により、A、Bそれぞれのモータが正転、逆転して前進、右左折、後退します。
各モードと引数の関係は下記のようになっていました。
モード | motorA | motorB |
Forward | 2 | 2 |
Back | 1 | 1 |
Right Turn | 1 | 2 |
Left Turn | 2 | 1 |
Stop | 3 | 3 |
toggle roam modeは上記の動作を組み合わせて動きます。
今回ソースをゆっくりと追いかけることで、いくつか使われていない変数を削除したり、
元のソースコードで変だな。と思う箇所を発見して修正することができました。
上記のモードと引数の対応関係も、ソースコード中には引数が"1"の場合は、clockwise、"2"の場合はcounter-clockwiseと表記されているので、
Forwardが[1,1]の方が自然ではないかと思います。直していませんが。
今回は参加者二人ということで、話も脱線多めのまったりした感じで進みましたが、
お互いの近況報告などもでき、ソースコードもじっくり追うことができました。
更新頻度が下がっていて、これではいけないなーと思っているので、
今年は去年よりも記事を上げることを目標に、ブログ更新も気合を入れ直してがんばっていきたいと思います。
それでは!