🤖

【Raspberry Pi】 戦車プログラムの作成

2022/10/23に公開

戦車クラスの作成

プログラミング回です。

今まで実験してきたモノを、戦車クラスとしてまとめます。

言語はもちろん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度くらいは回せるよう改善していきたいところです。

平日は秋月商店等に通えませんので、お試しできる期間が開いてしまうのも難しいところです。

GitHubで編集を提案

Discussion