changeset 12:cfdc7ce0d25b

Fix the 7seg support
author Radomir Dopieralski <sheep-devel@sheep.art.pl>
date Sat, 11 Jun 2016 14:27:28 +0200
parents 2d138dbeebd5
children 96520f002017
files ht16k33_seg.py
diffstat 1 files changed, 25 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/ht16k33_seg.py	Sat May 14 23:17:14 2016 +0200
+++ b/ht16k33_seg.py	Sat Jun 11 14:27:28 2016 +0200
@@ -30,9 +30,9 @@
     0b00000000, 0b11101111, # 9
     0b00010010, 0b00000000, # :
     0b00001010, 0b00000000, # ;
-    0b00100100, 0b00000000, # <
+    0b00100100, 0b01000000, # <
     0b00000000, 0b11001000, # =
-    0b00001001, 0b00000000, # >
+    0b00001001, 0b10000000, # >
     0b01100000, 0b10100011, # ?
     0b00000010, 0b10111011, # @
     0b00000000, 0b11110111, # A
@@ -157,7 +157,10 @@
             if s.find('.') > 4:
                 raise ValueError("Overflow")
         self.fill(False)
-        self.text(s)
+        places = 4
+        if '.' in s:
+            places += 1
+        self.text(s[:places])
 
     def hex(self, number):
         s = "{:x}".format(number)
@@ -168,20 +171,28 @@
 
 
 class Seg7x4(Seg14x4):
+    P = [0, 2, 6, 8]
+
     def scroll(self, count=1):
         if count >= 0:
             offset = 0
         else:
             offset = 1
         for i in range(3):
-            self.buffer[i + offset] = self.buffer[i + count]
+            self.buffer[self.P[i + offset]] = self.buffer[self.P[i + count]]
+
+    def push(self, char):
+        if char in ':;':
+            self.put(char)
+        else:
+            super().push(char)
 
     def put(self, char, index=0):
         if not 0 <= index <= 3:
             return
         char = char.lower()
         if char == '.':
-            self.buffer[index * 2 + 1] |= 0b10000000
+            self.buffer[self.P[index]] |= 0b10000000
             return
         elif char in 'abcdef':
             c = ord(char) - 97 + 10
@@ -189,6 +200,14 @@
             c = 16
         elif char in '0123456789':
             c = ord(char) - 48
+        elif char == ' ':
+            c = 0x00
+        elif char == ':':
+            self.buffer[4] = 0x02
+            return
+        elif char == ';':
+            self.buffer[4] = 0x00
+            return
         else:
             return
-        self.buffer[index] = NUMBERS[c]
+        self.buffer[self.P[index]] = NUMBERS[c]