あるデバイスの外観の話をしたいと思います。その例で、エレクトロニクスの操作方法を学び始めました。 おそらく、電子機器開発者のコミュニティに参加したいが、どこから始めればよいかわからない人にとっても興味深いでしょう。
カットの下で、私は何をしたのか、どのようにしたのか、次に何をしたいのかについて話そうとしました。
むかしむかし、長い間机の上に横たわっていたebay.com Arduinoコントローラーを注文しました。 当時、私は電子工学に従事していなかったので、それを知りたくはありませんでした。 そして、私はまだArduinoを試してみることにしました。 この時点で、このコントローラーの使用に関する多くのフォーラムと「最初のステップ」を読んでいたので、最初の回路を組み立てるときに何かを燃やすことをそれほど恐れていませんでした(私はまだarduinoシールドを持っていませんでした)。
最初は、すべての初心者と同様に、彼はLEDを点滅させ、いくつかのボタンを接続し、LEDを押してLEDを点灯させようとしました。 しかし、私はさらに動き、発展したかった。 このコントローラを使用して組み立てられたさまざまなデバイスをインターネットで探しました-「なめ」。 私は何かを買いたくありませんでした。基本的には、そこから面白いものしか買えなかったので、海外からの購入品の配送を止めました。
私は特にArduino LOLシールドが好きでした。 彼は彼についてもっと読み始め、図を見ました。
この時点で、知識とスキルの私の荷物の中に、LUTテクノロジーを使用したArduinoシングルサイドボードがすでにありました。 最も興味深いのは、それがアセンブリ直後に私のために働いたということです。同じスキームに従って同じボードを集め、そのアセンブリとローンチに関する記事へのコメントで不満を言った多くの人々をまだ理解していません動作しません。
一言で言えば、私は同じシールドを自分で作ることにしました。
チャーリー多重化
LOLシールドスキームを検討した後、Charplex方式に基づいて機能することが判明しました。 インターネットで検索する場合、この方法が何であり、どのように使用できるかについてかなり多くの情報があります。 少し言葉で彼について話そうと思います。
クラシックバージョンでは、プラスLED(プルアップ抵抗を介して)はArduinoデジタル出力に接続し、マイナスLEDはグランドに接続します。 接続図を以下に示します。
この接続により、合計14個のLEDをコントローラーのデジタル接点(14ピン)に接続できます。 たとえば、シフトレジスタを使用するなど、LEDをオンにするために他のスキームを使用できます。そうすると、LEDの数を簡単に増やすことができます。
Charplexing方式では、マイクロコントローラーのN端子に最大N *(N-1)個のLEDを接続できます。 つまり、マイクロコントローラーの出力が2つある場合、2つのLEDを接続できます。3つの出力がある場合は、すでに6つのLED、4〜12のLEDなどがあります。
LEDをオンにするためのスキームは次のとおりです。
これらのスキームから、LEDがどのように点灯し、関連する接点を追加することにより、接続されたLEDの数がどのように増加するかがわかります。
エンジニアのチャーリー・アレンは1995年にこの回路を考案しました。 この回路は、マイクロコントローラーの出力の3つの状態(5V(HIGH)、0V(LOW)、およびINPUT状態)に基づいています。 マイクロコントローラのレッグがINPUT状態の場合、プルアップ抵抗がオンになっているため、回路から完全に切断され、電流が流れません。 6つのLEDを持つ回路のすべてのLEDの可能な状態をテーブルに減らすことができます。
LED | ピン1 | ピン2 | ピン3 |
LED1 | 低い | 高い | 入力 |
LED2 | 高い | 低い | 入力 |
LED3 | 入力 | 高い | 低い |
LED4 | 入力 | 低い | 高い |
LED5 | 低い | 入力 | 高い |
LED6 | 高い | 入力 | 低い |
つまり、LED1を点火するには、このLEDの表に示されている状態を、マイクロコントローラーPin1、Pin2、Pin3の出力に設定する必要があります。
LED1を点火するためのArduino IDE環境のプログラムは次のようになります(回路はArduino 11、12、13デジタル出力に接続されています)。
Arduino IDEのスケッチテキスト
int pin1 = 11; int pin2 = 12; int pin3 = 13; void setup() { pinMode(pin1,INPUT); // " " pinMode(pin2,INPUT); pinMode(pin3,INPUT); pinMode(pin1,OUTPUT); // pinMode(pin2,OUTPUT); digitalWrite(pin2,HIGH); // } void loop() { }
このプログラムをマイクロコントローラーにロードして起動すると、回路のLED1が点灯します。
回路についての小さなコメント:回路のLEDには電流制限抵抗器がありません。 LEDを流れる電流は従来の接続と同じように流れるため、これらが必要です。 しかし、LEDをオンにするためにコントローラーの2本の脚が使用されているため、LEDのプラスの足に100オームの抵抗器を使用する代わりに、コントローラーの各脚に50オームの抵抗器を配置します。 たぶんこれは完全に正しいわけではありませんが、少なくともこの方式では、LEDはどれも故障しないまでかなり長い間動作しています。
上記の表と上記の例から、このような点灯では1つのLEDしか点灯できないことが明らかです。 複数のLEDの同時動作を保証するために、回路内の動作中のLEDの高速スイッチングが使用されます。 人間の目にはこのスイッチを見る時間がないため、複数のLEDが同時に点灯しているようです。
6つのLEDの回路ですべてのLEDを同時に「点灯」する方法の例を示します。
Arduino IDEのスケッチテキスト
#define n 3 // int pin[n]={11,12,13}; int i,j; void setup() { // INPUT for (byte i=0;i<n;i++) { pinMode(pin[i],INPUT); digitalWrite(pin[i],LOW); } } void loop() { for (i=0;i<n;i++) { // PIN , // pinMode(pin[i],OUTPUT); for (j=0;j<n;j++) { if (i==j) { continue; } pinMode(pin[j],OUTPUT); digitalWrite(pin[j],HIGH); delayMicroseconds(300); digitalWrite(pin[j],LOW); pinMode(pin[j],INPUT); } pinMode(pin[i],INPUT); } }
6つのLEDが少し見えました。 それでも、最初はLOLシールドを作りたかった。 残念ながら、自宅でのLOLシールドの自己組立てという私の夢は成功しませんでした-片面基板を非常に多くのLEDで分離することは不可能です。 メーカーの元のボードを見て、ボードが両面であることがわかりました。ビアを最小限に抑えるために、LEDが封止されている場所で実現されています。 自宅では、メタライゼーションビアの作成は非常に難しい作業です。
その後、私は(私のものではなく、もちろんインターネット上のどこかで見ました)絵文字の形で小さなアイコンを作り、その表現を変えることができるというアイデアを思いつきました。 このようなアイコンをジャケットに付けてパーティーに行くか、面白いキーチェーンの形で着ることができます。
EagleCADで図を描いて、そこに広げました。 残念ながら、このスキームは特別な美しさでは輝いていません。これは私の最初のスキームの1つであり、私が自分で開発したものです。 たくさんのジャンパーがありました。 その主な利点は、片面であり、金属化されたビアがないことです。 ただし、スキームは非常に機能しています。
製造後は次のようになりました。
回路の外観を何らかの方法で改善するために、つまり前面のジャンパーを閉じるために、LED用の穴のあるグラスファイバーのオーバーレイを作成しました。
最後のステップとして、異なる顔文字を表示するArduinoのスケッチを書きました。
回路と離婚したボード、およびプログラムのスケッチはこちらからダウンロードできます。
私のスケッチでは、16進コードを使用してさまざまな種類の絵文字が設定されています。 このコードを検討するのが面倒だと思うたびに、Delphiで追加のプログラムを作成しました。スマイリーで点灯する必要があるLEDを視覚的にマークでき、プログラム自体がスマイリーコードを生成します。 プログラムインターフェイスは次のようになります。
Delphiのプログラムのソースコードと、顔文字を生成するためのプログラム自体は、 ここで取得できます 。
絵文字用のプログラムを作成してデバッグしている間に、回路の2番目の部分を作成する方法について考え始めていました。 Arduinoボードと「スマイリー」ボードがパーティーで立ち往生したり、キーチェーンとして着用したりすることはありません。 スケッチをデバッグする段階で、Arduinoボードに接続してテーブルに横たわりました。
次に何が起こったのか、私は記事の次の部分で伝えようとします。