#include <LiquidCrystal_I2C.h>
#define I2C_ADDR 0x27
#define LCD_COLUMNS 20
#define LCD_LINES 4
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);
int a1, a2, a3, a4;
float v1, v2, v3, v4, tempo, val_max1, val_max2, val_max, val_max_ant;
void setup() {
// put your setup code here, to run once:
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(8, OUTPUT);
lcd.init();
lcd.backlight();
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
a1 = analogRead(0);
v1 = 5.*a1/1023.;
a2 = analogRead(1);
v2 = 5.*a2/1023.;
a3 = analogRead(2);
v3 = 5.*a3/1023.;
a4 = analogRead(3);
v4 = 5.*a4/1023.;
tempo = millis();
tempo = tempo/1e3;
lcd.setCursor(0,0);
lcd.print(" Tempo exec.:");
lcd.print(tempo, 2);
lcd.setCursor(0,2);
lcd.print("V1:");
lcd.print(v1, 3);
lcd.print("V ");
lcd.setCursor(11,2);
lcd.print("V2:");
lcd.print(v2, 3);
lcd.print("V ");
lcd.setCursor(0,3);
lcd.print("V3:");
lcd.print(v3, 3);
lcd.print("V ");
lcd.setCursor(11,3);
lcd.print("V4:");
lcd.print(v4, 3);
lcd.print("V ");
val_max_ant = val_max; // Pega o valor máximo anterior e para poder comparar com o atual
val_max1 = max(v1,v2);
val_max2 = max(v3,v4);
val_max = max(val_max1,val_max2);
if (v1 == val_max) {
digitalWrite(6, HIGH);}
else{
digitalWrite(6, LOW);
}
if (v2 == val_max) {
digitalWrite(5, HIGH);}
else{
digitalWrite(5, LOW);
}
if (v3 == val_max) {
digitalWrite(4, HIGH);}
else{
digitalWrite(4, LOW);
}
if (v4 == val_max) {
digitalWrite(3, HIGH);}
else{
digitalWrite(3, LOW);
}
if (val_max != val_max_ant) // Compara o valor máximo atual com o anterior
{
tone(8, 300, 500);
}
delay(500);
}