#define F_CPU 16000000UL
#include <avr/io.h>
#include <math.h>
#include<util/delay.h>
#include "libserial.h"
char buzzerAtivo = 0;
void controleBuzzer() {
if (buzzerAtivo) {
USART_Tx_String("Controle do Buzzer Ativo\r\n");
// Liga LEDs
PORTB |= (1 << PORTB1);
PORTB |= (1 << PORTB0);
_delay_ms(1000); // Aguarda 1 segundo
// Desliga LEDs
PORTB &= ~(1 << PORTB1);
PORTB &= ~(1 << PORTB0);
_delay_ms(1000); // Aguarda 1 segundo
} else {
// Certifique-se de desligar os LEDs caso o buzzer seja desativado
PORTB &= ~(1 << PORTB0);
PORTB &= ~(1 << PORTB1);
}
}
double obter_temp(int valor_adc) {
//double temp_k, temp_c;
//temp_k = log(10000.0 * (1024.0 / valor_adc - 1));
//temp_k = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * temp_k * temp_k)) * temp_k);
//temp_c = temp_k - 273.15;
const float BETA = 3950; // Deve corresponder ao coeficiente beta do termistor
double temp_c = 1 / (log(1 / (1023. /valor_adc - 1)) / BETA + 1.0 / 298.15) - 273.15;
return temp_c;
}
int main(void) {
// Configurações de saída para LEDs
DDRB |= (1 << DDB0); // LED D
DDRB |= (1 << DDB1); // LED C
DDRB |= (1 << DDB2); // LED B
DDRB |= (1 << DDB3); // LED A
DDRB |= (1 << DDB4); // ZONA A
DDRB |= (1 << DDB5); // ZONA B
// Configura pino de saída para o buzzer
DDRD |= (1 << DDD0); // PD0 como saída para o buzzer
// Configurações de entrada
DDRD &= ~(1 << DDD2); // pino 2
DDRD &= ~(1 << DDD3); // pino 3
DDRD &= ~(1 << DDD4); // pino 4
DDRD &= ~(1 << DDD5); // pino 5
DDRD &= ~(1 << DDD6); // pino 6
DDRD &= ~(1 << DDD7); // pino 7
USART_Init();
ADMUX = 0x00 | (1 << REFS0);
ADCSRA |= (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);
ADCSRA |= (1 << ADEN);
int valor_adc;
while(1){
ADCSRA = ADCSRA | (1 << ADSC);
while(ADCSRA &(1 << ADSC));
valor_adc = ADCL;
valor_adc |= (ADCH << 8);
double temp = obter_temp(valor_adc);
USART_Tx_String("Temperatura: ");
USART_Tx_Double(temp);
USART_Tx_String("°C\r\n");
_delay_ms(1000);
if (obter_temp(valor_adc) > 30) {
buzzerAtivo = 1; // Ativa o buzzer
} else {
buzzerAtivo = 0; // Desativa o buzzer
}
controleBuzzer(); // Chama a função para controlar LEDs
}
}