そのときの記録。
使用した LCD ディスプレイは「I2C接続小型LCDモジュールピッチ変換キット」。
これは、「I2C接続小型LCDモジュール 8x2行」と「I2C接続小型LCDモジュール用ピッチ変換基板」をセットにしたもの。LCDモジュールだけではブレッドボードに取り付けるのが大変なので、ピッチ変換基板も必要となる。
I2C の準備はこちら「Raspberry Pi + I2C」を参照。
Python でソフトを作る。
ソースはこれ。日付と時刻を表示する。
#!/usr/bin/env python
# coding: UTF-8
'''
$ sudo apt-get install python-smbus
$ sudo apt-get install i2c-tools
comment out this line in /etc/modprobe.d/raspi-blacklist.conf
blacklist i2c-bcm2708
add the following lines to /etc/modules  
 i2c-dev 
 i2c-bcm2708
and then reboot.
search all addr.
$ sudo i2cdetect -y 1
'''
import smbus
import RPi.GPIO as GPIO
import time
import math
import datetime
class st7032i:
    def __init__(self, addr = 0x3e, ch = 1, contrast = 0x20):
        self.addr = addr
        self.ch = ch
        self.bus = smbus.SMBus(ch)
        self.contrast = contrast
        self.reset()
        
    def reset(self):
        contrast_h = 0x70 | (self.contrast & 0x0f)
        contrast_l = 0x54 | ((self.contrast >> 4) & 0x03)
        self.bus.write_i2c_block_data(self.addr, 0, [0x38, 0x39, 0x14, contrast_h, contrast_l, 0x6c])
        time.sleep(0.25)
        self.bus.write_i2c_block_data(self.addr, 0, [0x0c, 0x01, 0x06])
        time.sleep(0.05)
        
    def clear(self):
        self.bus.write_i2c_block_data(self.addr, 0, [0x01])
        
    def mov_to(self, row = 0, col = 0):
        self.bus.write_i2c_block_data(self.addr, 0, [0x80 + 0x40 * row + col])
        
    def put_str(self, the_str):
        self.bus.write_i2c_block_data(self.addr, 0x40, map(ord, the_str))
        
if __name__ == '__main__':
  try:
    my_lcd = st7032i(0x3e, 1)
    while True:
        time_str = datetime.datetime.now().strftime("%H:%m:%S")
        date_str = datetime.datetime.now().strftime("%y/%m/%d")
        my_lcd.clear()
        my_lcd.mov_to(0, 0)
        my_lcd.put_str(date_str)
        my_lcd.mov_to(1, 0)
        my_lcd.put_str(time_str)
        print date_str + ' ' + time_str
        time.sleep(1)
  except:
    print "Error accessing default I2C bus"
回路は、LCD モジュールに I2C の信号と電源(3.3V)を供給するだけ。
