Stap 6: De Arduino schets
Eerst zal ik proberen uit te leggen van de schets met de woorden:
Aanvankelijk definiëren ik drie variabelen die de fysieke pinnen van de HC-SR04 "trigger en echo" en de energie-estafette.
In de void setup, ik begin de seriële monitor, definiëren de Trigger en de estafette-pinnen als uitgangen omdat ze een resultaat output zal terwijl de echo-pin is gedefinieerd als input, omdat het op informatie van de trigger-pin wachten zal.
De actie gebeurt in de leegte lus:
Ik Definieer eerst twee gehele getallen duur en afstand voor het opslaan van de gegevens verzameld door de trigger. Ik vertel de trigger te verzenden van een geluidsgolf met de opdracht digitalWrite (trigPin, hoge); dan wachten de helft een milliseconde vervolgens ik het uitschakelen met de opdracht digitalWrite (trigPin, laag); . Wanneer de golf terug ik de gegevens opgeslagen in de integer "duur" en activeer de pin van de echo met behulp van de opdracht pulseIn (echoPin, hoge); Nu doen we wat wiskunde om te bepalen van de afstand, die duur/2 is dan we dit antwoord door 29.1 verdelen om het resultaat in centimeters.
De volgende stap is om te controleren of het resultaat dat we kregen: als het resultaat minder dan 13cm is, de lichte subroutine uit te voeren, zo niet dan niets doen. En het resultaat op de seriële monitor weergegeven.
De lichte subroutine:
Wanneer aangeroepen, het activeert de macht Relais pin, wacht 15 seconden dan dat het wordt uitgeschakeld.
Zo simpel als dat :)
En nu de schets:
#define trigPin 6 //Define de HC-SE04 triger op 6 pin op de arduino
#define echoPin 5 //Define de HC-SE04 echo op 5 pin op de arduino
#define lamp 9 //Define het Relais het signaal op pin 9 op de arduino
VOID Setup
{
Serial.begin (9600); Begin de seriële monitor
pinMode (trigPin, OUTPUT); instellen van de trigpin voor de uitvoer van
pinMode (echoPin, INPUT); instellen van de echopin in te voeren
pinMode (lamp, OUTPUT); de lamp aangezet pin 9 aan output
}
void loop
{
int duur, afstand; Twee intregers duur en afstand moet worden gebruikt voor het opslaan van gegevens definiëren
digitalWrite (trigPin, hoge); schrijven van een digitale hoog aan de trigpin voor het verzenden van de pols
delayMicroseconds(500); wacht een half een milliseconde
digitalWrite (trigPin, laag); de trigpin uitschakelen
duur = pulseIn (echoPin, hoge); maatregel de tijd met behulp van pulsein wanneer de echo een signaal ontvangt het ingesteld op hoog
afstand = (duur/2) / 29.1; afstand is de duur verdeeld door 2 omdat het signaal uit de trigpin vervolgens terug naar de echo-pin reisde, vervolgens wordt gedeeld door 29.1 omzetten in centimeters
Als (afstand < 13) //if de afstand minder dan 13 CM is
{
Light(); de lichte subroutine hieronder uitvoeren
}
Serial.Print(distance); Dispaly de afstand op de seriële monitor
Serial.println ("CM"); in centimeters
delay(500); vertraging een halve seconde
}
VOID Light() //Start de lichte subroutine
{digitalWrite (lamp, hoge); //turn het licht
vertraging (15000); Wacht 15 seconden
digitalWrite (lamp, laag); uitschakelen van het licht
}