#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define LEBAR_LAYAR 128 // Lebar layar OLED yang digunakan
#define TINGGI_LAYAR 64 // Tinggi layar OLED yang digunakan
int ECHO_PIN = 26;
int TRIG_PIN = 25;
int ledH = 27;
int ledK = 14;
int ledM = 12;
Adafruit_SSD1306 oled(LEBAR_LAYAR, TINGGI_LAYAR, &Wire, -1);
void setup() {
Serial.begin(9600);
pinMode(ECHO_PIN, INPUT);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ledH, OUTPUT);
pinMode(ledK, OUTPUT);
pinMode(ledM, OUTPUT);
// initialize OLED display with I2C address 0x3C
if (!oled.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("failed to start SSD1306 OLED"));
while (1);
}
delay(3000);
oled.clearDisplay();
oled.setTextSize(1); // Atur ukuran text
oled.setTextColor(WHITE); // Atur warna text
oled.setCursor(0, 2); // Atur posisi text pada display
oled.println("ALEX"); // Text yang dicetak
oled.display(); // menampilkan display OLED
oled.clearDisplay(); // clear display
}
float ultrasonik(){
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
int duration = pulseIn(ECHO_PIN, HIGH);
return duration * 0.034 / 2;
}
void loop() {
// put your main code here, to run repeatedly:
delay(3000);
oled.clearDisplay();
float jarak = ultrasonik();
if(jarak > 150){
digitalWrite(ledH, HIGH);
digitalWrite(ledK, LOW);
digitalWrite(ledM, LOW);
Serial.println("Jarak Air Rendah");
Serial.print("Nilai Jarak :");
Serial.print(jarak);
Serial.println("cm ");
oled.setTextSize(1); // Atur ukuran text
oled.setTextColor(WHITE); // Atur warna text
oled.setCursor(0, 2); // Atur posisi text pada display
oled.println("Jarak Air: Rendah"); // Text yang dicetak
oled.display();
delay(100);
}
else if(jarak <= 150 && jarak > 75){
digitalWrite(ledK, HIGH);
digitalWrite(ledH, LOW);
digitalWrite(ledM, LOW);
Serial.println("Jarak Air Sedang");
Serial.print("Nilai Jarak :");
Serial.print(jarak);
Serial.println("cm ");
oled.setTextSize(1); // Atur ukuran text
oled.setTextColor(WHITE); // Atur warna text
oled.setCursor(0, 2); // Atur posisi text pada display
oled.println("Jarak Air: Sedang"); // Text yang dicetak
oled.display();
delay(100);
}
else if(jarak <= 75){
digitalWrite(ledM, HIGH);
digitalWrite(ledK, LOW);
digitalWrite(ledH, LOW);
Serial.println("Jarak Air Tinggi");
Serial.print("Nilai Jarak :");
Serial.print(jarak);
Serial.println("cm ");
oled.setTextSize(1); // Atur ukuran text
oled.setTextColor(WHITE); // Atur warna text
oled.setCursor(0, 2); // Atur posisi text pada display
oled.println("Jarak Air: Tinggi"); // Text yang dicetak
oled.display();
delay(100);
}
}