#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#define trigPin1 4
#define echoPin1 5
long duration, distance, RightSensor, BackSensor, FrontSensor, LeftSensor;
bool LCD_reset = true ;
LiquidCrystal_I2C lcd(0x27, 20, 4);
int level_u = 0;
int percent = 0;
int level_u_level = 0;
byte bar[] = {
B11111,
B11111,
B11111,
B11111,
B11111,
B11111,
B11111,
B11111
};
byte bars[] = {
B00000,
B00000,
B00000,
B00000,
B00000,
B00000,
B00000,
B00000,
};
void setup() {
Serial.begin(115200);
lcd.init();
lcd.backlight();
lcd.createChar(0, bar);
lcd.createChar(1, bars);
lcd.setCursor(0, 0);
lcd.print("UNLEADED");
pinMode(trigPin1, OUTPUT);
pinMode(echoPin1, INPUT);
}
void loop() {
level_u = map(RightSensor, 0, 400, 1, 5);
level_u_level = map(RightSensor, 0, 400, 0, 100);
lcd.setCursor(0, 0);
lcd.print("UNLEADED");
lcd.setCursor(0, 1);
lcd.print(percent);
lcd.print("%");
percent = level_u_level;
lcd.setCursor(0, 1);
lcd.print(percent);
lcd.print("%");
LEVEL_U();
//level_u++;
SonarSensor(trigPin1, echoPin1);
RightSensor = distance;
Serial.print(" ------- ");
Serial.print(RightSensor);
Serial.print(" ----------------");
Serial.print(level_u);
Serial.print(" ----------------");
Serial.print(level_u_level);
Serial.println("%");
//delay(100);
}
void LEVEL_U() {
if (percent <= 9) {
lcd.setCursor(2, 1);
lcd.print(" ");
}
if (percent <=99) {
lcd.setCursor(3, 1);
lcd.print(" ");
}
switch (level_u) {
case 1:
Min_level();
break;
///////////////////////////////////////////////////////////////////
case 2:
Mid_level();
break;
///////////////////////////////////////////////////////////////////
case 3:
level_75();
break;
//////////////////////////////////////////////////////////////////////
case 4:
level_100();
break;
case 5:
level_100();
break;
}
}
///////////////////////////////////////////////////////////Ultrasonic////////////
void SonarSensor(int trigPin, int echoPin)
{
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration / 2) / 29.1;
}
///////////////////////////////////////////////////////////////////////////
void Min_level() {
if (percent >= 1) {
lcd.setCursor(0, 3);
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
} else {
lcd.setCursor(0, 3);
lcd.write(byte(1));
lcd.write(byte(1));
lcd.write(byte(1));
lcd.write(byte(1));
lcd.write(byte(1));
}
if (percent <= 25) {
lcd.setCursor(5, 3);
lcd.write(byte(1));
lcd.write(byte(1));
lcd.write(byte(1));
lcd.write(byte(1));
lcd.write(byte(1));
lcd.setCursor(5, 2);
lcd.write(byte(1));
lcd.write(byte(1));
lcd.write(byte(1));
lcd.write(byte(1));
lcd.write(byte(1));
}
}
///////////////////////////////////////////////////////////////////////////
void Mid_level() {
if (percent >= 26) {
lcd.setCursor(0, 3);
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
lcd.setCursor(5, 3);
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
lcd.setCursor(5, 2);
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
}
if (percent <= 50) {
lcd.setCursor(10, 3);
lcd.write(byte(1));
lcd.write(byte(1));
lcd.write(byte(1));
lcd.write(byte(1));
lcd.write(byte(1));
lcd.setCursor(10, 2);
lcd.write(byte(1));
lcd.write(byte(1));
lcd.write(byte(1));
lcd.write(byte(1));
lcd.write(byte(1));
lcd.setCursor(10, 1);
lcd.write(byte(1));
lcd.write(byte(1));
lcd.write(byte(1));
lcd.write(byte(1));
lcd.write(byte(1));
}
}
void level_75() {
if (percent >= 50) {
lcd.setCursor(0, 3);
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
lcd.setCursor(5, 3);
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
lcd.setCursor(5, 2);
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
lcd.setCursor(10, 3);
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
lcd.setCursor(10, 2);
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
lcd.setCursor(10, 1);
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
}
if (percent <= 75) {
lcd.setCursor(15, 3);
lcd.write(byte(1));
lcd.write(byte(1));
lcd.write(byte(1));
lcd.write(byte(1));
lcd.write(byte(1));
lcd.setCursor(15, 2);
lcd.write(byte(1));
lcd.write(byte(1));
lcd.write(byte(1));
lcd.write(byte(1));
lcd.write(byte(1));
lcd.setCursor(15, 1);
lcd.write(byte(1));
lcd.write(byte(1));
lcd.write(byte(1));
lcd.write(byte(1));
lcd.write(byte(1));
lcd.setCursor(15, 0);
lcd.write(byte(1));
lcd.write(byte(1));
lcd.write(byte(1));
lcd.write(byte(1));
lcd.write(byte(1));
}
}
//////////////////////////////////////////////////////////////////////
void level_100() {
lcd.setCursor(0, 3);
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
lcd.setCursor(5, 3);
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
lcd.setCursor(5, 2);
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
lcd.setCursor(10, 3);
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
lcd.setCursor(10, 2);
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
lcd.setCursor(10, 1);
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
lcd.setCursor(15, 3);
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
lcd.setCursor(15, 2);
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
lcd.setCursor(15, 1);
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
lcd.setCursor(15, 0);
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
lcd.write(byte(0));
}