From 1867a0eaf154fae2439ee1b6466540c57e11f461 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Hru=C5=A1ka?= Date: Sun, 18 Feb 2018 09:46:59 +0100 Subject: [PATCH] new demo --- ndir_leds.py | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 ndir_leds.py diff --git a/ndir_leds.py b/ndir_leds.py new file mode 100644 index 0000000..a22af1c --- /dev/null +++ b/ndir_leds.py @@ -0,0 +1,35 @@ +import time + +import gex + +with gex.Client(gex.TrxRawUSB()) as client: + ser = gex.USART(client, 'ser') + leds = gex.SIPO(client, 'leds') + + while True: + ser.clear_buffer() + ser.write([0xFF, 0x01, 0x86, 0, 0, 0, 0, 0, 0x79]) + data = ser.receive(9, decode=None) + + pp = gex.PayloadParser(data, endian="big").skip(2) + ppm = pp.u16() + + # The LEDs are connected to two 595's, interleaved R,G,R,G... + nl = (ppm-300)/1700.0 + print("%d ppm CO₂, numleds %f" % (ppm, nl*8)) + + numb = 0 + for i in range(0,8): + if nl >= i*0.125: + if i < 3: + numb |= 2<<(i*2) + elif i < 6: + numb |= 3<<(i*2) + else: + numb |= 1<<(i*2) + + leds.load([(numb&0xFF00)>>8,numb&0xFF]) + + + time.sleep(1) +