Python前回からの続き前回は、サーボモーターをPythonのWiringpiで動かすにあたって、pwmWrite関数の設定値を決めるまでの過程を記載しました。www.tohuandkonsome.site今回は、上記の値をもとに、サーボモーターを動かすコードを書いていきます。コードNewServoMotorクラスまず、サーボモータを制御するクラス「NewServoMotor」を作成しました。制御に必要な情報をクラス変数として保持しておきます。具体的には、以下の値をMAX_DUTY、MID_DUTY、MIN_DUTYとして定義しています。123またサーボモータをどの程度、回転させるかという変数、ANGLE_BENDもここで定義しています。ANGLE_BENDでは角度を定義しますが、実際にpwmWrite関数に設定する際は、duty比をpwmWriteの仕様にマッピングした値とする必要があるため、ちょっとややこしいです。自分の頭の悪さを露呈するようで恥ずかしいのだけれども、計算過程を書いておきます。97これを、180度で割ってあげると、1度動かすのに必要な値が求められる。0.538....とはいえ、pwmWrite関数に渡す値はint型なので、最小値は1にする必要がある。厳密に1度ずつ動かすことはできなさそう。今回は、10度ずつ曲げることを想定しているので、180ではなく、18で割った値をpwmWrite関数に設定することになる。5コンストラクタコンストラクタについては、前回記事の内容とあんまりかわっていない。コンストラクタでタイヤをまっすぐにするためのクラス変数をpwmWrite関数で設定している。今どれくらいタイヤがまがっているか、を保持するインスタンス変数「dutyState」にも値を設定している。minusRotation、plusRotationメソッドサーボモーターを制御するメソッド。メソッドが呼ばれるたびに、クラス変数で定義した、固定角度分の値をインスタンス変数「dutyState」にカウントアップ、カウントダウンしていき、pwmWrite関数を呼び出している。LegoCarControllerクラス最後に、さきほど作成したNewServoMotorクラスを実際に使っているクラスを参考までに記載します。レゴカーコントローラーの抜粋(コントローラー)また全体については、Githubで管理しています。(README.md書くっていって書いてなかった。3連休だしVue.jsをはじめました。»プロフィール30歳からWebやらなんやらを学び始めた人のブログです。(4)検索はてなブログをはじめよう!konoemarioさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。