C/C++ プログラムから LED フラッシュを備えた小さな回路を作成する最も簡単な手順は何ですか?
必要な依存関係とパッケージの数を最小限に抑えたいと思います。
- 何かを接続するポートはどれですか?
- どのコンパイラを使用しますか?
- そのポートにデータを送信するにはどうすればよいですか?
- マイクロプロセッサが必要ですか? そうでない場合、この単純なプロジェクトには使用したくありません。
編集:OS固有のソリューションに興味があります。
これは、パラレル ポートを使用したチュートリアルです。
ただし、非常に安く購入でき、次のコードのみを含むArduinoをお勧めします。
/* Blinking LED
* ------------
*
* turns on and off a light emitting diode(LED) connected to a digital
* pin, in intervals of 2 seconds. Ideally we use pin 13 on the Arduino
* board because it has a resistor attached to it, needing only an LED
*
* Created 1 June 2005
* copyleft 2005 DojoDave <http://www.0j0.org>
* http://arduino.berlios.de
*
* based on an orginal by H. Barragan for the Wiring i/o board
*/
int ledPin = 13; // LED connected to digital pin 13
void setup()
{
pinMode(ledPin, OUTPUT); // sets the digital pin as output
}
void loop()
{
digitalWrite(ledPin, HIGH); // sets the LED on
delay(1000); // waits for a second
digitalWrite(ledPin, LOW); // sets the LED off
delay(1000); // waits for a second
}
どのポート? パラレル ポートは、+5V (TTL ロジック レベル) を出力し、プログラムが非常に簡単であるため、私のお気に入りの選択です。ほとんどのパラレル ポートには、LED を駆動するのに十分な電力があります。一般に、コンピューターのポートは信号電圧のみを出力するように設計されており、ほとんどのデバイスに実際に電力を供給するのに十分な電流を生成しないことを覚えておくことが重要です。
どのコンパイラ? 関係ない。ただし、この種のハードウェア ハッキングは、Linux ではより楽しく簡単に行えるため、GCC を選択することをお勧めします。
データを送信するにはどうすればよいですか? ポートとオペレーティング システムによって異なります。USB は、単純なプロジェクトにとっては恐ろしく複雑なので、忘れてください。シリアル ポートとパラレル ポートは、さまざまなインターフェイスを介して制御できます。私の好みは、ioctl()
Linux でシステム コールを使用して、パラレル ポート ピンを直接制御することです。これを行う方法に関する情報は次のとおりです。 http://www.linuxfocus.org/common/src/article205/ppdev.html
マイクロプロセッサーは必要ですか? いいえ、外部デバイスにマイクロプロセッサは必要ありません (明らかに、コンピュータにはマイクロプロセッサが搭載されています:-P)。パラレルポートまたはシリアルポートを使用する場合は、LED と抵抗を 1 つまたは 2 つ使用し、LED を直接接続するために必要な部品を使用できます。
(また、オンラインで無料で入手できるLinux Device Drivers bookには、単純な電子デバイスをパラレル ポートに接続し、それらのカーネル ドライバーを作成する方法に関する情報が記載されています。)
編集:このスレッドでは、「マイクロプロセッサが必要ですか?」という OP の意味について、大きな混乱があるようです。パラレル ポートだけで、コンピュータのソフトウェアに基づいて LED を駆動できます。デバイスにはマイクロプロセッサは必要ありません。ただし、コンピュータに接続せずにデバイスを制御できるようにする場合は、マイクロプロセッサまたはその他のデジタル ロジックが必要です。
マイクロプロセッサなしで (C/C++ がないことを意味する) LED を点滅させたい場合は、555 タイマー IC を使用した単純な回路でうまくいきます。これらは非常にシンプルで、Radio Shack のどのタイプの場所でも部品を入手できるため、初心者向けの電子書籍やキットの一般的なプロジェクトです。
Vlion が言及しているように、ソフトウェアでそれを行いたい場合、すべては使用されているハードウェアと LED を接続する回路の設計に依存します。
PC で何かをいじりたい場合は、PC パラレル ポートのピンに接続されている LED を点滅させる方法に関する記事を次に示します。
LED と 300 オームの抵抗器をシリアル ポート送信 (ピン 3) からグランド (ピン 5) に接続してみてください。次に、データを送信してオンにします。
シリアル ポートはおそらく 10mA しか供給できません。
幸運を。
迅速で汚れた操作のために、シリアルまたはパラレルポートの 2 つの簡単なオプションがあります。シリアル ポートの方が簡単ですが、LED の数が限られています。
LED を接続するには、正しい性別のシェル コネクタ (DB25/DB9)、LED、および抵抗が必要です。自分で抵抗器の値を調べる必要があります。
シリアル ポートには、プログラマが制御する制御フロー信号があります。(シリアルポートを開いた後)MCRレジスタに正しいビットを出力するのは簡単なことです。
パラレル ポートは、ハンドシェークが少し増えるという点で少し難しくなりますが、通常、レジスタへの書き込みと同じ原理です。
ポートを制御するには、OS と戦わなければならない場合があります。
送信される信号は、送信レジスタに書き込まれたデータのシリアル ビットストリームであるため、Tx ラインの使用はやや複雑です。私は CTS と DSR 信号に固執します。
手早くデバッグするために、レジスタに書き込み、モデムのライトを観察しました。
また、OS にも依存します。Linux では、LED をパラレル ポートに直接配線し (もちろん、適切な電流制限抵抗を使用して)、単に C 関数「outb()」を使用してオンとオフを切り替えることができます。
Windows では、OS がユーザー アプリケーションにポートとの直接の通信を許可しないため、はるかに複雑です。
これを行う最も簡単なポートは、シリアルまたはパラレルです。LED と直列に抵抗を接続することを常に忘れないでください。