/*projeto
o alarme é para quê? é por conta da temperatura ideal?
o que estamos monitorando?
o display é para mostrar a temperatura instatânea?
Procurar em lojas físicas sobre todo o material a ser usado (de fios até componentes eletrônicos)
*/
#include <LiquidCrystal_I2C.h> //Pacote do display i2c
#define I2C_ADDR 0x27 //Endereço
#define LCD_COLUMNS 16 //Tamanho eixo X
#define LCD_LINES 2 //Tamanho eixo Y
LiquidCrystal_I2C lcd(0x27,20,2);
//LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);
const float BETA = 3950;
int botao1 = 2; // declara o push button na porta 2
int botao2 = 3; //
int botao3 = 4; //
int led1 = 11; //
int led2 = 12; //
int led3 = 13; //declara led na porta 13
bool estadoled1 = 0; // variavel de controle
bool estadoled2 = 0; // variavel de controle
bool estadoled3 = 0; // variavel de controle
void setup() {
// Iniciar display
lcd.init();
lcd.backlight();
// Local de escrita no display
lcd.setCursor(0, 0);
Wire.begin();
Serial.begin(9600);
while (!Serial);
Serial.println("\nI2C Scanner");
pinMode(botao1, INPUT_PULLUP);
pinMode(botao2, INPUT_PULLUP);
pinMode(botao3, INPUT_PULLUP);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
}
void loop() {
int Valor_Sensor = analogRead(A0);
float celsius = 1 / (log(1 / (1023. / Valor_Sensor - 1)) / BETA + 1.0 / 298.15) - 273.15;
Serial.print("Temperature: ");
Serial.print(celsius);
Serial.println(" ℃");
lcd.setCursor(0, 0); // Primeira linha
lcd.print("A temperatura e:"); // APRESENTAR NO DISPLAY
lcd.setCursor(0, 1); // Segunda linha
lcd.print(celsius);
lcd.print(" C");
delay(100);
lcd.clear();
if ( celsius > 30) // Limite de temperatura máxima
{
tone(5, 262, 250); // Toca um tom de 262Hz por 0,250 segundos
}
if (digitalRead(botao1) == LOW) // Se o botão for pressionado
{
estadoled1 = !estadoled1; // troca o estado do LED
digitalWrite(led1, estadoled1);
while (digitalRead(botao1) == LOW);
delay(100);
}
if (digitalRead(botao2) == LOW) // Se o botão for pressionado
{
estadoled2 = !estadoled2; // troca o estado do LED
digitalWrite(led2, estadoled2);
while (digitalRead(botao2) == LOW);
delay(100);
}
if (digitalRead(botao3) == LOW) // Se o botão for pressionado
{
estadoled3 = !estadoled3; // troca o estado do LED
digitalWrite(led3, estadoled3);
while (digitalRead(botao3) == LOW);
delay(100);
}
}