Étape 5: Mood light - Code & contrôle
La lumière est contrôlée par les capteurs capacitifs. Pour l’instant, j’ai programmé uniquement des capteurs 2 & 3 pour changer de couleur. Les autres capteurs n’ont aucune fonction pour le moment. Voici le code :---Code de contrôle d’humeur Arduino---
#include
const inverti boolean = true ;
const long timeout = 10000 ;
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()
{/ / définir des valeurs de délai d’attente de capteur
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 {(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 ;
}
convertir la teinte en RVB
hueToRGB (Color1, Brightness1) ;
écrivez les couleurs aux broches PWM
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---