Lab_interaccio/2009/CrossFading/data/fadedmx.rtf

181 lines
40 KiB
Plaintext
Raw Normal View History

2025-02-25 21:21:58 +01:00
{\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 }