#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define BUZZER 8
#define TRIG 10
#define ECHO 9
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
Adafruit_SSD1306 oled(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
// Set buzzer
pinMode(BUZZER, OUTPUT);
// SETUP ULTRASONIC
pinMode(TRIG, OUTPUT);
pinMode(ECHO, INPUT);
// SETUP OLED
if (!oled.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
while (true);
}
delay(1000); // wait for initializing
}
void loop() {
oled.clearDisplay();
oled.setCursor(15, 10);
oled.setTextSize(1);
oled.setTextColor(WHITE);
oled.print("Distance : ");
int durasi;
int jarak;
digitalWrite(TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG, LOW);
durasi = pulseIn(ECHO, HIGH);
jarak = (durasi/2) / 29.1;
oled.print(jarak);
oled.println(" cm");
if (jarak <= 80) {
tone(BUZZER, 800);
} else if (jarak <= 200) {
tone(BUZZER, 800);
delay(150);
noTone(BUZZER);
delay(150);
} else if (jarak <= 300) {
tone(BUZZER, 800);
delay(300);
noTone(BUZZER);
delay(300);
}
oled.display();
Serial.println(jarak);
}