Hinder Avoider med HC-SR04 Ultrasonic Sensor (2 / 3 steg)
Steg 2: Arduino kod
Arduino kod
/ * Detta projekt använder en HC-SR04 Ultrasonic sensor och en arduino att upptäcka hinder framför användaren och larmar. Intervallet som alarmet i proportion till avståndet mellan användaren och larm.
skapad 01 Mar 2016 av Isaac Sesi nuvarande staden * /
#include / / detta bibliotek hjälper gör våra avläsningar mer exakt
CONST int TRIGGER_PIN = 5; CONST int ECHO_PIN = 6; CONST int ledPin = 9; CONST int motor = 10; CONST int Summer = 11;
CONST int MAX_DISTANCE = 300; Ange maximalt avstånd som kan mätas till 300cm const int SAMPLE_INTERVAL = 25; Ta ett prov läsa varje 25milliseconds const int PING_ITERATIONS = 3; Ta 3 mätvärden innan han återvände genomsnittet av de 3 NewPing sonar (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE), //Create en ny instans av objektet
int systemState = låg; Kontrollera att allt är av lång previousMillis = 0; långa intervall;
void setup() {Serial.begin(9600); pinMode (ledPin, produktionen); pinMode (Summer, produktionen); pinMode (motor, utgång);} void loop() {float d1 = getDistance(); / / anropa funktionen som mäter avståndet
/ * Karta avståndet mätt med antalet millisekunder som LED, Summer och motor ska stanna på eller av. MYCKET VIKTIGT! * / intervall = karta (d1, 250-0, 0, 2000); om (d1 > 0 & & d1 < = 250) //Only göra något om avståndet mätt faller inom denna spänner {changeStateWithoutDelay(interval); //Call funktion som tur LED, Summer eller motor på/av} annat {digitalWrite (ledPin, låg), digitalWrite (Summer, låg), digitalWrite (motor, låg);}
Serial.Print(D1); Serial.Print ("cm \t"); Delay(100); Ta bort denna rad för att göra den Serial monitorn skriva ut saker långsammare Serial.print(interval); Serial.Print ("millisekunder \t\n"); Serial.println(); }
Funktion som mäter avstånd float getDistance() {float t = sonar.ping_median(PING_ITERATIONS); / / mikrosekunder flyta d = sonar.convert_cm(t); / / centimeter tillbaka d;}
Funktion som stänger LED, Summer och motor på eller av beroende på hur långt sensor är från hinder void changeStateWithoutDelay (int intervall) {osignerade långa currentMillis = millis(); om (currentMillis - previousMillis > intervall) {/ / spara den senaste gången du vände allt av previousMillis = currentMillis;
Om LED, Summer och motor är av Stäng den på och vice versa: om (systemState == låg) systemState = hög; annat systemState = låg;
ställa in LED, Summer och motor med systemState för variabeln: digitalWrite (ledPin, systemState); digitalWrite (Summer, systemState); digitalWrite (motor, systemState); } }
Koden ser ut mer organiserad när du visar det här.
Jag har försökt att kommentera koden som möjligt att göra det mycket lätt att förstå, men delar av koden som kan fortfarande vara oklart förklaras i videon. Om du inte har installerat Arduino IDE redan, Hämta och installera från här