可変抵抗器を使用してコンピューターを制御する

何となぜ?


最近、Mikhail Sannikovの記事「 エンコーダーをコンピューターに接続する 」を読みました。 そして、先日彼らが私にArduinoボードを送ったので、このシンプルなデザインを繰り返すか、似たようなことをしたかったのです。



まず、エンコーダーとは何か、なぜエンコーダーが必要なのかについて少し説明します。 エンコーダーは、出力信号がグレイコードである角度からコードへのコンバーターです。 回転する巨大なワッシャーのように見えるエンコーダーに組み込まれた入力デバイスがあります。たとえば、3Dエディターでモデルを回転させることができます。



画像



ここから写真)



しかし、私はエンコーダーを持っていなかったので、店に行きたくなかったので、代わりに異なるゴミの入った箱の中にある古い150KΩの可変抵抗器を適応させることにしました。



そのため、次のことを行う必要がありました。

  1. Arduinoに可変抵抗器を接続します。
  2. アナログポートからバイトを読み取り、コンピューターに転送するコントローラーのプログラムを作成します。
  3. 可変抵抗シャフトの回転方向に応じて特定のキーを押すことをエミュレートするコンピューター用のプログラムを作成します。


ハード&ソフト


ArduinoのWebサイトのプログラミングガイドで、最初と2番目の問題を完全に解決するAnalog In、Out Serialの例が見つかりました。

抵抗は次のように接続されます。

画像



ただし、コードを少し変更する必要がありました。Serial.printからすべての行を削除し、1つのSerial.write(outputValue)に置き換えます。



const int analogInPin = A0; // A0

int sensorValue = 0; // ,



void setup() {

Serial.begin(9600); // COM-

}



// A0 COM-

void loop() {

sensorValue = analogRead(analogInPin);

outputValue = map(sensorValue, 0, 1023, 0, 255);

Serial.write(outputValue);

delay(10);

}









コンピューターの制御プログラムは、Visual Studio 2010 ExpressのC#で作成されました。



プログラムのメインウィンドウ:



画像



設定ダイアログボックス:



画像



注:「ボタン」ボタンのクリックはまだ処理されていません。



ここでは、「Misc」グループのパラメーターをさらに詳しく検討する価値があります。 最初はキーストロークをエミュレートするために必要であり、残りはチャタリングを排除するために必要です。



遅延 -キーを押してから離すまでのミリ秒単位の遅延。

バッファー -COMポートから順次読み取られる値の数。

ジッタ -最後のサンプルの値からの許容偏差を示します。



びびり抑制と可変抵抗シャフトの回転方向の決定は、次のように機能します。



この方法の欠点:

-シャフトの回転開始からプログラムの反応までの遅延。

-回転角度に関係なく、キーが1回押されます。 つまり、抵抗シャフトをすばやく回転させることができ(バッファーの最初のバイトは、たとえば10、最後のバイトは-30)、プログラムはワンクリックで動作します。



アルゴリズムコード:



int[] buffer = new int[(int)conf.buffer]; // Buffer

int bufferTop = (int)conf.buffer - 1;



for (int i = 0; i < conf.buffer; i++)

{

buffer[i] = sp.ReadByte();

}



if (buffer[bufferTop] > (buffer[0] + conf.jitter))

{

// “”

}

else if (buffer[bufferTop] < (buffer[0] - conf.jitter))

{

// “”

}








Visual Studioのプロジェクト、Arduinoのスケッチ、図は、こちらからダウンロードできます: http : //sourceforge.net/projects/keyemu/files/KeyEmu-0.1b-source.zip/download

アーカイブには、コンパイルされたプログラムを含むbinディレクトリが含まれています。 実行するには、インストール済みの.NET Framework 4が必要です。



今のところすべてです。 好奇心の強い人は、プログラムを完成させることができます。特定の時間にアクティブになるアプリケーションに応じて、1つではなく一連のキーストロークを実装するか、異なるキーを「押し」ます。



All Articles