Motion Sensing pärlstav gardin (1 / 7 steg)
Steg 1: Gör den grundläggande kretsen
Efter kopplingsschemat ovan, tråd en RGB LED och rörelsesensorn till Arduino (Obs: kontrollera databladet för din särskilda rörelsesensor innan ledningar). Kör koden nedan och bekräfta att lysdioden går genom alla tre färger unisont när rörelsesensorn upptäcker rörelse.
Du kan justera koden för att ändra färgen på LED och göra oavsett mönster du gillar. Hade vår två lysdioder (helt enkelt ansluta den till tre oanvända PWM stift) och var satt att alternera genom häftiga färger (en uppsättning av lysdioder bleknat mellan blått och rött, den andra mellan grönt och blått).
(Hur koden fungerar: i grund och botten koden är en modifierad version av Sparkfuns kod för att använda ett fotomotstånd styra lysdioder. Om rörelsesensorn "ser" något, spänningen i A0 spikar. När koden identifierar denna spike, lysdioderna går genom deras färger och om det finns ingen spike lysdioderna stanna utanför.)
KOD:
int lightPin = 0; faktiskt rörelsesensorn
LED leder ansluten till PWM stift
CONST int RED_LED_PIN = 9;
CONST int GREEN_LED_PIN = 10;
CONST int BLUE_LED_PIN = 11;
Används för att lagra den aktuella intensitetsnivån av de enskilda lysdioderna
int redIntensity = 0;
int greenIntensity = 0;
int blueIntensity = 0;
Tid vi spenderar visar varje färg
CONST int DISPLAY_TIME = 50; I millisekunder
void setup()
{
pinMode (ledPin1, produktionen); Anger det led stiftet till utgång
pinMode (ledPin2, produktionen); Anger det led stiftet till utgång
pinMode (ledPin3, produktionen); Anger det led stiftet till utgång
Serial.BEGIN(9600);
}
void loop()
{
int lightLevel = analogRead(lightPin); Läs rörelsesensorn
Serial.println(lightLevel);
om (lightLevel < 650) {//if sensorn ser rörelse (spänningstoppar över tröskeln)
Cykeln färg från röd till och med till grön
(I denna slinga vi flytta från 100% röd, 0% gröna till 0% röd, 100% grön)
för (greenIntensity = 0; greenIntensity < = 255; greenIntensity += 5) {
redIntensity = 255-greenIntensity;
analogWrite (GREEN_LED_PIN, greenIntensity);
analogWrite (RED_LED_PIN, redIntensity);
Delay(DISPLAY_TIME);
}
Cykla färg från grönt via blå
(I denna slinga vi flytta från 100% grön, blå till grön 0% 0%, 100% blå)
för (blueIntensity = 0; blueIntensity < = 255; blueIntensity += 5) {
greenIntensity = 255-blueIntensity;
analogWrite (BLUE_LED_PIN, blueIntensity);
analogWrite (GREEN_LED_PIN, greenIntensity);
Delay(DISPLAY_TIME);
}
Cykel cykel från blått genom röd
(I denna slinga vi flytta från 100% blå, 0% rött till 0% blå, 100% rött)
för (redIntensity = 0; redIntensity < = 255; redIntensity += 5) {
blueIntensity = 255-redIntensity;
analogWrite (RED_LED_PIN, redIntensity);
analogWrite (BLUE_LED_PIN, blueIntensity);
Delay(DISPLAY_TIME);
}
}
annat {//if sensorn inte se något
analogWrite (RED_LED_PIN, 0);
analogWrite(BLUE_LED_PIN,0);
analogWrite(GREEN_LED_PIN,0);
digitalWrite(ledPin1,LOW);
digitalWrite (ledPin2, låg);
digitalWrite (ledPin3, låg);
}
}