KY-040回転エンコーダーは、角度の位置または回転を測定するために使用される機械装置です。一般に、ボリュームコントロール、メニューナビゲーション、およびロボット工学の位置追跡で使用されます。このチュートリアルでは、ArduinoとのKY-040ロータリーエンコーダーの接続と使用をガイドします。
あなたが必要とするもの
- KY-040ロータリーエンコーダーモジュール
- Arduino委員会(例:UNO、MEGA、NANO)
- ブレッドボードとジャンパーワイヤ
- 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:セットアップをテストします
- USBを介してArduinoをコンピューターに接続します。
- Arduino IDEを開き、正しいものを選択します ボード そして ポート の下 ツール メニュー。
- クリックしてコードをアップロードします アップロード.
- シリアルモニターを開きます(ツール > シリアルモニター)そして、ボーレートをに設定します
9600
. - エンコーダーを回転させ、ボタンを押します。シリアルモニターでカウンターとボタンを押すと、ボタンを押します。
KY-040ロータリーエンコーダーのアプリケーション
- ボリュームまたは輝度制御
- メニューナビゲーション
- モーター位置追跡
- ロボット工学と自動化システム
トラブルシューティング
- 回転検出なし: CLKとDTの配線を確認し、ピンがコードに一致することを確認します。
- 不安定な測定値: 小さなデバウンス遅延を追加して、エンコーダー信号を安定させます。
-
検出されていないボタン: SWピンが適切に接続されていることを確認し、使用します
INPUT_PULLUP
モード。
結論
KY-040ロータリーエンコーダーとArduinoをインターフェースすることに成功しました。この汎用性の高いモジュールを使用すると、プロジェクトに回転追跡とボタン機能を追加できます。カスタムコントロールの構築やシステム内のメニューのナビゲートなど、さまざまなアプリケーションで実験してください!