kopia lustrzana https://github.com/jamesgao/kiln_controller
Working thermo.py with LED scroller
rodzic
b35dbded3b
commit
d1f5faef36
|
@ -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()
|
||||||
|
|
|
@ -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()
|
||||||
|
|
Ładowanie…
Reference in New Issue