Todo lo que se adquiere por el exceso de trabajo & lt; code class = & quot; cpp & quot; & gt; // beta 3 - zona de la distancia calibrada a un profesional de ajuste proporcional de brillo y tono // beta 4 - añadido Tally luz externa conmutable, control remoto de la lámpara // beta 4 - compresión de los valores de temperatura de entrada para las temperaturas de color fijos // beta 4 - ajustar la temperatura de color: / * -35 a -25 -25 0 Azul - turquesa 15 -15 -15 - cian claro 0 50 0 - 15 Luz Verde 85 15-20 100 Verde 20-25 Amarillo-verde 170 25 - 30 Amarillo-Rojo Frambuesa 30 + 235 254 // RED: si (colorv & lt; 100) {targetR = colorv * 0,05; } Else {targetR = 5+ (colorv-100) * 1,29; } // VERDE si (colorv & lt; 75) {// 0-180 targetG = 2.4 * colorv; } Si (colorv & gt; 75 & amp; & amp; colorv & lt; 100) // {180-254 targetG = 180 + (colorv-75) 2.96 *; } Si (colorv & gt; 100 & amp; & amp; colorv & lt; 150) {// 254 targetG = 254; } Si (colorv & gt; 150 & amp; & amp; colorv & lt; 200) // {254-154 targetG = 254 - (colorv-150) * 2; } Si (colorv & gt; 200) {// 154-0 targetG = 154 - (colorv-200) * 2,85; } // Si AZUL (colorv & lt; 100) {targetB = 254 - colorv * 2.54; } Else {targetB = colorv * 0.05; } * / #include & Lt; RCSwitch.h & gt; // Control de sockets SC2260 / 2262 http://code.google.com/p/rc-switch/ #include & lt; livolo.h & gt; // Control switches Livolo #define TxPin 8 // pin transmisor Livolo Livolo (8); // Objeto Livolo RCSwitch myswitch = RCSwitch (); // Objeto RC-Switch int WeatherData = 0; dimmerDelay largo sin signo, Timerstart, TimerStop, timerSwitchStart, timerSwitchStop, timerRange; // Timers int prevRange, nowRange, tempRange, switchRange, vectorRange, initRange, telémetro, tempC; byte nightLightLevel, arco iris, delta, redb, Greenb, blueB, targetL, targetR, targetG, targetB, lastValueRGB; LightMode byte = 0; // Lámpara Modo (0 - luz de noche 1 - lámpara, 2 - termómetro, 3 - Manual de arco iris, 4 - arco iris automático) byte lastMode = 1; // Modo para la primera convocatoria siempre lámpara byte valueRGB = 0; // Brillo o tono (nowRange valor normalizado) rainbowUp boolean, followMeLight; // Dirección arco iris momento boolean = false; // Sign corriendo temporizador (mano sobre la lámpara) SWITCHLOCK boolean = false; // Firma la prohibición de cambiar a la eliminación de la lámpara de mano con tempLock boolean = false; // Sign prohibición de la temperatura de la pantalla para producir una nueva luz de fondo boolean = false; // Sign corriendo mainLight boolean nuevo la luz = false; // Señal de trabajar tragaluz boolean NightLight = false; // Sign modo de luz nocturna tempRcvd boolean = false; // Señal de la temperatura resultante 65 // #define nightLightLimit brillo de luz nocturna #define rangePin A0 // #define redPin sensor de obstáculos 9 // #define greenPin rojo verde 10 // 11 inferior #define azul // #define BluePin 630 // zona inferior ajuste // #define ajuste de zona top 20 // #define delta desviación admisible superior 135 en la determinación del #define shortDelay distancia 350 // retardo para cambiar los modos #define longDelay 3000 se necesita 100 // #define timeOutRange cálculo distancia de separación desde & quot ; slip & quot; distancia mano varía, y cambiando así el brillo o el color #define rainbowStep 75 // cambiar sombra intervalo del arco iris 35 // #define velocidad dimmerStep lamparita mudo void setup () {// Serial.begin (9600); pinMode (rangePin, INPUT); pinMode (redPin, OUTPUT); pinMode (greenPin, OUTPUT); pinMode (BluePin, OUTPUT); mySwitch.enableTransmit (TxPin); // Permite permanecer mySwitch.enableReceive (0); // Recepción de compañía (interrumpir 0 - & gt; pin 2) rgbLight (0, 0, 0); // La lámpara está apagada lastMode = 1; // Primero inclusión es siempre en el modo de luz timerRange = millis (); // Inicia el temporizador para leer periódicamente nowRange distancia = GetRange (); // Primero distancia de cálculo} void loop () {// DISTANCIA calcular periódicamente si ((millis () - timerRange) & gt; timeOutRange) {// tiempos de cálculo de distancia timeOutRange prevRange = nowRange; // Memoria del valor anterior de la distancia nowRange = GetRange (); // El valor actual de la distancia timerRange = millis (); // Cambiar la distancia temporizador cálculo del intervalo // Serial.print (& quot; Rango: & quot;); // Serial.println (nowRange); } // Pasó la mano - se inicia la mano temporizador y de conmutación (en su caso), detenido - funciones de servicio (si es necesario) si ((nowRange & lt; inferior + delta) & amp; & amp; (nowRange & gt; superior)) {// si la distancia es mayor que el umbral y menor que el límite superior si (nowRange & gt; inferior - delta) {// apagar la luz antes de & quot; abajo & quot; como un indicador de la mano con la exclusión completa de (2 * delta) valueRGB = 0; } Else {valueRGB = 254 - mapa (nowRange, superior, inferior, 0, 254); // Fundido el valor actual a una gama de 0 a 254 y & quot; revolución & quot; } // Serial.print (& quot; valueRGB: & quot;); // Serial.println (valueRGB); // Mapa Color para cambiar el fondo y un tragaluz si (LightMode == 1) {// si el modo de lámpara si (valueRGB & gt; 70 & amp; & amp; valueRGB & lt; 110) {// si la mano en la mitad de la mitad inferior de followMeLight = true ; // Kill mordió Dimming está permitido luz blanca único indicador sombra lastValueRGB = valueRGB; // Memoria de la última valores de brillo rgbLight (0, 255, 0); // El color verde como un indicador de la capacidad de cambiar & quot; cerca de & quot; Luz // Serial.println (& quot; Conjunto verde a 255 & quot;); } Else {if (valueRGB & gt; 175 & amp; & amp; valueRGB & lt; 215) {// si la mano en la mitad de la mitad superior followMeLight = true; lastValueRGB = valueRGB; // Memoria de la última valores de brillo rgbLight (0, 0, 255); // El color azul como un indicador de la capacidad de cambiar & quot; ahora & quot; Luz // Serial.println (& quot; Set Blue a 255 & quot;); } Else {if (valueRGB & gt; 235) {// si la mano está en el límite superior followMeLight = true; lastValueRGB = valueRGB; // Memoria de la última valores de brillo rgbLight (valueRGB, 0, 0);