Czujnik parkowania: sygnały dźwiękowe
Część sekcji Projekty ścieżki Arduino w Coddy. Lekcja 11 z 24.
Czujnik parkowania nie tylko pokazuje, ale też informuje dźwiękiem: im bliżej ściany, tym szybciej pika, aż wydaje jeden ciągły dźwięk oznaczający „stop”. Brzęczyk jest podłączony do pinu 8.
Odstęp między piknięciami zależy od odległości: odległość pomnożona przez 10, w milisekundach. Przy 70 cm piknięcie co 700 ms, przy 20 cm co 200 ms. Timer millis() ustala, kiedy ma nastąpić następne piknięcie:
if (millis() - lastBeep >= cm * 10) {
lastBeep = millis();
tone(buzzerPin, 1000, 50); // sygnał dźwiękowy trwający 50 ms
}Są jeszcze dwa przypadki. Przy odległości poniżej 10 cm odtwórz tone(buzzerPin, 1000) bez określania czasu trwania: dźwięk będzie trwał, dopóki coś go nie zatrzyma. Przy odległości 100 cm lub większej zachowaj ciszę i wywołaj noTone(buzzerPin), aby zatrzymać również ciągły dźwięk pozostały z poprzedniego przypadku.
Wyzwanie
ŚredniDodaj sygnały dźwiękowe:
- 100 cm lub więcej: brak dźwięku (wywołaj
noTone()) - od 10 do 99 cm: sygnał dźwiękowy o częstotliwości 1000 Hz i czasie trwania 50 ms co
cm * 10ms, odmierzanym za pomocąmillis() - poniżej 10 cm: ciągły sygnał o częstotliwości 1000 Hz
Zachowaj światła i wyświetlanie. Naciśnij Run, przesuń obiekt bliżej, a następnie naciśnij Check.
Spróbuj swoich sił
// Czujnik odległości
const int trigPin = 9;
const int echoPin = 10;
// Światła ostrzegawcze
const int greenPin = 6;
const int yellowPin = 7;
const int redPin = 13;
// Wyślij impuls i zwróć odległość w cm.
long readDistance() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);
return duration / 58;
}
// Zielone, gdy droga wolna; żółte, gdy blisko; czerwone, gdy zbyt blisko.
void showLights(long cm) {
digitalWrite(greenPin, LOW);
digitalWrite(yellowPin, LOW);
digitalWrite(redPin, LOW);
if (cm >= 100) {
digitalWrite(greenPin, HIGH);
} else if (cm >= 30) {
digitalWrite(yellowPin, HIGH);
} else {
digitalWrite(redPin, HIGH);
}
}
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(greenPin, OUTPUT);
pinMode(yellowPin, OUTPUT);
pinMode(redPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
long cm = readDistance();
Serial.println(cm);
showLights(cm);
delay(100);
}
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Projekty
3Czujnik parkowania
Czujnik parkowania: odległośćCzujnik parkowania: światłaCzujnik parkowania: sygnały dźwiękoweCzujnik parkowania: wyświetlaczPoćwicz samodzielnie: Edytor online Arduino