Paso 6: Ambi luz - lado de Arduino
Por supuesto, sería totalmente fresco para poder controlar la luz de estado de ánimo de su equipo. Por ejemplo para crear un sonido o un ambilight controlado por disco. Esta sección se centra en la parte de ambilight, en el futuro voy a añadir más funcionalidad.Bueno, no hay ningún trazado de circuito adicional porque está todo disponible en el Arduino. Lo que vamos a utilizar es la capacidad de comunicación serial y algunos software 'Procesamiento 1.0'. Gancho-up tu arduino al ordenador mediante un cable USB (si se subir bocetos a él, ya es).
Para arduino, así tiene que agregar código adicional para la comunicación serial. El código cambiará al modo de escuchar, giro de los sensores capacitivos como recibe valores RGB de la computadora. A continuación establece los valores RGB a los pines PWM. Este es mi final código por ahora, compruebe los cambios usted mismo:
---Arduino Ambilight código---
#include
const invertir booleano = true;
tiempo de espera largo const = 10000;
commStart largo = 0;
char val;
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()
{
Serial.Begin(9600); iniciar comunicación serial
sistema sensor de valores de tiempo de espera
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 (Serial.available()) {/ / si hay datos disponibles para leer,
Val = Serial.read(); leerla y guardarla en val
commStart = millis();
Si (val == de ') {//If Inicio char es recibido,
mientras (!. Serial.Available()) {} //Wait hasta el siguiente valor.
RedValue1 = Serial.read(); Una vez disponibles, asignar.
mientras (!. Serial.Available()) {} //Same como arriba.
GreenValue1 = Serial.read();
mientras (!. {Serial.Available())}
BlueValue1 = Serial.read();
}
Serial.Print(RedValue1);
Serial.Print(GreenValue1);
Serial.println(BlueValue1);
} else if ((millis()-commStart) > 1000) {}
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;
}
}
hueToRGB (Color1, Brightness1);
}
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---