Stap 4: Stap 4
De code die wordt gebruikt voor dit ik meestal online gevonden, maar ik moest tweaken het een beetje om het te maken meer stabiel. Er is enige waarde aan te passen om ervoor te zorgen dat het werkt voor uw behoefte en ruimte.Ik zou zoeken naar "afstand = pulseTime" zijn standaard is 58, maar ik zou spelen met het tussen de 20 en 70 afhankelijk van uw ruimte en hoe betrouwbaar de ultrasone sensor is.
CODE
Const int numOfReadings = 1; aantal lezingen te nemen / items in de matrix
int lezingen [numOfReadings]; de afstand lezingen opgeslagen in een matrix
int arrayIndex = 0; arrayIndex van het huidige item in de matrix
int totaal = 0; slaat het cumulatieve totaal
int averageDistance = 0; slaat de gemiddelde waarde
Setup pinnen en variabelen voor DYP-ME007 sonar apparaat
int echoPin = 7; DYP-ME007 echo pin (digitale 2)
int initPin = 8; DYP-ME007 trigger pin (digitale 3)
unsigned long pulseTime = 0; slaat op de pols in Micro Seconds
niet-ondertekende lange afstand = 0; variabele voor het opslaan van de afstand (cm)
pinnen/instellingswaarden voor LED
int LEDPin = 6; GELEID, aangesloten op de digitale PWMpin 6
int LEDValue = 0; slaat de waarde voor de helderheid voor de LED (0 = volledig uit, 255 = volledig op)
Setup
VOID Setup {}
pinMode (LEDPin, uitvoer); sets pin 6 als output
pinMode (initPin, OUTPUT); init pin 8 stellen als uitvoerapparaat
pinMode (echoPin, INPUT); echo pin 7 instellen als input
matrix lus te herhalen elke item in de array maken
voor (int thisReading = 0; thisReading < numOfReadings; thisReading ++) {}
lezingen [thisReading] = 0;
}
initialiseren van de seriële poort, kunt u bekijken de
afstanden worden gepingd wanneer aangesloten op computer
Serial.begin(9600);
}
uitvoeren
void loop {}
digitalWrite (initPin, hoge); Stuur 10 microseconde pulse
delayMicroseconds(0); wacht 10 microseconden vóór het uitschakelen
digitalWrite (initPin, laag); stoppen met het verzenden van de pols
pulseTime = pulseIn (echoPin, hoge); Kijk voor een terugkeer puls, het moet hoog zijn als de pols gaat laag-hoog-laag
afstand = pulseTime/58; Afstand = puls tijd / 58 cm omzetten.
totaal = totaal - lezingen [arrayIndex]; aftrekken van de laatste afstand
lezingen [arrayIndex] = afstand; afstand lezing aan matrix toevoegen
totaal = totaal + lezingen [arrayIndex]; de lezing aan het totaal toevoegen
arrayIndex = arrayIndex + 1; Ga naar het volgende item in de array
Aan het einde van de array (10 items) dan start weer
Als (arrayIndex > = numOfReadings) {}
arrayIndex = 0;
}
averageDistance = totaal / numOfReadings; berekenen van de gemiddelde afstand
Als de afstand wijzigt minder dan 255cm de helderheid van de LED
Als (averageDistance < 255) {}
LEDValue = 255 - averageDistance; Dit betekent dat hoe kleiner de afstand de brighterthe LED.
}
analogWrite (LEDPin, LEDValue); Huidige waarde schrijven naar LED pinnen
Serial.println (averageDistance, DEC); de gemiddelde afstand tot de debugger uitprinten
delay(500); 100 milli seconden wachten voordat opnieuw in een lus
}