🤖
【Raspberry Pi】 戦車プログラムの作成
戦車クラスの作成
プログラミング回です。
今まで実験してきたモノを、戦車クラスとしてまとめます。
言語はもちろんPythonです。とりあえず2.7系です。
とりあえず採用する機能は、
- 走行(DCモーター)
- 砲塔旋回(ステッピングモータ)
- 砲身制御(サーボモータ)
です。
ソースを直書きするのも良くないので、GitHubに置いています。
https://github.com/kyo-kato/raspi.git
tankフォルダ配下が今回のテーマです。
- tank.py
- メインクラスです。モジュール呼び出して実行するだけです。
- parts/__init__.py
- モジュール化のお決まりクラスです。中身はありません。
- parts/cannon.py
- 砲身制御クラスです。サーボモータを制御しています。砲撃もここでいい気がしています。用意するインタフェースに改善の余地ありです。
- parts/fire.py
- 砲撃クラスです。単にピンをON/OFFするだけです。LEDやスイッチングの制御を行おうと考えています。
- parts/track.py
- 履帯クラスです。2つのDCモータを制御して走行を制御するクラスです。
- parts/turret.py
- 砲塔旋回クラスです。ステッピングモータを制御し砲塔を回転させるクラスです。
普段使ってるJavaとは、勝手も違ってくるので新鮮です。
Javaで行末セミコロン省いてビルドエラーする位には馴染んできています。
クラスを作った際の、selfが手間ですかね・・・。
各機能は parts配下に追加し、tank.pyで動作確認というイメージです。
さて、いざ実動作確認と行きたかったのですが、まともに動けませんでした・・・。
今の全部載せ戦車がこんな感じになっています。
見るからにケーブルがごった返していますが、このケーブルが邪魔をして砲塔旋回が出来なかったり、重量で進めなかったりと、前回よりも課題が増えてしまいました。
配線をコンパクトにしたり、必要なケーブルは長めにとる等して、対応が必要かもしれません。
ブレッドボートとステッピングモータが上下関係にある限り、砲塔旋回するときにケーブルを引っ張りますので、どれだけ改善しても、一回転の砲塔旋回は無理なんですが・・・
現在最下層はスペースありませんので、車体をさらに大きくするしか方法がありませんが、モータもなかなかギリギリな感じで・・・
一回転は無理にしても、左右60度くらいは回せるよう改善していきたいところです。
平日は秋月商店等に通えませんので、お試しできる期間が開いてしまうのも難しいところです。
Discussion