Skip to content

Latest commit

 

History

History
152 lines (107 loc) · 5.01 KB

24_basic_motor.rst

File metadata and controls

152 lines (107 loc) · 5.01 KB

Note

こんにちは、SunFounderのRaspberry Pi & Arduino & ESP32愛好家コミュニティへようこそ!Facebook上でRaspberry Pi、Arduino、ESP32についてもっと深く掘り下げ、他の愛好家と交流しましょう。

参加する理由は?

  • エキスパートサポート:コミュニティやチームの助けを借りて、販売後の問題や技術的な課題を解決します。
  • 学び&共有:ヒントやチュートリアルを交換してスキルを向上させましょう。
  • 独占的なプレビュー:新製品の発表や先行プレビューに早期アクセスしましょう。
  • 特別割引:最新製品の独占割引をお楽しみください。
  • 祭りのプロモーションとギフト:ギフトや祝日のプロモーションに参加しましょう。

👉 私たちと一緒に探索し、創造する準備はできていますか?[|link_sf_facebook|]をクリックして今すぐ参加しましょう!

モーター

概要

このレッスンでは、モーターの使用方法を学びます。モーターの動作原理は、通電されたコイルが磁場内で強制的に回転し、その結果モーターのローターが回転し、ピニオンギアがエンジンのフライホイールを回転させることです。

必要なコンポーネント

このプロジェクトには、以下のコンポーネントが必要です。

全セットを購入するのが便利です。こちらがリンクです:

名称 このキットのアイテム数 リンク
Elite Explorer Kit 300+ |link_Elite_Explorer_kit|

以下のリンクから個別に購入することもできます。

コンポーネント紹介 購入リンク
:ref:`uno_r4_wifi` -
:ref:`cpn_breadboard` |link_breadboard_buy|
:ref:`cpn_wires` |link_wires_buy|
:ref:`cpn_ta6586` -
:ref:`cpn_motor` |link_motor_buy|
:ref:`cpn_power` -

配線図

この例では、パワーサプライモジュールを使用してブレッドボードの陽極と陰極に電力を供給します。

img/24-motor_bb.png


回路図

img/24_motor_schematic.png


コード

Note

  • ファイル 24-motor.inoelite-explorer-kit-main\basic_project\24-motor のパスで直接開くことができます。
  • または、このコードをArduino IDEにコピーしてください。

UNOボードにコードをアップロードした後、シリアルモニターで「A」または「B」と入力することで、モーターの回転方向を選択できます。

コード解析

モーターは、モーターの両側の銅板間に電圧差を与えることで駆動できます。 したがって、銅板の一方の側の電圧を0V、もう一方の側を5Vに設定するだけで済みます。書かれたアナログ信号値を変更することで、方向と速度を調整できます。

// Function to rotate the motor clockwise
void clockwise(int Speed) {
  analogWrite(motorBI, 0);
  analogWrite(motorFI, Speed);
}

// Function to rotate the motor anticlockwise
void anticlockwise(int Speed) {
  analogWrite(motorBI, Speed);
  analogWrite(motorFI, 0);
}

この例では、Serial.Read()を使用してモーターの方向を制御しています。

シリアルモニターで「A」と入力すると、clockwise(255)関数が呼び出され、モーターが255の速度で回転します。 「B」と入力すると、モーターは逆方向に回転します。

void loop() {
  // Check if there is available data on the serial port
  if (Serial.available() > 0) {
    int incomingByte = Serial.read(); // Read incoming data

    // Determine motor direction based on user input
    switch (incomingByte) {
      case 'A':
        clockwise(255); // Rotate motor clockwise
        Serial.println("The motor rotates clockwise.");
        break;
      case 'B':
        anticlockwise(255); // Rotate motor anticlockwise
        Serial.println("The motor rotates anticlockwise.");
        break;
    }
  }

  delay(3000); // Wait for 3 seconds
  stopMotor(); // Stop the motor
}