Paso 5: Luz humor - código & Control
La luz de estado de ánimo está controlada por los sensores capacitivos. Por ahora, sólo programé sensores 2 y 3 para cambiar de color. Los otros sensores no tienen ninguna función hasta el momento. Aquí está el código:---Código de Control de Arduino humor---
#include
const invertir booleano = true;
tiempo de espera largo const = 10000;
Declaración de sensor capacitivo
CapSense In1 = CapSense(2,4); 2 M resistencia entre pines 4 & 2, pin 2 pin sensor, agregar alambre, papel de aluminio
CapSense In2 = CapSense(2,7); 2 M resistencia entre pines 4 y 6, pin 6 pin sensor, agregar alambre, papel de aluminio
CapSense In3 = CapSense(2,8); 2 M resistencia entre pines 4 y 8, pin 8 pin sensor, agregar alambre, papel de aluminio
CapSense In4 = CapSense(2,12); 2 M resistencia entre pines 4 y 8, pin 8 pin sensor, agregar alambre, papel de aluminio
CapSense In5 = CapSense(2,13); 2 M resistencia entre pines 4 y 8, pin 8 pin sensor, agregar alambre, papel de aluminio
Declaraciones de Pin PWM
int PinR1 = 3;
int PinG1 = 5;
int PinB1 = 6;
Otras variables
int Color1 = 128; desde un rojo como color
int Brightness1 = 255; iniciar en el brillo completo
int RedValue1, GreenValue1, BlueValue1; Los componentes RGB
void setup()
{/ / establecer valores de tiempo de espera de sensor
In1.set_CS_AutocaL_Millis(timeout);
In2.set_CS_AutocaL_Millis(timeout);
In3.set_CS_AutocaL_Millis(timeout);
In4.set_CS_AutocaL_Millis(timeout);
In5.set_CS_AutocaL_Millis(timeout);
}
void loop()
{
tiempo Inicio = millis();
largo total1 = In1.capSense(30);
total2 largo = In2.capSense(30);
total3 largo = In3.capSense(30);
total4 largo = In4.capSense(30);
total5 largo = In5.capSense(30);
Si {} (total2 > 150)
Color1 ++; incremento del color
if(color1 > 255) {/ /
Color1 = 0;
}
} else if (total3 > 200) {}
Color1--; disminuir el color
if(color1 < 0) {/ /
Color1 = 255;
}
cambio de color a rgb
hueToRGB (Color1, Brightness1);
escribir los colores a los pines PWM
analogWrite (PinR1, RedValue1);
analogWrite (PinG1, GreenValue1);
analogWrite (PinB1, BlueValue1);
}
función para convertir un color en sus componentes rojo, verde y azul.
void hueToRGB (int tono, int brillo)
{
unsigned int scaledHue = (tono * 6);
unsigned int segmento = scaledHue / 256; segmento de 0 a 5 en la rueda de color
unsigned int segmentOffset = scaledHue - (segmento * 256); posición dentro del segmento de
complemento de unsigned int = 0;
unsigned int anterior = (brillo * (255 - segmentOffset)) / 256;
unsigned int siguiente = (brillo * segmentOffset) / 256;
if(Invert)
{
brillo = 255-brillo;
cumplido = 255;
Prev = 255-anterior;
siguiente = 255-siguiente;
}
interruptor (segmento) {}
caso 0: / / rojo
RedValue1 = brillo;
GreenValue1 = siguiente;
BlueValue1 = cumplido;
rotura;
caso 1: / / amarillo
RedValue1 = anterior;
GreenValue1 = brillo;
BlueValue1 = cumplido;
rotura;
caso 2: / / verde
RedValue1 = cumplido;
GreenValue1 = brillo;
BlueValue1 = siguiente;
rotura;
caso 3: / / cian
RedValue1 = cumplido;
GreenValue1 = anterior;
BlueValue1 = brillo;
rotura;
caso 4: / / azul
RedValue1 = siguiente;
GreenValue1 = cumplido;
BlueValue1 = brillo;
rotura;
caso 5: / / magenta
por defecto:
RedValue1 = brillo;
GreenValue1 = cumplido;
BlueValue1 = anterior;
rotura;
}
}
---FIN---