//Viral Science www.youtube.com/c/viralscience www.viralsciencecreativity.com
//Distance Meter OLED Display
//https://www.viralsciencecreativity.com/post/arduino-distance-meter-oled-display-ultrasonic-sensor-hc-sr04
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
const int buzzer = 7; //buzzer to arduino pin 9
#define trigPin 9
#define echoPin 8
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
void setup() {
Serial.begin (9600);
pinMode(buzzer, OUTPUT); // Set buzzer - pin 7 as an output
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); //initialize with the I2C addr 0x3C (128x64)
display.clearDisplay();
}
void loop() {
// Ab hier die Parameter festlegen ----------------------------------------------------------------------
float gesamthoehe_cm = 170;
float gesamtinhalt_l = 3750;
float alarm_l = 800;
// Parameter festlegen ----------------------------------------------------------------------------------
float duration;
float distance_cm;
//float distance_in;
float verbraucht_l;
float rest_l;
digitalWrite(trigPin, LOW); //PULSE ___|---|___
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance_cm = (duration/2) / 29.1;
//distance_in = (duration/2) / 73.914;
verbraucht_l = gesamtinhalt_l / gesamthoehe_cm * distance_cm;
rest_l = gesamtinhalt_l - verbraucht_l;
display.setCursor(10,0); //oled display
display.setTextSize(0);
display.setTextColor(WHITE);
display.println("Rest-Oel");
display.setCursor(10,11); //oled display
display.setTextSize(2);
display.setTextColor(WHITE);
display.println(rest_l, 0);
display.setCursor(60,11);
display.setTextSize(2);
display.println("Liter");
display.display();
// /*
display.setCursor(10,31); //oled display
display.setTextSize(0);
display.setTextColor(WHITE);
display.println("Abstand zum Spiegel");
display.setCursor(10,42); //oled display
display.setTextSize(2);
display.setTextColor(WHITE);
display.println(distance_cm, 0);
display.setCursor(60,42);
display.setTextSize(2);
display.println("cm");
display.display();
// */
//display.setCursor(10,45); //oled display
//display.setTextSize(2);
//display.setTextColor(WHITE);
//display.println(distance_in);
//display.setCursor(90,45);
//display.setTextSize(2);
//display.println("in");
//display.display();
if (rest_l < alarm_l) // Wenn weniger als ... Liter im Tank, dann Alarm
{
tone(buzzer, 2000); // Send 440Hz sound signal...
delay(300); // ...for 0,5 sec
noTone(buzzer); // Stop sound...
delay(100); // ...for 0,3 sec
tone(buzzer, 2400); // Send 440Hz sound signal...
delay(300); // ...for 0,5 sec
noTone(buzzer); // Stop sound...
delay(100); // ...for 0,3 sec
tone(buzzer, 2000); // Send 440Hz sound signal...
delay(300); // ...for 0,5 sec
noTone(buzzer); // Stop sound...
delay(100); // ...for 0,3 sec
//delay(3000); // ...for 3 sec
}
delay(2000);
display.clearDisplay();
Serial.println(distance_cm);
Serial.println(verbraucht_l);
Serial.println(rest_l);
//Serial.println(distance_in);
}