ArduinoでKY-040ロータリーエンコーダーの使用方法

How to Use the KY-040 Rotary Encoder with Arduino

KY-040回転エンコーダーは、角度の位置または回転を測定するために使用される機械装置です。一般に、ボリュームコントロール、メニューナビゲーション、およびロボット工学の位置追跡で使用されます。このチュートリアルでは、ArduinoとのKY-040ロータリーエンコーダーの接続と使用をガイドします。


あなたが必要とするもの

  1. KY-040ロータリーエンコーダーモジュール
  2. Arduino委員会(例:UNO、MEGA、NANO)
  3. ブレッドボードとジャンパーワイヤ
  4. Arduino IDEがインストールされたコンピューター

ステップ1:KY-040ロータリーエンコーダーの理解

KY-040エンコーダーは、回転するとパルスを生成する回転ダイヤルで構成されています。また、内蔵プッシュボタンも含まれています。

KY-040ピンアウト

ピン 関数
GND 地面
+ 電源(5V)
clk クロックパルス信号
dt データパルス信号
SW プッシュボタン信号

ステップ2:KY-040をArduinoに配線します

KY-040をArduino UNOに接続する方法は次のとおりです。

KY-040ピン Arduino Pin
GND GND
+ 5V
clk ピン2
dt ピン3
SW ピン4

ステップ3:コードをアップロードします

次の例コードは、回転エンコーダの回転を読み取り、ボタンの押しを検出します。

#define CLK 2  // Clock pin
#define DT 3   // Data pin
#define SW 4   // Switch pin

int counter = 0;     // Counter to track rotation
int currentStateCLK;
int lastStateCLK;

void setup() {
  pinMode(CLK, INPUT);
  pinMode(DT, INPUT);
  pinMode(SW, INPUT_PULLUP); // Internal pull-up for the button

  Serial.begin(9600);

  // Read the initial state of the CLK pin
  lastStateCLK = digitalRead(CLK);

  Serial.println("KY-040 Rotary Encoder Test");
}

void loop() {
  // Read the current state of the CLK pin
  currentStateCLK = digitalRead(CLK);

  // If the state has changed, the encoder has rotated
  if (currentStateCLK != lastStateCLK) {
    // Check the DT pin to determine the rotation direction
    if (digitalRead(DT) != currentStateCLK) {
      counter++;
    } else {
      counter--;
    }

    Serial.print("Counter: ");
    Serial.println(counter);
  }

  // Save the last state of CLK
  lastStateCLK = currentStateCLK;

  // Check if the button is pressed
  if (digitalRead(SW) == LOW) {
    Serial.println("Button pressed!");
    delay(200); // Debounce delay
  }
}

ステップ4:セットアップをテストします

  1. USBを介してArduinoをコンピューターに接続します。
  2. Arduino IDEを開き、正しいものを選択します ボード そして ポート の下 ツール メニュー。
  3. クリックしてコードをアップロードします アップロード.
  4. シリアルモニターを開きます(ツール > シリアルモニター)そして、ボーレートをに設定します 9600.
  5. エンコーダーを回転させ、ボタンを押します。シリアルモニターでカウンターとボタンを押すと、ボタンを押します。

KY-040ロータリーエンコーダーのアプリケーション

  1. ボリュームまたは輝度制御
  2. メニューナビゲーション
  3. モーター位置追跡
  4. ロボット工学と自動化システム

トラブルシューティング

  • 回転検出なし: CLKとDTの配線を確認し、ピンがコードに一致することを確認します。
  • 不安定な測定値: 小さなデバウンス遅延を追加して、エンコーダー信号を安定させます。
  • 検出されていないボタン: SWピンが適切に接続されていることを確認し、使用します INPUT_PULLUP モード。

結論

KY-040ロータリーエンコーダーとArduinoをインターフェースすることに成功しました。この汎用性の高いモジュールを使用すると、プロジェクトに回転追跡とボタン機能を追加できます。カスタムコントロールの構築やシステム内のメニューのナビゲートなど、さまざまなアプリケーションで実験してください!

コメントを残す

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.