Raspberry pi RubyでLCDにメッセージを表示する
前回作成した I2cライブラリーを使って マルツのMI2CLCD-01 クラスを作ってメッセージを表示してみました。
require './rasp_i2c' class MI2CLCD01 < RaspI2c # <S><CHIP address + r/w><ack><C0+RS+ 0x000000><ack><Data byte><ack><P> CMD= 0x00 # i2c RS=0 Command write DATA = 0x40 # i2c RS=1 Data write def initialize(lcd_addr) super(lcd_addr) # class RaspI2c の initialize を実行 lcd_init() end def lcd_init() # LCDの初期化 # 0x38: 機能設定コマンド 8bitモード、2行表示、通常フォント、命令テーブル0 # 0x39: 機能設定コマンド 8bitモード、2行表示、通常フォント、命令テーブル1 # → ビットモードは、2度設定しないと反映されないらしい # → 命令テーブル1のコマンドを仕様するため、命令テーブル1を選択 # 0x14: 内部OSC周波数セット # 0x78: コントラストセット # 0x5f: コントラストセット # 0x6a: フォロアコントロール init_cmd = [0x38,0x39,0x14,0x78,0x5f,0x6a].pack("C*") write_brock_b(CMD, 6, init_cmd) sleep(1) # 0x0c: ディスプレイ表示ON # 0x01: ディスプレイ表示内容をクリア DDRAMメモリに0を設定 disp_on = [0x0c,0x01].pack("C*") write_brock_b(CMD, 2, disp_on) sleep(0.3) # 0x06: エントリモード設定 書き込み後にカーソルを右へ移動するように設定 entry_mode = [0x0c,0x01].pack("C*") write_brock_b(CMD, 2, entry_mode) sleep( 0.3) end # line 1:1行目 2:2行目 def write(line, text) # 文字を出力(1行目) 0x80: Write Data to RAM (2行目) 0xC0: Write Data to RAM line_sel = (line == 1) ? 0x80 : 0xC0 write_reg_b(CMD, line_sel) write_brock_b(DATA, text.length, text) end end lcd = MI2CLCD01.new(0x3E) lcd.write(2, "1234567890") lcd.write(1, sprintf("%3.2f",ondo)) # ondo=20.12[f:id:ik8823:20160314205114p:plain] >||