#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C LCD((0x27), 16, 2);
#define A 15
#define B 2
#define C 0
#define D 4
#define E 16
#define F 17
#define G 5
#define com1 19
#define com2 18
#define b1 14
#define b2 12
#define pot 34
#define led 13
int8_t n[10] = {
0b01111110, // 0
0b00110000, // 1
0b01101101, // 2
0b01111001, // 3
0b00110011, // 4
0b01011011, // 5
0b00011111, // 6
0b01110000, // 7
0b01111111, // 8
0b01110011 // 9
};
int contador = 20, tempo = 0; //
float nivel = 0;
bool sb1 = 0, sb2 = 0;
void setup() {
Serial.begin(115200);
pinMode(A, OUTPUT);
pinMode(B, OUTPUT);
pinMode(C, OUTPUT);
pinMode(D, OUTPUT);
pinMode(E, OUTPUT);
pinMode(F, OUTPUT);
pinMode(G, OUTPUT);
pinMode(com1, OUTPUT);
pinMode(com2, OUTPUT);
pinMode(led, OUTPUT);
pinMode(b1, INPUT);
pinMode(b2, INPUT);
LCD.init();
LCD.backlight();
LCD.setCursor(1,0);
LCD.print("By Gabriel Luz");
delay(1500);
LCD.clear();
}
void loop() {
nivel = map(analogRead(pot), 0, 4095, 0, 100);
Contagem();
print7seg(contador);
tempo++;
LCD.setCursor(0,0);
LCD.print("Nivel: ");
LCD.print(nivel);
LCD.print("% ");
if(tempo == 1){
if(contador > nivel){
LCD.setCursor(0,1);
LCD.print("Alerta de nivel ");
digitalWrite(led, !digitalRead(led));
} else{
LCD.setCursor(0,1);
LCD.print("Operacao normal ");
digitalWrite(led, 0);
}
}
if(tempo > 10)tempo = 0;
}
void Contagem(){
if(digitalRead(b1) == HIGH && sb1 == 0){
contador = contador + 5;
sb1 = 1;
}
if(digitalRead(b2) == HIGH && sb2 == 0){
contador = contador - 5;
sb2 = 1;
}
if(digitalRead(b1) == LOW && sb1 == 1)sb1 = 0;
if(digitalRead(b2) == LOW && sb2 == 1)sb2 = 0;
if(contador < 0)contador = 0;
if(contador > 99)contador = 99;
delay(10);
}
void printDisplay(int v){
digitalWrite(A, n[v] & 0b01000000);
digitalWrite(B, n[v] & 0b00100000);
digitalWrite(C, n[v] & 0b00010000);
digitalWrite(D, n[v] & 0b00001000);
digitalWrite(E, n[v] & 0b00000100);
digitalWrite(F, n[v] & 0b00000010);
digitalWrite(G, n[v] & 0b00000001);
}
void print7seg(int v){
int u = 0, d = 0;
u = v%10; // unidade
d = v/10; // dezena
printDisplay(u);
digitalWrite(com1, 1);
delay(5);
digitalWrite(com1, 0);
printDisplay(d);
digitalWrite(com2, 1);
delay(5);
digitalWrite(com2, 0);
}