//Leonardo Araujo Armelin
//Projeto de sensor de temperatura
//Acima de 50 graus ativa o sinal sonoro
#include <LiquidCrystal.h>
#define TRUE 1
#define FALSE 0
LiquidCrystal lcd(12, 11, 7, 6, 5, 4);
int pino_NTC = 0;
int analogvalue = 0;
volatile int cont;
volatile int Flag;
const float beta = 3950;
void setup() {
DDRB |= (1 << DDB1) | (1 << DDB0); //pinos de led
DDRD = DDRD & ~(1 << DDD2); //pino do botão
PORTD = PORTD | (1 << PD2);
DDRC = DDRC | (1 << DDC1); //pino do buzzer
Serial.begin(9600);
lcd.begin(16, 2);
EICRA = (EICRA | (1 << ISC01)) & ~(1 << ISC00);
EIMSK = EIMSK | (1 << INT0);
}
void loop() {
Flag = cont = 0;
while(TRUE){
Flag = 0;
analogvalue = analogRead(pino_NTC);
float celsius = 1/(log(1/(1023. /analogvalue - 1))/beta + 1.0/298.15) - 273;
float fahrenheit = (celsius * 9/5) + 32;
if(analogvalue >= 260){
noTone(A1);
PORTB = PORTB | (1 << PB1);
PORTB = PORTB & ~(1 << PB0);
} else{
PORTB = PORTB | (1 << PB0);
PORTB = PORTB & ~(1 << PB1);
tone(A1, 200, 500);
}
if(cont % 2 == 0 | cont == 0){
Serial.print("Temperatura em Celsius = ");
Serial.println(celsius);
lcd.print(celsius);
lcd.print(" C");
delay(1000);
lcd.clear();
} else{
Serial.print("Temperatura em Fahrenheit = ");
Serial.println(fahrenheit);
lcd.print(fahrenheit);
lcd.print(" F");
delay(1000);
lcd.clear();
}
}
}
ISR(INT0_vect){
cont++;
Flag = 1;
}