diff --git a/xmit/pixmod_xmit_1v1_xmitRepeat/main.py b/xmit/pixmod_xmit_1v1_xmitRepeat/main.py index 13aa409..219f3a3 100644 --- a/xmit/pixmod_xmit_1v1_xmitRepeat/main.py +++ b/xmit/pixmod_xmit_1v1_xmitRepeat/main.py @@ -2,7 +2,8 @@ from machine import Pin, PWM import time -ir_led = PWM(Pin("GP18")) +#ir_led = PWM(Pin("GP18")) +ir_led = PWM(Pin(6)) ir_led.freq(38000) ir_led.duty_u16(0) @@ -51,11 +52,11 @@ try: #xmit_bin(0b010101, 6) #xmit_bin(7774, 16, 1) xmit_fx(0, 6, 0, repeat=1) - time.sleep_ms(10000) + time.sleep_ms(1000) #xmit_bin(15964, 16, 1) xmit_fx(8, 2, 0, repeat=1) - time.sleep_ms(10000) + time.sleep_ms(3000) except KeyboardInterrupt: ir_led.deinit() diff --git a/xmit/pixmod_xmit_1v2_ethernet/.gitignore b/xmit/pixmod_xmit_1v2_ethernet/.gitignore new file mode 100644 index 0000000..77ac754 --- /dev/null +++ b/xmit/pixmod_xmit_1v2_ethernet/.gitignore @@ -0,0 +1,3 @@ +.venv/ +__pycache__/ +*.pyc diff --git a/xmit/pixmod_xmit_1v2_ethernet/.micropython b/xmit/pixmod_xmit_1v2_ethernet/.micropython new file mode 100644 index 0000000..ad691ab --- /dev/null +++ b/xmit/pixmod_xmit_1v2_ethernet/.micropython @@ -0,0 +1,5 @@ +# MicroPython project configuration +# PORT can be: auto, /dev/ttyUSB0, /dev/ttyACM0, id:, etc. +PORT=auto +# BAUD is optional - mpremote auto-detects, but can be set for edge cases +BAUD=115200 diff --git a/xmit/pixmod_xmit_1v2_ethernet/lib_artnet.py b/xmit/pixmod_xmit_1v2_ethernet/lib_artnet.py new file mode 100644 index 0000000..0d61507 --- /dev/null +++ b/xmit/pixmod_xmit_1v2_ethernet/lib_artnet.py @@ -0,0 +1,49 @@ +import machine +import network +import socket +import struct + + +class ArtNet(): + def __init__(self, id_universe, id_ch_start, id_ch_end): + self.id_universe = id_universe + self.id_ch_start = id_ch_start + self.id_ch_end = id_ch_end + + self.channels = [0]*(id_ch_end-id_ch_start+1) + self.clbk = None + + spi = machine.SPI(0, baudrate=20000000, polarity=0, phase=0, + sck=machine.Pin(18), mosi=machine.Pin(19), miso=machine.Pin(16)) + nic = network.WIZNET5K(spi, machine.Pin(17), machine.Pin(20)) + nic.active(True) + + while not nic.isconnected(): + pass + + print('Art-Net Node IP:', nic.ifconfig()[0]) + + ARTNET_PORT = 6454 + self.s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + self.s.bind(('0.0.0.0', ARTNET_PORT)) + + def tick(self): + data, addr = self.s.recvfrom(1024) + + # packets start with 'Art-Net' + null byte + if len(data) > 18 and data[0:8] == b'Art-Net\x00': + opcode = struct.unpack(' self.id_ch_end): + for i,n in enumerate(range(self.id_ch_start, self.id_ch_end+1)): + self.channels[i] = int(dmx_data[n]) + + if(self.clbk is not None): + self.clbk(self) diff --git a/xmit/pixmod_xmit_1v2_ethernet/lib_pixmod.py b/xmit/pixmod_xmit_1v2_ethernet/lib_pixmod.py new file mode 100644 index 0000000..bc99037 --- /dev/null +++ b/xmit/pixmod_xmit_1v2_ethernet/lib_pixmod.py @@ -0,0 +1,47 @@ +from machine import Pin, PWM +import time + + +class PixMod(): + def __init__(self, pin_nr=6): + #ir_led = PWM(Pin("GP18")) + self.ir_led = PWM(Pin(pin_nr)) + self.ir_led.freq(38000) + self.ir_led.duty_u16(0) + + self.READ_DELAY_US = 10000 + self.PROCESS_DELAY_US = 30000 + # so a single frame takes roughly 200ms + + + def emit_pulse(self, duration_us): + self.ir_led.duty_u16(32768) # 50% duty cycle + time.sleep_us(duration_us) + self.ir_led.duty_u16(0) # 0% duty cycle + + def xmit_bin(self, msg_data_bin, msg_len, repeat=1): + msg_data_bin = (msg_data_bin << 1) + 1 + msg_len += 1 + + for n in range(repeat): + self.emit_pulse(4500) + time.sleep_us(self.PROCESS_DELAY_US) + + for i in range(msg_len-1, -1, -1): + if(msg_data_bin & (1<