/*
HC-SR04 Ultrasonic Sensor Example.
Turn the LED on .
Copyright (C) 2022, fiqian arofi
*/
#define ECHO_PIN 2
#define TRIG_PIN 3
#include <Adafruit_SSD1306.h>
#include <Adafruit_GFX.h>
//#include <Fonts/FreeSerif9pt7b.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
//* ultrasonik
int minimumRange = 00;
int maximumRange = 710 ;
long duration, distance ;
void setup() {
Serial.begin(9600);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
display.setTextColor(WHITE);
//display.setTextWrap(false);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(8, OUTPUT);
}
void loop() {
delay(1000);
//display.setFont(&FreeSerif9pt7b);
display.clearDisplay();
display.setTextSize(1);
display.setCursor(0, 15);
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, LOW);
int duration = pulseIn(ECHO_PIN, HIGH);
distance = 800 - duration * 0.034 / 2; //* 800 adalah posisi elevasi ketinggian sensor diletakkan kira-kira 1 meter dari perm tanah
if (distance >=681 || distance <=minimumRange) {
display.setTextSize(1,1);
display.setCursor(0,10);
//Serial.print(F("Elevasi: "));
//Serial.print(distance);
//Serial.println(F(" cm"));
//Serial.println(F(" Siaga Banjir!!"));
display.print(F("Elevasi: "));
display.display();
display.print(distance);
display.display();
display.print(F(" cm"));
display.display();
display.setTextSize(1,2);
display.setCursor(0,30);
display.println(F(" Siaga Banjir!!"));
display.startscrollleft(0x03, 0x07);
display.display();
}
else {
display.setTextSize(1);
display.setCursor(0,8);
//Serial.print("Elevasi: ");
//Serial.print(distance);
//Serial.println(" cm");
if (distance <=680 && distance >= 620) {
//Serial.println(F(" Waspada Banjir dan Air Pasang!!"));
display.print("Elevasi: ");
display.display();
display.print(distance);
display.display();
display.print(" cm");
display.display();
display.setCursor(20,25);
display.setTextSize(1,2);
display.println(F(" Waspada Banjir dan Air Pasang!!"));
display.display();
display.startscrollleft(0x03, 0x07);
}
if (distance <=619 && distance >=550) {
display.setCursor(10,10);
display.setTextSize(1);
//Serial.println(F(" *Muka Air Normal* "));
display.print("Elevasi: ");
display.display();
display.print(distance);
display.display();
display.print(" cm");
display.display();
display.setCursor(0,35);
display.setTextSize(1,2);
display.println(F(" *Muka Air Normal*"));
display.display();
display.startscrollleft(0x03, 0x07);
}
if ( distance <=549) {
display.setCursor(10,5);
display.setTextSize(1);
//Serial.println(F(" *Waspada Kekeringan !!* "));
display.print("Elevasi: ");
display.display();
display.print(distance);
display.display();
display.print(" cm");
display.display();
display.setCursor(0,25);
display.setTextSize(1,2);
display.println(F(" **Waspada Kekeringan!*"));
display.display();
display.startscrollleft(0x03, 0x07);
}
delay(800);
}
if (distance >= 680 ) {
digitalWrite( 11, HIGH);
delay(500) ;
digitalWrite( 11, LOW);
delay(200);
digitalWrite( 10, LOW);
digitalWrite(9, LOW);
digitalWrite(8, LOW);
}//*muka air banjir
if (distance <680 && distance >= 620) {
digitalWrite( 11, LOW);
digitalWrite( 10, HIGH);
delay(600);
digitalWrite( 10, LOW);
delay(200);
digitalWrite(9, LOW);
digitalWrite(8, LOW);
} //*muka air waspada banjir
if (distance <=619 && distance >=550) {
digitalWrite( 11, LOW);
digitalWrite( 10, LOW);
digitalWrite(9, HIGH);
delay(600);
digitalWrite(9, LOW);
delay(200);
digitalWrite(8, LOW);
}//*muka air normal
if (distance <=549 ) {
digitalWrite( 11, LOW);
digitalWrite( 10, LOW);
digitalWrite(9, LOW);
digitalWrite(8, HIGH);
delay (500);
digitalWrite(8, LOW);
delay(200);
} //muka air waspada kekeringan
}