読者です 読者をやめる 読者になる 読者になる

Raspberry pi RubyでLCDにメッセージを表示する

前回作成した I2cライブラリーを使って マルツのMI2CLCD-01 クラスを作ってメッセージを表示してみました。

f:id:ik8823:20160314205114p:plain

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]

>||