ポテンショメータとロータリーエンコーダ、および Arduino での使用方法
ポテンショメータとロータリーエンコーダは一見するとほぼ同じに見えますが、動作方法が異なります。 Arduino で両方を使用する方法をご覧ください。
電子ユーザー コントロール コンポーネントの中でも、ロータリー ノブは最も使い心地の良いコンポーネントとして際立っています。 これらは、ボタンやスイッチとうまく連携するだけでなく、タッチスクリーンやその他の入力デバイスを補完することもできます。 しかし、独自の DIY Arduino プロジェクトにノブを追加するにはどうすればよいでしょうか?
主なオプションは 2 つあり、ポテンショメータまたはロータリー エンコーダです。 これらのコンポーネントは似ているように見えますが、Arduino マイクロコントローラー ボードなどのデバイスで使用する方法は大きく異なります。 それらを相互に比較してみましょう。
DIY 愛好家が目にするポテンショメータやロータリー エンコーダのほとんどは、同様のフォーム ファクタで提供されます。 コネクタの脚が取り付けられた直方体または円筒形のベースと、ねじれてキャップを取り付けるための切り欠きのある丸いシャフトが付いています。
一部のポテンショメータは、音楽ミキシング デッキにあるような長いスライドの形をしているものなど、見た目が異なります。 ただし、ロータリー式の場合は、一見するとロータリーエンコーダとほとんど同じに見えるので、同じだと思っても仕方ありません。
ポテンショメータは本質的には可変抵抗器です。 シャフトが回転すると、ポテンショメータ内の抵抗が変化するため、ユーザーは回路を再構築することなく、回路の特性を変更できます。 ポテンショメータにはアナログとデジタルの両方がありますが、デジタル ポテンショメータはアナログ ポテンショメータを模倣しているため、使用方法は非常に似ています。
ポテンショメータには、シャフトを回転できなくなる開始点と終了点が常に定義されています。 ポテンショメータの中には、回すとゴツゴツとした感触のものもありますが、古いステレオにあるような滑らかなものも多くあります。
ポテンショメータはアナログであるにもかかわらず、マイクロコントローラとうまく連携します。 Raspberry Pi Pico または Arduino を使用してポテンショメータを簡単にセットアップできます。
ロータリー エンコーダは、接続されているデバイスにアナログまたはデジタル信号を提供するセンサーを使用してシャフトの位置を決定します。 これにより、エンコーダがどの位置にあるかがデバイスに通知されます。通常、ロータリー エンコーダには、回転シャフトに加えて、シャフトを下に押すことによって作動する内蔵ボタンもあります。
ポテンショメータとは異なり、ロータリー エンコーダは停止することなく回転でき、ほとんどの場合、シャフトの各位置に触覚バンプがあります。 現代の自動車の多くは、エンターテイメント システムを制御するためにロータリー エンコーダを使用しています。
シンプルな設計のおかげで、Arduino でポテンショメータを使用するのは簡単です。 ポテンショメータには、グランド、出力、vref の 3 つのコネクタがあります。 ground ピンと vref ピンはそれぞれ Arduino の GND コネクタと 5V コネクタに接続し、ポテンショメータの出力ピンはボード上のアナログ入力の 1 つに接続します。
Arduino ポテンショメータ コードは基本的なコードから始まります。設定()そしてループ() Arduino IDE で新しいファイルを作成するときに表示されるテンプレート。 まず、定数整数コードの先頭にある変数を使用して、ポットのアナログ ピン接続を登録します (この場合は A0)。
これに続いて、設定()関数は簡単です。ポテンショメータのピンを入力として宣言するだけです。 診断のために PC にデータを送信する場合は、シリアル接続を開始することもできます。
次に、設定を行います。ループ()関数。 まずは、整数を使用した変数アナログ読み取り()ポテンショメータの位置を保存する機能。 これに続いて、次を使用できます。地図()この例では、PWM 仕様に一致させるために、たとえば LED の明るさを制御するために、処理している値のサイズを縮小する関数を使用します。 安定性を確保するために短い遅延を追加します。
ポテンショメータの位置がわかったので、それをコードの他の部分で使用できます。 たとえば、もしこのステートメントは、ポテンショメータが特定の位置にあるときにコードをトリガーするのに適しています。
ロータリーエンコーダはポテンショメータよりも複雑なコードを必要としますが、それでも作業はかなり簡単です。 ロータリー エンコーダには、グランド、VCC、ボタン ピン (SW)、出力 A (CLK)、および出力 B (DT) の 5 つのピンがあります。 グランド ピンと VCC ピンはそれぞれ Arduino のグランド コネクタと 5V コネクタに接続し、SW、CLK、BT ピンは Arduino の個別のデジタル コネクタに接続します。
コードをよりシンプルにして扱いやすくするために、GitHub 上の MPrograms によって作成された SimpleRotary Arduino ライブラリを使用します。 コードの作業を開始する前に、このライブラリがインストールされていることを確認してください。
ポテンショメータ コードと同様に、基本的な Arduino を使用してロータリー エンコーダ スクリプトを開始できます。設定()そしてループ()関数テンプレート。 まず SimpleRotary ライブラリを宣言し、エンコーダ ピンをこの順序で割り当てます。 CLK、DT、SW。
何も追加する必要はありません設定()シリアル モニターを使用してロータリー エンコーダーを診断する場合を除き、この機能は使用できません。
のループ()機能は別の話です。 エンコーダ シャフトの回転の決定は、次のことから始まります。ロータリー.rotate()に割り当てられた関数呼び出し整数変数。 結果が 1 の場合、エンコーダは時計回りに回転しています。 結果が 2 の場合、エンコーダは反時計回りに回転しています。 前回のチェック以降エンコーダが回転していない場合、結果は常に 0 になります。
使用できますもしステートメントを使用して、エンコーダーの回転方向に応じて他のコードをトリガーします。
エンコーダのボタンのコードをループ()関数。 このプロセスは非常に似ていますが、使用する点が異なります。ロータリー.プッシュ()機能ではなく、ロータリー.rotate()。
このスクリプトは非常にシンプルなので、独自のスクリプトを作成するためにさまざまなことができます。 SimpleRotary プロジェクトのドキュメントを調べて、その主要な機能をすべて使用していることを確認することは価値があります。 まとめると、エンコーダー コードは次のようになります。
ご覧のとおり、ロータリー エンコーダとポテンショメータはまったく異なる動作をします。 これらのコンポーネントはどちらも、エレクトロニクス プロジェクトを制御する新しい方法を提供しますが、どちらを選択すればよいでしょうか?
ポテンショメータは手頃な価格で使いやすいですが、入力範囲が限られています。 これは、LED の明るさを制御したり、特定のコンポーネントに送られる電力を増減したり、その他の同様のタスクを行う場合に最適です。
ロータリーエンコーダは、ポテンショメータよりもはるかに広い範囲を提供します。 プッシュボタンが組み込まれているということは、多くの現代の車に見られるように、メニュー制御システムに最適であることを意味します。 このタイプのコンポーネントは、メカニカル キーボード構築分野で非常に人気があります。 エンコーダを内蔵した小さなマクロパッドを構築することもできます。
これらの情報をすべて理解すれば、ポテンショメータまたはロータリー エンコーダを使用したエレクトロニクス プロジェクトを開始する準備が整います。 これらのコンポーネントを使用すると、構築する回路を大幅に制御できますが、プロジェクトに適切なオプションを選択していることを確認する必要があります。
Samuel は英国を拠点とするテクノロジー ライターで、DIY 全般に情熱を持っています。 Web 開発と 3D プリンティングの分野でビジネスを立ち上げ、長年ライターとして活動してきたサミュエルは、テクノロジーの世界に対する独自の洞察を提供します。 主に DIY テクノロジー プロジェクトに焦点を当てている彼は、自宅で試せる楽しくてエキサイティングなアイデアを共有することが何よりも大好きです。 仕事以外では、サミュエルはサイクリングをしたり、PC ビデオ ゲームをしたり、ペットのカニと必死にコミュニケーションを図ったりすることがよくあります。
今日のビデオの作成 スクロールしてコンテンツを続行します setup()loop()const int setup()loop()intanalogRead()map()if setup()loop()setup()loop()rotate.rotate()int if ループ() ロータリー.プッシュ() ロータリー.回転()