Hur man skapar ett ljusbord med avstånd sensor och Ardunio (4 / 5 steg)
Steg 4: Steg 4
Koden som används för detta jag hittade mestadels online, men jag var tvungen att justera den lite att göra det mer stabilt. Det finns vissa värde justering för att se till att det fungerar för dina behov och utrymme.Jag skulle söka efter "avstånd = pulseTime" dess standard är 58, men jag skulle spela med det mellan 20 och 70 beroende på ditt space och hur tillförlitlig den ultrasonic sensorn är.
KODEN
CONST int numOfReadings = 1; antal läsningar att ta / poster i matrisen
int avläsningar [numOfReadings]; lagrar avläsningarna som avståndet i en matris
int arrayIndex = 0; arrayIndex för den aktuella posten i matrisen
int totala = 0; lagrar det ackumulerade totalen
int averageDistance = 0; lagrar det genomsnittliga värdet
setup stift och variabler för DYP-ME007 sonar enhet
int echoPin = 7. DYP-ME007 echo pin (digital 2)
int initPin = 8; DYP-ME007 trigger pin (digital 3)
osignerade långa pulseTime = 0; lagrar pulsen i Micro sekunder
osignerade långa avstånd = 0; variabel för att lagra avstånd (cm)
stift/inställningsvärden för LED
int LEDPin = 6; LED, ansluten till digital PWMpin 6
int LEDValue = 0; lagrar värdet för ljusstyrka för LED (0 = helt off, 255 = fullt å)
setup
void setup() {
pinMode (LEDPin, OUTPUT); uppsättningar stift 6 som utgång
pinMode (initPin, produktionen); Ange init stift 8
pinMode (echoPin, ingång); ställa in echo stift 7 som indata
Skapa matrisen slinga för att iterera över varje objekt i matrisen
för (int thisReading = 0; thisReading < numOfReadings; thisReading ++) {
avläsningar [thisReading] = 0;
}
initiera serieporten, kan du Visa den
avstånd som pingade om ansluten till datorn
Serial.BEGIN(9600);
}
utföra
void loop() {
digitalWrite (initPin, hög); Skicka 10 mikrosekund puls
delayMicroseconds(0); vänta 10 mikrosekunder innan du stänger av
digitalWrite (initPin, låg); Sluta skicka pulsen
pulseTime = pulseIn (echoPin, hög); Leta efter en retur puls, bör hög puls går låg-hög-låg
avståndet = pulseTime/58. Avståndet = puls tid / 58 konvertera till cm.
totalt = totalt - avläsningar [arrayIndex]; subtrahera senaste avståndet
avläsningar [arrayIndex] = avstånd; lägga till avståndet behandlingen array
totalt = totalt + avläsningar [arrayIndex]; Lägg till läsningen av totala
arrayIndex = arrayIndex + 1. gå till nästa objekt i matrisen
I slutet av array (10 artiklar) sedan börja igen
om (arrayIndex > = numOfReadings) {
arrayIndex = 0;
}
averageDistance = totalt / numOfReadings; beräkna den genomsnittliga avståndet
om avståndet är ändra mindre än 255cm sedan ljusstyrka LED
om (averageDistance < 255) {
LEDValue = 255 - averageDistance; Detta innebär det mindre avståndet brighterthe LED.
}
analogWrite (LEDPin, LEDValue); Skriv aktuellt värde till LED stift
Serial.println (averageDistance, DEC); skriva ut den genomsnittliga avståndet till felsökaren
Delay(500); vänta 100 milli sekunder före looping igen
}