#include <Wire.h>
#include <Adafruit_SSD1306.h>
const int echoPin = 2;
const int trigPin = 3;
long duration;
int distance;
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
const int buzzerPin = 13; // Pin D13, an dem der QMX 05 angeschlossen ist
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(buzzerPin, OUTPUT); // Setze buzzerPin als Ausgang
Serial.begin(9600);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0,0);
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2;
Serial.print("Distance: ");
Serial.println(distance);
display.clearDisplay();
display.setCursor(0,0);
display.print("Distance: ");
display.print(distance);
display.print(" cm");
display.display();
if (distance < 30) { // Wenn der Abstand kleiner als 30 cm ist
int frequency = map(distance, 0, 30, 1000, 50); // Berechne die Frequenz anhand des Abstands
tone(buzzerPin, frequency); // Spiele Ton mit berechneter Frequenz auf dem QMX 05
delay(500); // Warte 500 Millisekunden
} else if (distance < 50) { // Wenn der Abstand größer als 30 cm und kleiner als 300 cm ist
int frequency = map(distance, 30, 300, 1000, 50); // Berechne die Frequenz anhand des Abstands
tone(buzzerPin, frequency); // Spiele Ton mit berechneter Frequenz auf dem QMX 05
delay(1000); // Warte 1 Sekunde
} else { // Wenn der Abstand größer oder gleich 300 cm ist
noTone(buzzerPin); // Spiele keinen Ton auf dem QMX 05
}
}Loading
ssd1306
ssd1306