{\rtf1\ansi\deff0\adeflang1025 {\fonttbl{\f0\froman\fprq2\fcharset0 Nimbus Roman No9 L{\*\falt Times New Roman};}{\f1\froman\fprq2\fcharset0 Nimbus Roman No9 L{\*\falt Times New Roman};}{\f2\fswiss\fprq2\fcharset0 Nimbus Sans L{\*\falt Arial};}{\f3\fmodern\fprq1\fcharset0 DejaVu Sans Mono;}{\f4\fnil\fprq2\fcharset0 DejaVu Sans;}} {\colortbl;\red0\green0\blue0;\red128\green128\blue128;} {\stylesheet{\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af4\afs24\lang255\ltrch\dbch\af4\langfe255\hich\f0\fs24\lang1034\loch\f0\fs24\lang1034\snext1 Normal;} {\s2\sb240\sa120\keepn\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs28\lang255\ltrch\dbch\langfe255\hich\f2\fs28\lang1034\loch\f2\fs28\lang1034\sbasedon1\snext3 Heading;} {\s3\sa120\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af4\afs24\lang255\ltrch\dbch\af4\langfe255\hich\f0\fs24\lang1034\loch\f0\fs24\lang1034\sbasedon1\snext3 Body Text;} {\s4\sa120\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af4\afs24\lang255\ltrch\dbch\af4\langfe255\hich\f0\fs24\lang1034\loch\f0\fs24\lang1034\sbasedon3\snext4 List;} {\s5\sb120\sa120\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af4\afs24\lang255\ai\ltrch\dbch\af4\langfe255\hich\f0\fs24\lang1034\i\loch\f0\fs24\lang1034\i\sbasedon1\snext5 caption;} {\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af4\afs24\lang255\ltrch\dbch\af4\langfe255\hich\f0\fs24\lang1034\loch\f0\fs24\lang1034\sbasedon1\snext6 Index;} {\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034\sbasedon1\snext7 Preformatted Text;} } {\info{\author elab}{\creatim\yr2009\mo11\dy4\hr21\min57}{\revtim\yr0\mo0\dy0\hr0\min0}{\printim\yr0\mo0\dy0\hr0\min0}{\comment StarWriter}{\vern6800}}\deftab709 {\*\pgdsctbl {\pgdsc0\pgdscuse195\pgwsxn11905\pghsxn16837\marglsxn1134\margrsxn1134\margtsxn1134\margbsxn1134\pgdscnxt0 Standard;}} \paperh16837\paperw11905\margl1134\margr1134\margt1134\margb1134\sectd\sbknone\pgwsxn11905\pghsxn16837\marglsxn1134\margrsxn1134\margtsxn1134\margbsxn1134\ftnbj\ftnstart1\ftnrstcont\ftnnar\aenddoc\aftnrstcont\aftnstart1\aftnnrlc \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 // Cross Fading} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 // This example uses channels 1,2 and 3 to drive an RGB lamp and make it fade from one color to another.} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 #include "pins_arduino.h"} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 int sig = 3; // signal} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 int value = 0;} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 int valueadd = 3;} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 byte curr_rgb[3] = \{0,0,0\};} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 byte dmxChannel[64];} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 void setDmxChannel(byte channelID, byte value) \{} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 if (channelID < 64)} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 dmxChannel[channelID] = value;} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 \}} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 /* Sends a DMX byte out on a pin. Assumes a 16 MHz clock.} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 * Disables interrupts, which will disrupt the millis() function if used} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 * too frequently. */} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 void shiftDmxOut(int pin, int theByte)} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 \{} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 int port_to_output[] = \{} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 NOT_A_PORT,} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 NOT_A_PORT,} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 _SFR_IO_ADDR(PORTB),} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 _SFR_IO_ADDR(PORTC),} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 _SFR_IO_ADDR(PORTD)} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 \};} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 int portNumber = port_to_output[digitalPinToPort(pin)];} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 int pinMask = digitalPinToBitMask(pin);} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 // the first thing we do is to write te pin to high} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 // it will be the mark between bytes. It may be also} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 // high from before} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 _SFR_BYTE(_SFR_IO8(portNumber)) |= pinMask;} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 delayMicroseconds(10);} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 // disable interrupts, otherwise the timer 0 overflow interrupt that} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 // tracks milliseconds will make us delay longer than we want.} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 cli();} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 // DMX starts with a start-bit that must always be zero} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 _SFR_BYTE(_SFR_IO8(portNumber)) &= ~pinMask;} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 // we need a delay of 4us (then one bit is transfered)} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 // this seems more stable then using delayMicroseconds} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 asm("nop\\n nop\\n nop\\n nop\\n nop\\n nop\\n nop\\n nop\\n");} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 asm("nop\\n nop\\n nop\\n nop\\n nop\\n nop\\n nop\\n nop\\n");} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 asm("nop\\n nop\\n nop\\n nop\\n nop\\n nop\\n nop\\n nop\\n");} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 asm("nop\\n nop\\n nop\\n nop\\n nop\\n nop\\n nop\\n nop\\n");} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 asm("nop\\n nop\\n nop\\n nop\\n nop\\n nop\\n nop\\n nop\\n");} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 asm("nop\\n nop\\n nop\\n nop\\n nop\\n nop\\n nop\\n nop\\n");} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 for (int i = 0; i < 8; i++)} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 \{} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 if (theByte & 01)} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 \{} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 _SFR_BYTE(_SFR_IO8(portNumber)) |= pinMask;} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 \}} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 else} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 \{} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 _SFR_BYTE(_SFR_IO8(portNumber)) &= ~pinMask;} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 \}} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 asm("nop\\n nop\\n nop\\n nop\\n nop\\n nop\\n nop\\n nop\\n");} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 asm("nop\\n nop\\n nop\\n nop\\n nop\\n nop\\n nop\\n nop\\n");} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 asm("nop\\n nop\\n nop\\n nop\\n nop\\n nop\\n nop\\n nop\\n");} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 asm("nop\\n nop\\n nop\\n nop\\n nop\\n nop\\n nop\\n nop\\n");} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 asm("nop\\n nop\\n nop\\n nop\\n nop\\n nop\\n nop\\n nop\\n");} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 asm("nop\\n nop\\n nop\\n nop\\n nop\\n nop\\n nop\\n nop\\n");} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 theByte >>= 1;} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 \}} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 // the last thing we do is to write the pin to high} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 // it will be the mark between bytes. (this break is have to be between 8 us and 1 sec)} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 _SFR_BYTE(_SFR_IO8(portNumber)) |= pinMask;} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 // reenable interrupts.} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 sei();} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 \}} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 void processDmx() \{} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 /***** sending the dmx signal *****/} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 // sending the break (the break can be between 88us and 1sec)} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 digitalWrite(sig, LOW);} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 delay(10);} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 dmxChannel[0] = 0;} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 for (int count = 0; count <= 512; count++)} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 \{} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 if (count < 64)} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 shiftDmxOut(sig, dmxChannel[count]);} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 else } \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 shiftDmxOut(sig,0);} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 \}} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 /***** sending the dmx signal end *****/} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 \}} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 // fade from current colour to given rgb value} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 // algorithm by David A. Mellis} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 void fadeTo(byte r, byte g, byte b) \{} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 byte i;} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 byte p_start[3];} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 byte p_end[3];} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 p_start[0] = curr_rgb[0];} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 p_start[1] = curr_rgb[1];} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 p_start[2] = curr_rgb[2];} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 p_end[0] = r; } \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 p_end[1] = g; } \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 p_end[2] = b;} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 i = 0;} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 while (i < 255) \{} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 curr_rgb[0] = (p_end[0] - p_start[0]) / 254 * i + p_start[0];} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 curr_rgb[1] = (p_end[1] - p_start[1]) / 254 * i + p_start[1];} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 curr_rgb[2] = (p_end[2] - p_start[2]) / 254 * i + p_start[2];} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 setDmxChannel(1, curr_rgb[0]);} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 setDmxChannel(2, curr_rgb[1]);} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 setDmxChannel(3, curr_rgb[2]);} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 processDmx();} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 i++; } \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 \}} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 \}} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 void setup()} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 \{} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 pinMode(sig, OUTPUT);} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 \}} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 void loop()} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 \{} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 fadeTo(255,0,0);} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 delay(500);} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 fadeTo(0,255,0);} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 delay(500);} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 fadeTo(0,0,255);} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 delay(500); } \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 {\rtlch \ltrch\loch\f3\fs20\lang1034\i0\b0 \}} \par \pard\plain \ltrpar\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sa283\rtlch\af3\afs20\lang255\ltrch\dbch\af3\langfe255\hich\f3\fs20\lang1034\loch\f3\fs20\lang1034 \par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af4\afs24\lang255\ltrch\dbch\af4\langfe255\hich\f0\fs24\lang1034\loch\f0\fs24\lang1034 \par }