Raspberry Piでインターネットラジオを作る #5
LCD接続計画開始
ラジオの受信部分とコントロール部分がなんとなくできたので、局名などを表示するためにLCDを付けてみようと思います。
TC1602E-25A
秋葉原のマルツでTC1602E-25Aというのを買ってみました。16文字×2行の3.3V仕様LCDです。これにした理由は、黒背景に赤文字発光がカッコよかったからです。
早速、付属のデータシートとこちらのサイトを参考に結線します。
16x2 LCD Module Control Using Python - Raspberry Pi Spy
ちなみに、コントラスト調整用の半固定抵抗が無かったので無視したところ、真っ赤に光ってまるでダメでした。10KΩの抵抗を付けたらなんとか表示できたので、それでしのいでいます・・・。
では、同サイトのサンプルスクリプトを動かしてみます。
あれれ? 一文字欠けてます。
(文字が白っぽいですが、ちゃんと黒背景に赤文字が出ています)
TC1602E-25Aの初期化
スクリプトを見てもおかしなところは無さそうなので(わからないと言ったほうがいいかも・・・)、初期化の部分を疑ってみます。
TC1602E-25AはHD44780の互換品と書いてありましたが、データシートの初期化手順は、このスクリプトや、HD44780本家の手順より1バイト多く書いてあります。そこで、データシート通りの手順に、きちんとwaitも入れてみたところ、ちゃんと表示ができました。
84行目のdef lcd_init():をいじります。
def msleep(milliseconds): time.sleep(milliseconds / 1000.0) def usleep(microseconds): time.sleep(microseconds / 1000000.0) def lcd_init(): lcd_byte(0x03,LCD_CMD) msleep(4.5) lcd_byte(0x03,LCD_CMD) msleep(4.5) lcd_byte(0x03,LCD_CMD) usleep(100) lcd_byte(0x02,LCD_CMD) lcd_byte(0x02,LCD_CMD) lcd_byte(0x08,LCD_CMD) usleep(50) lcd_byte(0x00,LCD_CMD) lcd_byte(0x08,LCD_CMD) usleep(50) lcd_byte(0x00,LCD_CMD) lcd_byte(0x01,LCD_CMD) msleep(2) lcd_byte(0x00,LCD_CMD) lcd_byte(0x06,LCD_CMD) usleep(50) lcd_byte(0x00,LCD_CMD) lcd_byte(0x0C,LCD_CMD)
ジャーン!
(Raspberry Pi 2 Model B なんですけどね・・・)
でも謎が残ります。
この後、pythonのLCD表示ライブラリを入れてみたのですが、それは何もいじらずにそのまま動きました。wait部分がキモだったのかな・・・?
今回、初めてLCDをいじってみて、だいぶ勉強してしまいました。でもこれはまだまだ触り部分。これをさらに自由に表示させるのは大変そうだわ~~~ということで、ライブラリに頼ることにしましたとさ。
続く