comparison py/lcd.py @ 150:171cdf716473

lcd works
author Matt Johnston <matt@ucc.asn.au>
date Tue, 18 Dec 2012 22:20:47 +0800
parents
children 542efb356e46
comparison
equal deleted inserted replaced
149:d686b111dab4 150:171cdf716473
1 #!/home/matt/templog/venv/bin/python
2
3 import smbus
4 import time
5 import random
6 import sys
7
8 class LCD(object):
9
10 COMMAND = 0x00
11 DATA = 0x40
12
13 def __init__(self):
14 self.bus = smbus.SMBus(1)
15 #self.address = 0b0111110
16 self.address = 0x3e
17
18 def setup(self):
19 time.sleep(0.01)
20 cmds = """0x38 function set
21 0x39 function set
22 0x17 freq
23 0x78 # was 0x74 contrast, 101000 = 8 contrast (32 below), total 40
24 0x57 # was 0x54 # power/icon/contrast, 0110 = bon, c5
25 0x6a # was 0x6f follower , follow onr, rab 010 = 1.5
26 0x0c on/off"""
27 for l in cmds.split('\n'):
28 c = eval(l.split()[0])
29 self.cmd(c)
30
31 # self.cmd(0x38)
32 # self.cmd(0x39)
33 # self.cmd(0x14)
34 # self.cmd(0x78) # contrast
35 # self.cmd(0x57) # power/icon/contrast
36 # self.cmd(0x6f) # follower
37 # self.cmd(0x0c)
38 # self.cmd(0x01)
39 # self.cmd(0x04)
40
41 def put(self, pos, word):
42 addr = 0b10000000 + (pos % 16) + (pos>=16)*40
43 self.cmd(addr)
44 for char in word:
45 self.data(ord(char))
46
47 def write(self, a, b):
48 self.bus.write_byte_data(self.address, a, b)
49 time.sleep(0.0001)
50
51 def cmd(self, cmd):
52 self.write(self.COMMAND, cmd)
53
54 def data(self, data):
55 self.write(self.DATA, data)
56
57 l = LCD()
58 l.setup()
59 l.put(0, 'a')
60 l.put(1, 'b')
61 l.put(4, 'b')
62
63 #words = [word.strip() for word in file('/usr/share/dict/words', 'r')]
64 #random.shuffle(words)
65 words = file(sys.argv[1], 'r').read().split()
66
67 pos = 0
68 last = ''
69 for word in words:
70 word = (word + ' '*16)[:16]
71 #pos = (pos + 16) % 32
72 #word = random.sample(words, 1)[0][:16] + ' '*16
73 #char = chr(int(random.random() * 26) + ord('a'))
74 l.put(0, last)
75 l.put(16, word)
76 last = word
77 time.sleep(0.1)