
実際、ワイヤの数を減らす方法がすでに提供されています。 たとえば、4ビットモード。 まだたくさん? I
2 Cを備えたディスプレイモジュールがあります。ただし、完璧に制限はありません。追加のArduino(遅かれ早かれ多数登場)がある場合は、ディスプレイをデータソースからある程度離して2線ケーブルで接続できます。
同じペアのワイヤで電力とデータを転送する1つの方法は次のとおりです。 データ信号は高周波で変調されて結合され、ラインの反対側でチョークとコンデンサを使用して復調器に供給するために分離されます。 ただし、DC電源を使用すると、インターコムキーで使用される方法と同様に、より簡単な方法を使用できます。 この場合、変調器と復調器は必要ありません;送信側では、電源回路を切り替えるキーで十分です:

トランジスタ-AO3400AおよびAO3401A。 2番目は5 A(他のソースによると-4)に耐えることができますが、ここでは200 mAを切り替えるだけです。 キーへのシリアルデータのフローは、任意のマイクロコントローラーから提供できますが、設計は実験的であるため、著者はPythonスクリプトとUSB-UARTコンバーターを実行するPCを使用しました。
著者のパワーブレーカーはbeいものでしたが、非常に強力でした。

ラインの反対側で、パルス電圧がフィルター付きの半波整流器に印加されます(この場合、整流は必要ありませんが、ダイオードまでの電圧が脈動している必要があります) Arduinoは、シリアルデータをモジュールに必要なパラレルデータに変換します。 注意、KB1013VG6上のモジュールのピン留めは標準ではありません。 ダイオードへのリップル電圧は、Arduinoデジタル入力の1つに印加されます。

それで実際の生活の中で見えます:

ファームウェアは最大限に簡素化されており、ディスプレイコントローラーの初期化コマンド(および他のすべてのコマンド)を独自に生成することもないため、送信側はそれらを送信する必要があります。 しかし同時に、それは直接アドレス指定された最も単純なシングルバイトコマンドを認識します。 ここで、xは下位ニブル、コマンドは最高ニブルです。
0xA [x]-ニブルxをモジュールのピン4〜7に適用します
0xB [x]-ニブルxの最下位ビットをRSモジュールの入力に送信します
0xC [x]-ニブルxの最下位ビットをENモジュールの入力に送信します
0xD [x]-ニブルxに比例してバックライトの明るさ(PWMで調整可能)を設定します
必要なソフトウェアはすべて
ここにあり
ます 。 すべてがどのように機能するかを示すために、著者はこのシナリオを作成しました。

そして発売: