Étape 6: Ambi light - Arduino côté
Bien sûr, il serait totalement cool d’être en mesure de contrôler la lumière d’ambiance de votre ordinateur. Par exemple, pour créer un son ou un ambilight contrôlée disco. Cette section met l’accent sur la partie de l’ambilight, à l’avenir, je vais ajouter plus de fonctionnalités.Eh bien, il n’y a aucun circuit supplémentaire parce qu’il est diffusé dans l’Arduino. Ce que nous allons utiliser est les fonctionnalités de la série communiction et certains logiciels « Traitement 1.0 ». Accrocher votre arduino à votre ordinateur via un câble USB (si vous ont été téléchargement sketches à elle, il est déjà).
Pour l’arduino, faut bien ajouter du code supplémentaire pour communication série. Le code passera en mode Ecoute, transformant des capteurs capacitifs tant il reçoit les valeurs RVB de l’ordinateur. Il définit ensuite les valeurs RVB aux broches PWM. C’est mon code final pour l’instant, vérifiez les modifications vous-même :
---Code d’Ambilight Arduino---
#include
const inverti boolean = true ;
const long timeout = 10000 ;
long commStart = 0 ;
char de val ;
Déclaration de capteur capacitif
CapSense In1 = CapSense(2,4) ; 2 M résistance entre les bornes 4 & 2, broche 2 est capteur broche, ajouter fil, feuille
CapSense In2 = CapSense(2,7) ; 2 M résistance entre les bornes 4 & 6, broche 6 est capteur broche, ajouter fil, feuille
CapSense In3 = CapSense(2,8) ; 2 M résistance entre les bornes 4 & 8, broche 8 est capteur broche, ajouter fil, feuille
CapSense In4 = CapSense(2,12) ; 2 M résistance entre les bornes 4 & 8, broche 8 est capteur broche, ajouter fil, feuille
CapSense In5 = CapSense(2,13) ; 2 M résistance entre les bornes 4 & 8, broche 8 est capteur broche, ajouter fil, feuille
Déclarations de broches PWM
int PinR1 = 3 ;
int PinG1 = 5 ;
int PinB1 = 6 ;
Autres variables
int Color1 = 128 ; Commencez à un rouge comme couleur
int Brightness1 = 255 ; commencer à pleine intensité
int RedValue1, GreenValue1, BlueValue1 ; Les composants RVB
void setup()
{
Serial.Begin(9600) ; commencer la série communiction
capteur de la valeur des valeurs de délai d’attente
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()
{
commencer à long = millis() ;
total1 long = In1.capSense(30) ;
long total2 = In2.capSense(30) ;
longueur total 3 = In3.capSense(30) ;
total4 long = In4.capSense(30) ;
total5 long = In5.capSense(30) ;
Si (Serial.available()) {/ / si les données sont disponibles pour lire,
Val = Serial.read() ; Lisez-le et stockez-la dans le val
commStart = millis() ;
Si (val == les de ') {char début //If est reçu,
while (!. Serial.available()) {} //Wait jusqu'à ce que la valeur suivante.
RedValue1 = Serial.read() ; Une fois disponible, assigner.
while (!. Serial.available()) {} //Same comme ci-dessus.
GreenValue1 = Serial.read() ;
while (!. {Serial.available())}
BlueValue1 = Serial.read() ;
}
Serial.Print(RedValue1) ;
Serial.Print(GreenValue1) ;
Serial.println(BlueValue1) ;
} else if ((millis()-commStart) > 1000) {}
Si {(total2 > 150)
Couleur1 ++ ; incrémenter la couleur
if(color1 > 255) {/ /
Color1 = 0 ;
}
} ElseIf (total 3 > 200) {}
Color1--; décrémenter la couleur
if(color1 < 0) {/ /
Color1 = 255 ;
}
}
hueToRGB (Color1, Brightness1) ;
}
analogWrite (PinR1, RedValue1) ;
analogWrite (PinG1, GreenValue1) ;
analogWrite (PinB1, BlueValue1) ;
}
fonction pour convertir une couleur en ses composantes rouge, vert et bleu.
void hueToRGB (int teinte, luminosité int)
{
unsigned int scaledHue = (teinte * 6) ;
unsigned int segment = scaledHue / 256 ; segment de 0 à 5 autour de la roue de couleur
unsigned int segmentOffset = scaledHue - (segment * 256) ; position dans le segment
compliment unsigned int = 0 ;
unsigned int prev = (luminosité * (255 - segmentOffset)) / 256 ;
unsigned int = next (luminosité * segmentOffset) / 256 ;
if(Invert)
{
luminosité = 255-luminosité ;
compliment = 255 ;
PREV = 255-prev ;
Next = 255-suivant ;
}
commutateur (segment) {}
case 0: / / rouge
RedValue1 = luminosité ;
GreenValue1 = prochaine ;
BlueValue1 = compliment ;
rupture ;
cas 1: / / jaune
RedValue1 = prev ;
GreenValue1 = luminosité ;
BlueValue1 = compliment ;
rupture ;
case 2: / / vert
RedValue1 = compliment ;
GreenValue1 = luminosité ;
BlueValue1 = prochaine ;
rupture ;
case 3: / / cyan
RedValue1 = compliment ;
GreenValue1 = prev ;
BlueValue1 = luminosité ;
rupture ;
case 4: / / bleu
RedValue1 = prochaine ;
GreenValue1 = compliment ;
BlueValue1 = luminosité ;
rupture ;
cas 5: / / magenta
par défaut :
RedValue1 = luminosité ;
GreenValue1 = compliment ;
BlueValue1 = prev ;
rupture ;
}
}
---END---