Stap 5: Mood light - Code & Control
Het licht van de stemming wordt gecontroleerd door de capacitieve sensoren. Voor nu, ik alleen geprogrammeerd sensoren 2 & 3 voor het wijzigen van de kleur. De andere sensoren hebben geen functie tot nu toe. Hier is de code:---Arduino Mood controlecode---
#include
Const Booleaanse omkeren = true;
Const lange wachttijd = 10000;
Capacitieve sensor verklaring
CapSense In1 = CapSense(2,4); 2 M weerstand tussen de pinnen 4 & 2, pin 2 is pin van de sensor, het toevoegen van draad, folie
CapSense In2 = CapSense(2,7); 2 M weerstand tussen de pinnen 4 & 6, pin 6 is pin van de sensor, het toevoegen van draad, folie
CapSense 3 = CapSense(2,8); 2 M weerstand tussen de pinnen 4 & 8, pin 8 is pin van de sensor, het toevoegen van draad, folie
CapSense In4 = CapSense(2,12); 2 M weerstand tussen de pinnen 4 & 8, pin 8 is pin van de sensor, het toevoegen van draad, folie
CapSense In5 = CapSense(2,13); 2 M weerstand tussen de pinnen 4 & 8, pin 8 is pin van de sensor, het toevoegen van draad, folie
PWM Pin verklaringen
int PinR1 = 3;
int PinG1 = 5;
int PinB1 = 6;
Andere variabelen
int Color1 = 128; beginnen bij een rood als kleur
int Brightness1 = 255; Start bij volledige helderheid
int RedValue1, GreenValue1, BlueValue1; De RGB-componenten
VOID Setup
{/ / set time-outwaarden 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
{
lang starten = millis();
lange total1 = In1.capSense(30);
lange total2 = In2.capSense(30);
lange total3 = In3.capSense(30);
lange total4 = In4.capSense(30);
lange total5 = In5.capSense(30);
Als (total2 > 150) {}
Color1 ++; _ / / verhogen de kleur
if(color1 > 255) {/ /
Color1 = 0;
}
} else if (total3 > 200) {}
Color1--; Decrement de kleur
if(color1 < 0) {/ /
Color1 = 255;
}
tint omzetten in RGB-
hueToRGB (Color1, Brightness1);
schrijven van kleuren naar PWM pinnen
analogWrite (PinR1, RedValue1);
analogWrite (PinG1, GreenValue1);
analogWrite (PinB1, BlueValue1);
}
functie voor het converteren van een kleur naar de componenten rood, groen en blauw.
VOID hueToRGB (int tint, int helderheid)
{
unsigned int scaledHue = (kleurtoon * 6);
unsigned int segment = scaledHue / 256; segment van 0 tot en met 5 rond het kleurenwiel
unsigned int segmentOffset = scaledHue - (segment * 256); positie in het segment
unsigned int compliment = 0;
unsigned int prev = (helderheid * (255 - segmentOffset)) / 256;
unsigned int volgende = (helderheid * segmentOffset) / 256;
if(Invert)
{
helderheid = 255-helderheid;
compliment = 255;
Prev = 255-prev;
volgende = 255-next;
}
schakelaar (segment) {}
geval van 0: / / rood
RedValue1 = helderheid;
GreenValue1 = next;
BlueValue1 = van compliment;
breken;
geval 1: / / geel
RedValue1 = vorige;
GreenValue1 = helderheid;
BlueValue1 = van compliment;
breken;
geval 2: / / groen
RedValue1 = van compliment;
GreenValue1 = helderheid;
BlueValue1 = next;
breken;
Case 3: / / cyaan
RedValue1 = van compliment;
GreenValue1 = vorige;
BlueValue1 = helderheid;
breken;
geval 4: / / blauw
RedValue1 = next;
GreenValue1 = van compliment;
BlueValue1 = helderheid;
breken;
geval 5: / / magenta
standaard:
RedValue1 = helderheid;
GreenValue1 = van compliment;
BlueValue1 = vorige;
breken;
}
}
---EINDE---