真空発光インジケータの使用

少し前に、私は安価なVFD-スクリーンを見つけました 。 それから私は時計のようなものを作り、それをホームサーバーに接続しました。







これらのディスプレイは非常にきれいに見え、非常に使いやすいため、多くのプロジェクトに適しています。



IEE 036X2–122–09220ディスプレイ(別名IEE 36199-01)を使用しました。これらはibeyにあります。 ほとんどの場合、IEEの他のVFDでの作業は同じです(キャッシュレジスタなどの他の多くの同様のディスプレイと同様)。



このディスプレイは、3つのパラレルインターフェイス(プロセッサバスIntel 8041/42およびMotorola 6821、エミュレーションモードHD44780)、およびRS-232レベルの従来の非同期シリアル入力をサポートしています。 パラレルインターフェイスは、完成したデバイスにディスプレイを埋め込むのに便利ですが、シリアル入力を使用する方が便利です。



ディスプレイコネクタ:







+5 VDC(電源)、COMMON(グランド)、およびSERIAL_IN(シリアル入力)のみが必要です。 残りのピンはパラレルインターフェイスに使用され、既に電源にプルアップされており、吊り下げたままにすることができます。



USBポートまたはPC電源からディスプレイに電力を供給できます。 通信には、COMポートを使用するのが最も簡単です。







ただし、もちろん、何らかの方法でUSBにしがみついた方が良いでしょう。 たとえば、 Tin 2313一般的なAVR-CDCアダプタを使用し、MAX232でレベルコンバータを追加します。 確かに、このアダプターでは、64ビットDebianに切り替えたときに問題が発生しました(デバイスはシステムによって正常に認識されるように見えましたが、機能しませんでした)。 このUSB-COMテールは、中国のオンラインストアで購入したPL2303とMAX212で救助に来ました。







テールを切断し、+ 5 VDCとCOMMONディスプレイ電源を直接USB(それぞれ赤と黒のワイヤ)に接続し、SERIAL_INをCOMポートのピン3(TxD)に接続しました。







私は食物のために100マイクロファラッドでコンデンサーを掛けました(これは必要ではありませんが)。







たとえば、画面を確認するには、microcomが適しています。



sudo apt-get install microcom







sudo microcom -s 9600 -p /dev/ttyUSB0







/ dev / ttyUSB0は、PL2303、FT232などのアダプター用です。 コンピューターのCOMポートには、おそらく/ dev / ttyS0、AVR-CDCなどのアダプターは/ dev / ttyACM0などに存在します。



9600は、ジャンパーで選択されたディスプレイのシリアル入力速度です。







ディスプレイで使用される文字セットはASCIIに似ています。 microcom'eに何かを入力します-ディスプレイに表示されます。







ディスプレイを制御するために、 lcd4linuxlcdprocなどのようなものを適応させることができます。 しかし、それらの機能はしばしば不十分である可能性があり、一般的に、自分で書くのは簡単です)



私たちは真珠に書きます 簡潔で理解しやすいです。



開始するには、リアルタイムデータを表示するために、バッファリングを解除する必要があります。



$| = 1;







これで、真珠は自動的にバッファをフラッシュします。



表示は特殊文字によって制御されます。 たとえば、0x0F-カーソルを表示し、0x15-画面をクリアします。 詳細はドキュメントに記載されています。リンクは以下に示されています。



時計を書きましょう。



 #!/usr/bin/perl use strict; use warnings; use LWP::Simple; #   sub display_init() { $| = 1; #     binmode(STDOUT,':raw'); #    print pack("C",0x14); #     print pack("C",0x0e); #   print pack("CCCCCCC",0x18,0xf6,0x00,0x04,0x44,0x40,0x00); #   } #     sub display_goto() { my ($x, $y) = @_; my $pos = $x + $y*20; print pack("CC",0x1b,$pos); } #    sub get_weather() { my ($city) = @_; my $url = "http://www.google.com/ig/api?weather=$city"; my $data = get $url or return undef; if($data =~ /<current_conditions>(.+?)<\/current_conditions>/) { my $weather = $1; my %info; while($weather =~ /<(.+?) data="(.+?)"\/>/g) { $info{$1} = $2; } return \%info; } return undef; } #   sub display_time() { my($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time()); my @abbr = qw( Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec ); printf "%s %02d %02d:%02d:%02d",$abbr[$mon],$mday,$hour,$min,$sec; } #   sub display_weather { my $city = shift; my $info = &get_weather($city); if(!$info) { print "Err!"; return; } my $temp = int($info->{temp_c}); printf("%+3d%s",$temp,chr(0xf6)); } &display_init(); my $last_weather_update = 0; while(1) { #   &display_goto(0,0); &display_time(); #   (   ) if(time() - $last_weather_update > 30*60) { &display_goto(16,0); &display_weather("Novosibirsk"); $last_weather_update = time(); } sleep 1; }
      
      







実行しましょう。



./vfd_clock.pl | sudo microcom -s 9600 -p /dev/ttyUSB0











これが私の現在のバージョンです。 LAの表示、空きメモリ、ディスク容量、およびMinecraftサーバー上のオンライン。







それはあなたが美しいでたらめを作ることができる方法です。 ご清聴ありがとうございました。



ドキュメントを表示します

私の管理プログラム



All Articles