terom@47: ## Dependencies terom@47: * avrdude terom@47: * avra terom@47: * picocom terom@47: * gcc-avr terom@47: * avr-libc terom@47: terom@47: ## USB terom@47: Configure udev for the `/dev/arduino` symlink. terom@47: terom@47: ### /etc/udev/rules.d/09-arduino.rules terom@47: # /dev/arduino terom@47: SUBSYSTEMS=="usb", ATTRS{product}=="FT232R USB UART", ATTRS{idProduct}=="6001", ATTRS{idVendor}=="0403", SYMLINK+="arduino arduino_$attr{serial}" terom@47: terom@99: ## Protocol terom@99: terom@99: The protocol used is ASCII with decimal. terom@99: Commands are given as a command character, followed by command-specific arguments, and terminated by a newline character. terom@99: The implementation supports up to 8 arguments. terom@99: terom@99: ### Syntax (EBNF) terom@99: terom@99: dmx-command: terom@99: terom@99: cmd { sep arg } eol terom@99: terom@99: cmd: terom@99: 'a'..'z' | 'A'..'Z' terom@99: terom@99: arg: terom@99: '0'..'9' [ arg ] terom@99: terom@99: sep: terom@99: '\t' | ' ' | ',' terom@99: terom@99: eol: terom@99: '\r' | '\n' terom@99: terom@99: ### Commands terom@99: terom@99: The output state keeps track of both channel values, as well as the number of active channels. Only the channels up to terom@99: the highest active channel are output. Up to 255 channels are supported. terom@99: terom@99: All commands ensure that any modified channels will become active. terom@99: terom@99: #### *c*lear terom@99: terom@99: c terom@99: terom@99: Reset to initial state, with all channels inactive. terom@99: terom@99: #### *o*ut terom@99: o ... terom@99: terom@99: Set active channels 0..N to given $value0..$valueN. All remaining channels will be marked inactive. terom@99: terom@99: #### *f*ill terom@99: f ... terom@99: terom@99: Set channel $start+0 = $value0, ... $start+N = $valueN, up to $end, repeating $value0..N as needed. terom@99: terom@99: #### *r*ange terom@99: r terom@99: terom@99: Set channels $start, $start + $step, ..., $end (inclusive) to the given $value. terom@99: terom@99: #### *s*et terom@99: s ... terom@99: terom@99: Set channels start..start+N to the given $value0..$valueN. Ensures channels up to N are valid. terom@99: terom@99: #### *z*ero terom@99: z [] terom@99: terom@99: Set channels 1..$count to zero, and null all following channels.