#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define trigPin 12
#define echoPin 13
#define ledred 14
#define ledyellow 27
#define ledgreen 26
#define DISTANCE_THRESHOLD 50
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 oled(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
float duration_us, distance_cm;
String tempString;
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(ledred, OUTPUT);
pinMode(ledyellow, OUTPUT);
pinMode(ledgreen, OUTPUT);
if (!oled.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("failed to start SSD1306 OLED"));
while (1);
}
delay(2000);
oled.clearDisplay();
oled.setTextSize(2,2);
oled.setTextColor(WHITE);
oled.setCursor(0, 2);
oled.println("Name:Dr. Sayantam");
oled.display();
delay(2000);
oled.clearDisplay();
}
void oledDisplayCenter(String text) {
int16_t x1;
int16_t y1;
uint16_t width;
uint16_t height;
oled.getTextBounds(text, 0, 0, &x1, &y1, &width, &height);
// display on horizontal and vertical center
oled.clearDisplay(); // clear display
oled.setCursor((SCREEN_WIDTH - width) / 2, (SCREEN_HEIGHT - height) / 2);
oled.println(text); // text to display
oled.display();
}
void loop() {
digitalWrite(trigPin, HIGH);
delay (100);
digitalWrite(trigPin, LOW);
// measure duration of pulse from ECHO pin
duration_us = pulseIn(echoPin, HIGH);// calculate the distance
distance_cm = 0.017 * duration_us;// print the value to Serial Monitor
if(distance_cm < DISTANCE_THRESHOLD)
Serial.print("distance: ");
Serial.print("distance_cm");
Serial.println(" cm");
tempString = String(distance_cm, 2); // two decimal places
tempString += " cm";
Serial.println(tempString); // print the temperature in Celsius to Serial Monitor
oledDisplayCenter(tempString);
if (distance_cm > 200){
digitalWrite(ledgreen, HIGH);
digitalWrite(ledred, LOW);
digitalWrite(ledyellow, LOW);
}
else if (distance_cm < 200 && distance_cm > 100) {
digitalWrite(ledyellow, HIGH);
digitalWrite(ledred, LOW);
digitalWrite(ledgreen, LOW);
}
else if (distance_cm < 100) {
digitalWrite(ledred, HIGH);
digitalWrite(ledyellow, LOW);
digitalWrite(ledgreen, LOW);
}
else {}
}