Working thermo.py with LED scroller

master
James Gao 2014-10-16 07:08:05 +00:00
rodzic b35dbded3b
commit d1f5faef36
2 zmienionych plików z 23 dodań i 17 usunięć

Wyświetl plik

@ -168,16 +168,14 @@ class Alphanumeric(object):
# Set the appropriate digit # Set the appropriate digit
self.disp.setBufferRow(charNumber, value | (dot << 14)) self.disp.setBufferRow(charNumber, value | (dot << 14))
class AlphaScroller(threading.Thread): class AlphaScroller(threading.Thread):
def __init__(self, address=0x70, interval=.25): def __init__(self, address=0x70, interval=.25):
self.interval = interval self.interval = interval
self.disp = Alphanumeric(address) self.disp = Alphanumeric(address)
self.text = [('',)]*4 self.text = [(' ',)]*4
self.counter = 0 self.counter = 0
super(AlphaScroller, self).__init__() super(AlphaScroller, self).__init__()
self.daemon = True
self.running = True self.running = True
def stop(self): def stop(self):
@ -186,12 +184,12 @@ class AlphaScroller(threading.Thread):
def set_text(self, text, pad=True, reset=True): def set_text(self, text, pad=True, reset=True):
i = 0 i = 0
self.text = [] self.text = []
while i < len(text)-1: while i < len(text):
if text[i+1] == ".": if i+1 < len(text) and text[i+1] == ".":
self.text.append((text[i], True))
i+= 1 i+= 1
self.text.push((text[i], True))
else: else:
self.text.push((text[i],)) self.text.append((text[i],))
i+= 1 i+= 1
if pad: if pad:
@ -206,16 +204,24 @@ class AlphaScroller(threading.Thread):
def run(self): def run(self):
while self.running: while self.running:
for i in range(4): for i in range(4):
char = self.text[(self.counter+i) % len(self.text)] if len(self.text) < 4:
char = self.text[i] if i < len(self.text) else (' ',)
else:
char = self.text[(self.counter+i) % len(self.text)]
if len(char[0]) == 0:
print self.text
self.disp.writeChar(i, *char) self.disp.writeChar(i, *char)
time.sleep(self.interval) time.sleep(self.interval)
self.counter += 1 self.counter += 1
for i in range(4):
self.disp.writeChar(i, ' ')
if __name__ == "__main__": if __name__ == "__main__":
scroller = AlphaScroller() scroller = AlphaScroller(interval=.4)
scoller.set_text(list("Hello. World.")+["cone","degree"]) scroller.set_text(list("Hello. World.")+["cone","degree"])
scroller.start() scroller.start()
try: try:
scroller.join() while scroller.isAlive():
scroller.join(1)
except KeyboardInterrupt: except KeyboardInterrupt:
scroller.stop() scroller.stop()

Wyświetl plik

@ -24,7 +24,6 @@ class Monitor(threading.Thread):
self.display = AlphaScroller(interval=.4) self.display = AlphaScroller(interval=.4)
self.display.start() self.display.start()
super(Monitor, self).__init__() super(Monitor, self).__init__()
self.daemon = True
self.running = True self.running = True
def _read_temp(self): def _read_temp(self):
@ -49,7 +48,7 @@ class Monitor(threading.Thread):
return self.history[-1][1] return self.history[-1][1]
def run(self): def run(self):
while running: while self.running:
temp = self._read_temp() temp = self._read_temp()
fahr = temp * 9. / 5. + 32. fahr = temp * 9. / 5. + 32.
now = datetime.datetime.now() now = datetime.datetime.now()
@ -59,13 +58,14 @@ class Monitor(threading.Thread):
if 600 <= temp: if 600 <= temp:
text += [' ', ' ', 'cone']+list("%0.1f"%temp_to_cone(temp)) text += [' ', ' ', 'cone']+list("%0.1f"%temp_to_cone(temp))
text += ' '
self.display.set_text(text, reset=False) self.display.set_text(text, reset=False)
if __name__ == "__main__": if __name__ == "__main__":
mon = Monitor() mon = Monitor()
mon.start() mon.start()
try: try:
mon.join() while mon.isAlive():
mon.join(1)
except KeyboardInterrupt: except KeyboardInterrupt:
mon.stop() mon.stop()