Rörelseaktiverade ljus med Arduino och HC-SR04 sensor (6 / 7 steg)
Steg 6: Arduino skiss
Först ska jag försöka förklara skissen med orden:
Inledningsvis definierar jag tre variabler som är fysiska stiften från HC-SR04 "trigger och echo" och driva reläet.
Den ogiltiga setup, jag börja seriell bildskärmen, definiera utlösaren och relä stift som utgångar eftersom de kommer ut ett resultat medan echo pin definieras som input eftersom det väntar information från utlösaren stift.
Åtgärden sker i den ogiltig loopen:
Först definierar jag två heltal längd och avstånd att lagra den information som samlats in av utlösaren. Då jag berätta avtryckaren för att skicka en ljudvåg med kommandot digitalWrite (trigPin, hög), och sedan vänta halva en millisekund då jag stänga av kommandot digitalWrite (trigPin, låg); . När vågen återvänder jag lagrar informationen i "varaktighet" heltal och aktivera echo PIN-koden genom att använda kommandot pulseIn (echoPin, hög); Nu gör vi lite matte för att avgöra avstånd, vilket är varaktighet/2 då vi delar detta svar med 29,1 få resultat i centimeter.
Nästa steg är att kontrollera resultatet att vi fick: om resultatet är mindre än 13cm, köra lätta subrutinen, om inte gör ingenting. Och visa resultatet på den seriella bildskärmen.
Lätta subrutinen:
När åberopas, det aktiverar makt stafett pinnen, väntar 15 sekunder då det stänger av.
Så enkelt som det :)
Och nu skissen:
#define trigPin 6 //Define HC-SE04 triger på stift 6 på arduino
#define echoPin 5 //Define HC-SE04 eko på stift 5 på arduino
#define bulb 9 //Define reläet signal på stift 9 på arduino
void setup()
{
Serial.BEGIN (9600); Starta den seriella monitorn
pinMode (trigPin, produktionen); Ange trigpin till utgång
pinMode (echoPin, ingång); ställa in echopin att mata in
pinMode (glödlampa, produktionen); ställa in lampan på stift 9 till utgång
}
void loop()
{
int varaktighet, avstånd; Definiera två intregers längd och avstånd för att spara data
digitalWrite (trigPin, hög); skriva en digital hög till trigpin att skicka ut pulsen
delayMicroseconds(500); vänta en halv en millisekund
digitalWrite (trigPin, låg); Stäng av trigpin
längd = pulseIn (echoPin, hög); mäta tiden med pulsein när ekot tar emot en signal sätta den till hög
avståndet = (längd/2) / 29,1; avståndet är varaktighet delas effekt÷vergσngen av 2 eftersom signalen rest från trigpin sedan tillbaka till echo PIN-koden, sedan dividera med 29,1 konvertera till centimeter
om (avstånd < 13) //if avståndet är mindre än 13 CM
{
Light(); köra lätta subrutinen nedan
}
Serial.Print(Distance); Dispaly avståndet på serial monitorn
Serial.println ("CM"); i centimeter
Delay(500); dröjsmål en halv sekund
}
void Light() //Start ljus subrutinen
{digitalWrite (glödlampa, hög), //turn på ljus
fördröjning (15000); vänta 15 sekunder
digitalWrite (glödlampa, låg); stänga av ljuset
}