DIY personlig humör lampa-LUMO (3 / 4 steg)
Steg 3: Kod tid
Författare: Prajjwal
Datum: 25/07/2014
Version: 2.0
// -----------------------------------------------------------------------------------------------------
Detta var när är började göra en humör-lampa men då jag inser att jag kan göra mer än att bara ändra färg
Så gjordes LUMO
Den har flera funtion som jag gjorde till stimuate realtid situationen i lampan
Frånsett bara rainbow förändring finns det massor av andra funktion som jag har kodning //there är 10 alternativ i LUMO version 2.0
// -----------------------------------------------------------------------------------------------------
float RGB [3]. int ldrPin = 0;
LDR i Analog ingång 0 att läsa omgivande ljus int ambientLight;
variabel för att lagra värdet för omgivande ljus int redLed = 11;
Röd LED i Digital Pin 11 (PWM) int greenLed = 10;
Grön LED i Digital Pin 10 (PWM) int blueLed = 9;
blå LED i Digital Pin 9 (PWM) int tillstånd.
void setup() {pinMode(redLed,OUTPUT);
berätta arduino är det en utgång pinMode(greenLed,OUTPUT);
berätta arduino är det en utgång pinMode(blueLed,OUTPUT);
berätta arduino är det en utgång Serial.begin(9600);
Statrting seriell port på 9600 bitar per sekund Serial.println ("=== LUMO välkomnar U ==="); Serial.println ("1:Rainbow färg");
Serial.println ("2:Police lampa");
Serial.println ("3:Digital Flame");
Serial.println ("4:Digital kod").
Serial.println ("6:Abstract färg bleknar");
Ange alla utgångar till låg digitalWrite(redLed,HIGH);
digitalWrite(greenLed,HIGH);
digitalWrite(blueLed,HIGH); }
void loop()
{
om (Serial.available() > 0)
{om (Serial.peek() == "c")
{
Kontrollera för tecken som betyder att detta blir ett kommando
Serial.Read();
ta bort tecknet som innebär att detta är ett kommando från den seriella buffert
State = Serial.parseInt();
lagra våra förväntade heltal i staten
Växla (staten) {
fall 1:changecolor (); semester.
fall 2:police (); semester.
fall 3:flame (); semester.
fall 4:code (); semester.
fall 5:abstract (); semester.
}
}
medan (Serial.available() > 0) {
Kasta allt som vi inte förväntar
Serial.Read(); } } }
void changecolor()
{
för (float x = 0; x
}}
void fade (int r1, int g1, int b1, int r2, int g2, int b2, int t) {
float r_float1, g_float1, b_float1; float r_float2, g_float2, b_float2;
float grad_r, grad_g, grad_b; float output_r, output_g, output_b;
deklarera RGB heltalsvärden som float värden
r_float1 = (float) r1;
g_float1 = (float) g1;
b_float1 = (float) b1;
r_float2 = (float) r2;
g_float2 = (float) g2;
b_float2 = (float) b2;
beräkna priser för R, G och B-värden
grad_r = (r_float2-r_float1) / t; grad_g = (g_float2-g_float1) / t;
grad_b = (b_float2-b_float1) / t;
loop-rundan, uppräkning tidsvärde "i"
för (sväva jag = 0; jag < = t; i ++)
{
output_r = r_float1 + grad_r * i.
output_g = g_float1 + grad_g * i.
output_b = b_float1 + grad_b * i.
Kartlägga värderar - arduino sjunker nuvarande, inte sourcing det
output_r = karta (output_r, 0, 255, 255, 0);
output_g = karta (output_g, 0, 255, 255, 0);
output_b = karta (output_b, 0, 255, 255, 0);
utgång analogWrite (redLed, output_r (int));
analogWrite (greenLed, output_g (int));
analogWrite (blueLed, output_b (int));
Håll på denna färg för 1ms delay(1);
} }
void code() {
While(1) {
SetColor(5,252,17);
Delay(Random(100,500));
SetColor(0,0,0);
Delay(Random(100,500));
}}
void abstract()
{
While(1) {
flyta rf, gf, bf, r1, g1, b1;
R1 = random(0,255);
G1 = random(0,255);
B1 = random(0,255);
RF = random(0,255);
GF = random(0,255);
BF = random(0,255);
Fade(RF,GF,BF,R1,G1,B1,3000);
blekna från rött till grönt under 5 sekunder);
} }