aboutsummaryrefslogtreecommitdiff
path: root/digit.lua
diff options
context:
space:
mode:
Diffstat (limited to 'digit.lua')
-rw-r--r--digit.lua49
1 files changed, 49 insertions, 0 deletions
diff --git a/digit.lua b/digit.lua
new file mode 100644
index 0000000..932ee57
--- /dev/null
+++ b/digit.lua
@@ -0,0 +1,49 @@
+local digit = {}
+
+local function write(data)
+ i2c.start(0)
+ i2c.address(0, 0x70, i2c.TRANSMITTER)
+ i2c.write(0, data)
+ i2c.stop(0)
+end
+
+-- -a-
+-- f b
+-- -g-
+-- e c
+-- -d- p
+local function chr(x)
+ local c = {
+ [' '] = 0, [':'] = 2, ['-'] = 0x40,
+ ['0'] = 0x3f, ['1'] = 0x06, ['2'] = 0x5b, ['3'] = 0x4f, ['4'] = 0x66,
+ ['5'] = 0x6d, ['6'] = 0x7d, ['7'] = 0x07, ['8'] = 0x7f, ['9'] = 0x6f,
+ }
+ return c[x] or c[' ']
+end
+
+function digit.init()
+ i2c.setup(0, 2, 1, i2c.SLOW)
+ write(0x21)
+ digit.on(true)
+ digit.brightness(1)
+ digit.output('00:00')
+end
+
+function digit.on(flag)
+ write(flag and 0x81 or 0x80)
+end
+
+function digit.brightness(val)
+ write(0xe0 + val)
+end
+
+function digit.blink(flag)
+ write(flag and 0x85 or 0x81)
+end
+
+function digit.output(txt)
+ write{ 0, chr(txt:sub(1, 1)), 0, chr(txt:sub(2, 2)), 0,
+ chr(txt:sub(3, 3)), 0, chr(txt:sub(4, 4)), 0, chr(txt:sub(5, 5)) }
+end
+
+return digit