//Programação Projeto Final SENAI
//Grupo: Fadas Elétricas
//Interantes: Isadora Queiroz, Isadora Gomes, Kevin, Maria Eduarda, Nicole
//Programado por: Kevin Huberson de Jesus
#include <LiquidCrystal.h>
// Definindo os pinos do LCD
const int rs = 12, en = 11, d4 = 10, d5 = 9, d6 = 8, d7 = 7;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
const int AdicionarBotão = 4;
const int RemoverBotão = 3;
const int ledPin = 2;
int peso = 0; // Variável para armazenar o peso atual
const int pesoMaximo = 45; // Definindo o peso máximo
bool ledState = false; // Estado do LED (ligado ou desligado)
unsigned long previousMillis = 0; // Armazena o tempo anterior para piscar o LED
const long interval = 500; // Intervalo de 500ms para o LED piscar
// Variáveis para debounce dos botões
unsigned long lastDebounceTime = 0;
unsigned long debounceDelay = 50;
bool lastAddButtonState = HIGH; // Último estado do botão de adicionar
bool lastRemoveButtonState = HIGH; // Último estado do botão de remover
void setup() {
// Configurações dos pinos
pinMode(AdicionarBotão, INPUT_PULLUP);
pinMode(RemoverBotão, INPUT_PULLUP);
pinMode(ledPin, OUTPUT);
// Inicializa o LCD
lcd.begin(16, 2);
atualizarLCD();
}
void loop() {
// Leitura dos botões com debounce
int addButtonState = digitalRead(AdicionarBotão);
int removeButtonState = digitalRead(RemoverBotão);
// Verifica o botão de adicionar
if (addButtonState != lastAddButtonState) {
lastDebounceTime = millis(); // Reinicia o tempo de debounce
}
if ((millis() - lastDebounceTime) > debounceDelay && addButtonState == LOW) {
peso++;
if (peso > pesoMaximo) peso = pesoMaximo; // Limita o peso máximo
atualizarLCD(); // Atualiza o display quando o peso muda
delay(200); // Pequeno delay para evitar múltiplas contagens
}
// Verifica o botão de remover
if (removeButtonState != lastRemoveButtonState) {
lastDebounceTime = millis(); // Reinicia o tempo de debounce
}
if ((millis() - lastDebounceTime) > debounceDelay && removeButtonState == LOW && peso > 0) {
peso--;
atualizarLCD(); // Atualiza o display quando o peso muda
delay(200); // Pequeno delay para evitar múltiplas contagens
}
// Atualiza o estado dos botões
lastAddButtonState = addButtonState;
lastRemoveButtonState = removeButtonState;
// Se o peso atingir o máximo, pisca o LED
if (peso >= pesoMaximo) {
piscarLed();
} else {
digitalWrite(ledPin, LOW); // Desliga o LED se o peso for menor que o máximo
}
}
void atualizarLCD() {
lcd.clear();
lcd.setCursor(0, 0);
if (peso >= pesoMaximo) {
lcd.print("Peso Maximo");
} else {
lcd.print("Peso Atual: ");
lcd.setCursor(0, 1);
lcd.print(peso);
}
}
void piscarLed() {
unsigned long currentMillis = millis();
// Verifica se é hora de alternar o estado do LED
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
// Alterna o estado do LED
ledState = !ledState;
digitalWrite(ledPin, ledState);
}
}