教科書を信じているなら、最初の「テレビ」は
ニプコフのディスクで機械的にスキャンされました。 もちろん、誰もがテレビの独自の定義を持ち、家庭での使用にはメカニックはほとんど役に立たないが、私は機械式ディスプレイを作ってみることにした。 幸いなことに、8歳のモーターの専門家がこの家族に現れ、彼は「ハードウェア」をインストールの一部にしました。
Lego Power Functions Medium Motorは9ボルトで駆動し、クランクメカニズムの助けを借りて、数ヘルツの周波数でバーを15の穴にスイングできます。

次のステップは、LEDの取り付けです。 幸いなことに、レゴの穴の直径は正確に5mmなので、ダイオードは多大な労力で完全にフィットし、動作中に緩むことはありません。 彼はカソードを一緒に接続し、0.05の柔らかいワイヤーでアノードを個別に外側に持ってきました。 9本のコンダクターが見つかりましたが、エンジン出力は十分です。

次に、同期を処理する必要があります。 私のエンジンは最もシンプルです-ステップ1ではなく、エンコーダーがないので、フォトセルでサイクルの始まりをキャッチすることにしました。 モーターの後ろには、細いチューブを通して輝く明るいLEDが補強されています。 各回転での光線は、クランクと交差し、フォトレジスタを暗くします。 外部照明からの干渉を減らすために、彼はLEDを正確に、またチューブを通して見ます。

フォトレジスタは、2つのレゴブロックの間に挟むだけで固定されました。

これで、設計をArduinoに接続することができます。 LEDを150オームの制限抵抗を介してデジタル出力に接続し、フォトレジスタをADC入力に接続しました。

その結果、私の「テレビ」は次のようになり始めました。

フォトレジスタが暗くなるのを待つ簡単なプログラムを入力し、指定された間隔で必要なデータをデジタル出力(2..9)で撮影します。 1ピクセルの水平サイズは、手動で選択した遅延によって決定されます。私のインストールでは、最適値は2.3ミリ秒でした。
void setup() { for (int i = 2; i <= 9; i++) { pinMode(i, OUTPUT); } }
さあ、息を止めて、電源を入れてください。ここが素晴らしい瞬間です!

水平方向に30ピクセル、垂直方向に8ピクセル程度の解像度で、遅延が小さいとピクセルが圧縮されすぎます。 フレームレートは毎秒約5です。
次は?
- LEDをデジタル出力に直接接続するのではなく、スイングバーに直接取り付けることができる8ビットバスエクステンダーPCF 8574を介して接続することができます。 次に、8本(I2Cの場合は電源と2本)ではなく、4本の線で十分です。
- モノクロの代わりにRGB LEDを挿入して、色を「TV」にすることができます。
- Arduino UNOでは、USBポートはAtmel ATmega8U2コンバーターに接続されています。 デフォルトでは、コンピュータからはシリアルポートとして認識されますが、マウスやジョイスティックなどのように再プログラムできます。 外付けモニターとして認識できるようにできるのではないか?
参照資料
レゴを使用するというアイデアは、Michael Gasperiの本
Extreme NXTから引用されました。 幸いなことに、Mindstorms NXTを300ユーロで購入する必要はありません。Arduinoを1桁安く購入することもできます。