Stap 6: Ambi light - Arduino-kant
Het zou natuurlijk helemaal cool voor zitten kundig voor controle van het licht van de stemming van uw computer. Gecontroleerde disco bijvoorbeeld een ambilight of een geluid maken. Deze sectie richt zich op het ambilight-deel, in de toekomst zal ik het toevoegen van meer functionaliteit.Nou, is er geen extra circuits, want het is allemaal beschikbaar in de Arduino. Wat we gaan gebruiken, is de seriële communiction mogelijkheden en sommige 'Verwerking 1.0' software. Hook-up je arduino op uw computer via een USB-kabel (als u schetsen naar het uploaden waren, al is).
Voor de arduino, Nou heb toe te voegen wat extra code voor seriële communicatie. De code zal overschakelen naar luisterstand, draaien van de capacitieve sensoren zolang het RGB-waarden van de computer ontvangt. Vervolgens wordt de RGB-waarden ingesteld op de PWM-pinnen. Dit is mijn laatste code voor nu, controleer om de wijzigingen zelf:
---Arduino Ambilight Code---
#include
Const Booleaanse omkeren = true;
Const lange wachttijd = 10000;
lange commStart = 0;
char val;
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
{
Serial.begin(9600); Start seriële communiction
sensor time-outwaarden instellen
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 (Serial.available()) {/ / indien gegevens beschikbaar om te lezen,
Val = Serial.read(); Lees het en sla het in de val
commStart = millis();
Als (val == de ') {//If start char wordt ontvangen,
terwijl (!. Serial.available()) {} //Wait tot de volgende waarde.
RedValue1 = Serial.read(); Als beschikbaar, toewijzen.
terwijl (!. Serial.available()) {} //Same als hierboven.
GreenValue1 = Serial.read();
terwijl (!. Serial.available()) {}
BlueValue1 = Serial.read();
}
Serial.Print(RedValue1);
Serial.Print(GreenValue1);
Serial.println(BlueValue1);
} else if ((millis()-commStart) > 1000) {}
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;
}
}
hueToRGB (Color1, Brightness1);
}
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---