Initial prototype of module

This commit is contained in:
clacktronics 2016-08-10 11:10:13 +01:00
commit 428adc91c7
2 changed files with 47 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
*.pyb

46
dmx.py Normal file
View File

@ -0,0 +1,46 @@
from pyb import UART, Pin, udelay
from array import array
tx_pins = [None, 'X9', 'X3', 'Y9', 'X1', None, 'Y1']
class universe():
def __init__(self, port):
self.port = port
# To check if port is valid
dmx_uart = UART(port)
del(dmx_uart)
# First byte is always 0, 512 after that is the 512 channels
self.dmx_message = array('B', [0] * 513)
def set_channels(self, message):
"""
a dict and writes them to the array
format {channel:value}
"""
for ch in message:
self.dmx_message[ch] = message[ch]
# for i, ch in enumerate(channels):
# self.dmx_message[ch] = values[i]
def write_frame(self):
"""
Send a DMX frame
"""
# DMX needs a 88us low to begin a frame,
# 77uS us used because of time it takes to init pin
dmx_uart = Pin(tx_pins[self.port], Pin.OUT_PP)
dmx_uart.value(0)
udelay(74)
dmx_uart.value(1)
# Now turn into a UART port and send DMX data
dmx_uart = UART(self.port)
dmx_uart.init(250000, bits=8, parity=None, stop=2)
#send bytes
dmx_uart.write(self.dmx_message)
#Delete as its going to change anyway
del(dmx_uart)