diff --git a/scenes/main.tscn b/scenes/main.tscn index 5fcc143..9803975 100644 --- a/scenes/main.tscn +++ b/scenes/main.tscn @@ -4,7 +4,7 @@ [node name="Node2D" type="Node2D"] script = ExtResource("1_hsiae") -master = 240 -red = 215 -green = 85 -blue = 135 +master = 255 +red = 130 +ip_destination = "192.168.21.27" +update_frequency = 40 diff --git a/scripts/artnet.gd b/scripts/artnet.gd index f0d2b26..e52c074 100644 --- a/scripts/artnet.gd +++ b/scripts/artnet.gd @@ -4,33 +4,58 @@ extends Node2D var socket = PacketPeerUDP.new() var data = [] -@export_range(0,255,1) var master = 200 +@export_range(0,255,1) var master = 0 @export_range(0,255,1) var red = 0 -@export_range(0,255,1) var green = 200 +@export_range(0,255,1) var green = 0 @export_range(0,255,1) var blue = 0 -# Called when the node enters the scene tree for the first time. +@export var ip_destination = "127.0.0.1" +@export_range(1,100,1) var update_frequency=10 + +var last_update_delta=0 + func _ready() -> void: - # Server - socket.set_dest_address("192.168.21.27", 6454) + socket.set_dest_address(ip_destination, 6454) + print("connecting to:"+str(ip_destination)) data.resize(512) data.fill(0) -var last_update_delta=0 -# Called every frame. 'delta' is the elapsed time since the previous frame. + func _process(delta: float) -> void: last_update_delta+=delta - if last_update_delta>1.0/40.0: + if last_update_delta>1.0/update_frequency: last_update_delta=0 - print("Update") - data[0]=master #master dimmer - data[2]=red #red - data[3]=green #green - data[4]=blue #blue + setDMXChannel(1,master) #master dimmer + setDMXChannel(3,red) #red + setDMXChannel(4,green) #green + setDMXChannel(5,blue) #blue sendDMX(data) +func setDMXChannel(ch,val,twobytes:bool=false): + if (ch-1>512): + print("DMX Error: Channel out of bounds") + return 0 + + if (!twobytes): + data[ch-1]=val + else: + data[ch-1]=val/256 + data[ch-1+1]=val%256 + + return 1 + +func setDMXChannel_Array(chstart,arr:Array): + var ch=chstart + for a in arr: + if (ch-1<=512): + data[ch-1]=a + ch+=1 + else: + print("DMX Error: Channel out of bounds") + return 0 + return 1 func sendDMX(data:Array): var buffer=PackedByteArray([65, 114, 116, 45, 78, 101, 116, 0, 0, 80, 0, 14]) # Art-Net\0 / OpCodeLo / OpCodeHi / ProtoHi /ProtoLow