#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Inicializa o display LCD
const int sensorPin = A0;
const int resistorValue = 0.1; // Valor da resistência em ohms
const float sensorSensitivity = 0.066; // Fator de sensibilidade do sensor
const float maxCurrent = 1.0; // Limite máximo de corrente em A
const float minCurrent = 0.0; // Limite mínimo de corrente em A
const int buttonPin = 7; // Pino do botão
const int relayPin = 8; // Pino do relé
bool relayActive = false;
bool measureActive = false;
void setup() {
pinMode(relayPin, OUTPUT);
digitalWrite(relayPin, LOW); // Desliga o relé
lcd.begin(16, 2); // Define o número de colunas e linhas do display
lcd.setCursor(0, 0); // Posiciona o cursor na primeira coluna e primeira linha
lcd.print("Pressione o botao"); // Imprime a mensagem no display
Serial.begin(9600);
}
void loop() {
if (digitalRead(buttonPin) == HIGH && !measureActive) {
// Ativa o relé
digitalWrite(relayPin, HIGH);
relayActive = true;
measureActive = true;
lcd.clear(); // Limpa o display
lcd.setCursor(0, 0); // Posiciona o cursor na primeira coluna e primeira linha
lcd.print("Medicao ativa"); // Imprime a mensagem no display
delay(500); // Aguarda um tempo para garantir a estabilização do circuito
}
if (measureActive) {
// Leitura da tensão na resistência
float voltage = analogRead(sensorPin) * 0.0049;
// Cálculo da corrente
float current = voltage / resistorValue;
// Conversão da leitura para unidades de corrente
current = current / sensorSensitivity;
// Verifica se a corrente está fora dos limites
if (current > maxCurrent || current < minCurrent) {
lcd.clear(); // Limpa o display
lcd.setCursor(0, 0); // Posiciona o cursor na primeira coluna e primeira linha
lcd.print("Erro:"); // Imprime o texto de erro no display
lcd.setCursor(0, 1); // Posiciona o cursor na primeira coluna e segunda linha
lcd.print("Corrente fora do"); // Imprime a mensagem de erro no display
lcd.setCursor(0, 2);
lcd.print("limite");
measureActive = false; // Desativa a medição
} else {
// Exibe a corrente no display
lcd.setCursor(0, 1); // Posiciona o cursor na primeira coluna e segunda linha
lcd.print(current, 2); // Imprime o valor da corrente com duas casas decimais
}
}
}