Stap 3: Code tijd!
Ik voegde ook een zoemer aan dit project als u wilt "horen" de afstand.
Eenvoudig met behulp van de Infrarood Sensor van de nabijheid
Beschrijving: Meet de afstand tot een obstakel met behulp van infrarood licht dat wordt uitgestraald door de IR LED en
luiden naar de waarde met een fotodiode IR. De nauwkeurigheid is niet perfect, maar werkt geweldig
met kleine projecten.
Auteur: Ricardo Ouvina
Datum: 01/10/2012
Versie: 1.0
int IRpin = A0; IR fotodiode op analoge pin A0
int IRemitter = 2; IR zender LED op digitale pin 2
int ambientIR; variabele op te slaan van de vanuit de ambient IR
int obstacleIR; variabele op te slaan van de IR vanuit het object
int-waarde [10]; variabele op te slaan van de IR-waarden
int afstand; variabele die vertellen zal of er een obstakel of niet is
VOID Setup {}
Serial.begin(9600); initialiseren van seriële monitor
pinMode(IRemitter,OUTPUT); IR zender LED op digitale pin 2
digitalWrite(IRemitter,LOW); / / IR LED setup als weg
pinMode(11,OUTPUT); zoemer in digitale pin 11
}
void loop {}
afstand = readIR(5); de afstand en de "nauwkeurigheid" doorgeven aan het zal aanroepen van de functie die lezen
Serial.println(distance); het schrijven van de lees waarde op seriële monitor
Buzzer(); uncomment om de zoemer-functie te activeren
}
int readIR (int keer) {}
voor (int x = 0; x < keer; x ++) {}
digitalWrite(IRemitter,LOW); de IR LEDs uitschakelen om te lezen de vanuit de ambient IR
delay(1); minimale vertraging nodig om te lezen van waarden
ambientIR = analogRead(IRpin); opslaan vanuit de ambient IR
digitalWrite(IRemitter,HIGH); de IR LEDs inschakelen om te lezen van de IR vanuit het obstakel
delay(1); minimale vertraging nodig om te lezen van waarden
obstacleIR = analogRead(IRpin); IR vanuit het obstakel op te slaan
waarde [x] = ambientIR-obstacleIR; wijzigingen in IR-waarden te berekenen en op te slaan voor toekomstige gemiddelde
}
voor (int x = 0; x < keer; x ++) {/ / berekening van het gemiddelde op basis van de "nauwkeurigheid"
afstand += waarde [x];
}
Return(Distance/Times); de laatste waarde retourneren
}
--Functie klinkt een zoemer voor hoorbare metingen--/ /
ongeldig buzzer() {}
Als (afstand > 1) {}
if(Distance>100) {/ / continu geluid als het obstakel is te dicht
digitalWrite(11,HIGH);
}
else {/ / piept sneller wanneer een obstakel nadert
digitalWrite(11,HIGH);
delay(150-distance); Pas deze waarde voor uw gemak
digitalWrite(11,LOW);
delay(150-distance); Pas deze waarde voor uw gemak
}
}
else {/ / off als er geen beletsel is
digitalWrite(11,LOW);
}
}
Natuurlijk kunt u deze bewerken om te passen in uw eigen project. Zo kun je een robot veranderen van richting of snelheid op basis van de afstand van de IR-sensor leest.