// Bibliotecas:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Pinos utilizados:
#define pot_pin 4
#define led_lj 12
#define led_rs 14
#define led_int 2
// Definição do LCD:
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Variáveis utilizadas:
float pot;
float pot_map;
void setup() {
// Inicializa o display LCD:
lcd.init();
lcd.setBacklight(1);
// Inicializa o monitor serial:
Serial.begin(115200);
// Declara pinos dos LEDs como saída:
pinMode(led_lj, OUTPUT);
pinMode(led_rs, OUTPUT);
pinMode(led_int, OUTPUT);
}
void loop() {
// Leitura e conversão do valor do potenciômetro:
pot = analogRead(pot_pin);
pot_map = map(pot, 0, 4095, 0, 100);
Serial.println(pot_map);
// Mostra o valor mapeado do potenciômetro no display:
lcd.setCursor(6,0);
lcd.println(pot_map);
// Liga o LED laranja quando pot_map estiver menor que 50:
if(pot_map < 50) {
digitalWrite(led_lj, HIGH);
digitalWrite(led_rs, LOW);
}
// Liga o LED laranja quando pot_map estiver menor que 50:
else if(pot_map > 50) {
digitalWrite(led_lj, LOW);
digitalWrite(led_rs, HIGH);
}
// Desliga os dois LEDs se for igual a 50:
else if(pot_map = 50) {
digitalWrite(led_lj, LOW);
digitalWrite(led_rs, LOW);
}
// Quando pot_map estiver entre 25% e 75% do valor máximo, piscar LED interno:
if(pot_map > 25 && pot_map < 75) {
for(int i=0; i<3; i++){
digitalWrite(2, 1);
delay(150);
digitalWrite(2, 0);
delay(150);
}
}
//Quando não estiver no intervalo, desligar o LED interno:
else{
digitalWrite(2, 0);
}
delay(10);
}