「パチモンR2D2を弄り回す」=第8弾! ようやく、動作実験。いつもより、余計に回しております。 | 「藍染 迅(超時空伝説研究所改め)」の部屋

「藍染 迅(超時空伝説研究所改め)」の部屋

小説家ワナビーの「藍染 迅(あいぞめ じん)」です。

書籍化・商業化を目指し、各種コンテストに挑戦しながら、カクヨム、小説家になろう、エブリスタ、アルファポリスなどに作品を投稿しています。

代表作は異世界ファンタジー「「飯屋のせがれ、魔術師になる。」。

会社が4連休の2日目。
昨日は、ナポリ名物ベスビオ火山の火口に登ってきたので、今日は休養日。

いつも休養しとりますが……。


あれだな。山道は、登りより下りの方が疲れるものだな。
足場が不安定なので、常に片足で体のバランスを取る必要があった。

ふくらはぎ、パンパン。


牛乳が切れたので、午前中買い物に出かけたのだが、帰りの下り坂がきつかった。

さて、工作の方である。
前回、ハード系の配線はすべて完了。ソフト的な課題のみとなっていた。

まずは、Arduinoでステッピングモータを回すためのスケッチ(プログラム)をダウンロード。
ArduinoのLibraryに「Stepper.h」というモジュールが用意されており、これを利用すれば簡単にステッピングモータを回せる。

<StepperOneRevolution>

/*
 Stepper Motor Control - one revolution

 This program drives a unipolar or bipolar stepper motor.
 The motor is attached to digital pins 8 - 11 of the Arduino.

 The motor should revolve one revolution in one direction, then
 one revolution in the other direction.


 Created 11 Mar. 2007
 Modified 30 Nov. 2009
 by Tom Igoe

 */

#include <Stepper.h>

const int stepsPerRevolution = 120;  // change this to fit the number of steps per revolution
// for your motor

// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 8, 10, 11, 9);

void setup() {
  // set the speed at 60 rpm:
  myStepper.setSpeed(60);
  // initialize the serial port:
  Serial.begin(9600);
}

void loop() {
  // step one revolution  in one direction:
  Serial.println("clockwise");
  myStepper.step(stepsPerRevolution);
  delay(500);

  // step one revolution in the other direction:
  Serial.println("counterclockwise");
  myStepper.step(-stepsPerRevolution);
  delay(500);
}

ほぼほぼ、ダウンロードしたまんまで良かったのだが、赤字の部分だけ調整が必要だった。

まず、

const int stepsPerRevolution = 120;

の部分は、「モータ1回転につき、何ステップ駆動が必要か?」という定数。
サンプルでは200になっていた。1ステップ当たり1.8度回転するということ。

パチモンR2D2用モータでは、試してみたところ、この定数が120だった。
つまり、1ステップ当たり3度回転する。

おもちゃ用なので、結構制御の目が粗いということだろう。

問題は、2番目の赤字部分。
ここは、モータを回すために、電圧をかける極の順番を指定している。
この順番を間違うと、回らない。

サンプルのままでは、「8, 9, 10, 11」と数字の順になっていた。
そのまま行けるかと思ったら、振動するだけで回転しない。

色々試行錯誤した結果、赤字のとおり「8, 10, 11, 9」の順番で回ることがわかった。
(配線順を変えればよいのだろうがーー)

マワリャあいいのさあ。照れ


回ったところの映像が、こちら。


やっと、ここまでたどり着いた。

さて、この先は、R2D2頭部の回転限界を検出するエンコーダの解析。
そして、本体への組み込み後の、運転すり合わせ。

最終的には、どういうタイミングでモータをどれだけ回転させるか、など演出を加えていく予定である。
LEDの追加とか、音声の出力とかも、できるものならやってみたいがーー。

できるかなあーー?