#define packetSize 3 #define modeMask B11000000 #define modeShift 6 #define outputMode B00 #define ledMode B01 #define askMode B10 #define reprogramMode B11 #define waveMask B00110000 #define waveShift 4 #define amplitudeMask B00001100 #define amplitudeShift 2 #define sustainMask B00000011 #define sustainShift 0 #define frequencyMask B11111000 #define frequencyShift 3 #define outputsMask B00000111 #define outputsShift 0 #define frequencyRange 31. #define lowFrequency 1. #define highFrequency 32. #define amplitudeRange 3. #define lowAmplitude .05 #define highAmplitude 1. #define sustainRange 3. #define lowSustain .1 #define highSustain 1 #define irMask B00110000 #define irShift 4 #define redMask B00001111 #define redShift 0 #define greenMask B11110000 #define greenShift 4 #define blueMask B00001111 #define blueShift 0 #define irMax 3. #define rgbMax 15. #define allLeds 4 #define rgbLeds 3 #define askBatteryLife 0 #define askSignalQuality 1 #define askPacketEcho 2 #define askOutputEcho 3 #define keyMask B00111111 #define keyShift 0 #define reOutputMode 0 #define reAddGroup 1 #define reRemoveGroup 2 #define reResetGroup 3 #define outputRepeat 0 #define outputSingle 1 #define outputOff 2 #define oneThird 1./3. #define qualityWindow 100 int nullPacket[packetSize] = {191, 186, 154}; int ledPins[4] = {7, 5, 6, 9}; int outputPins[3] = {3, 10, 11}; int packet[packetSize]; int packetPosition = 0; int address = 1; long groups = 0; float ledIntensity[allLeds] = {255., 230., 200., 255.}; float leds[allLeds]; int outputModeState = outputRepeat; int waves[rgbLeds]; float amplitudes[rgbLeds], frequencies[rgbLeds], sustains[rgbLeds],counters[rgbLeds]; int qualityPosition = 0; int quality = 0; boolean qualityNote[qualityWindow]; int askState = askBatteryLife;