#include <LiquidCrystal.h>
// Define os pinos de conexão do LCD
LiquidCrystal lcd(13, 12, 11, 10, 9, 8);
// Define os pinos do encoder rotativo
#define ENCODER_CLK 2
#define ENCODER_DT 3
// Variável para armazenar o valor do setpoint
int setPoint = 0;
// Variável para armazenar o estado anterior do pino CLK
int lastClk = LOW;
void setup() {
// Inicializa o display LCD com 16 colunas e 2 linhas
lcd.begin(16, 2);
Serial.begin(9600);
// Imprime "Controlador" na primeira linha
lcd.setCursor(0, 0);
lcd.print("Controlador");
// Imprime "Set Point:" na segunda linha
lcd.setCursor(0, 1);
lcd.print("Set Point: ");
lcd.print(setPoint); // Mostra o valor inicial do setpoint
}
void loop() {
int newClk = digitalRead(ENCODER_CLK);
if (newClk != lastClk) {
// Houve uma mudança no pino CLK
lastClk = newClk;
int dtValue = digitalRead(ENCODER_DT);
if (newClk == LOW && dtValue == HIGH) {
setPoint++;
}
else if (newClk == LOW && dtValue == LOW) {
setPoint--;
}
// Atualiza o valor do setpoint no display
lcd.setCursor(11, 1); // Posição após "Set Point: "
lcd.print(" "); // Limpa o valor anterior
lcd.setCursor(11, 1);
lcd.print(setPoint);
// Mostra o valor do setpoint no monitor serial
Serial.print("Set point: ");
Serial.println(setPoint);
}
}