#importações
from machine import Pin, I2C, PWM
from time import sleep
from pico_i2c_lcd import I2cLcd
import tm1637
import onewire, ds18x20
import dht
#inicializar o lcd e achar o endereço
i2c_bus = I2C(0, sda=Pin(22), scl=Pin(23), freq=400000)
i2c_address = i2c_bus.scan()[0]
lcd = I2cLcd(i2c_bus, i2c_address, 2, 16)
#define o pino do sensor de temp e umidade
sensor = dht.DHT22(Pin(33))
#variaveis que vão carregar o valor da temperatura
tempc=0
tempf=0
#loop infinito
while True:
#pega os dados de temperatura em celsius do dht22
#round( n, 2) arredonda em duas casas decimais
sensor.measure()
tempc = round(sensor.temperature(), 2)
#converte a temperatura de celsius para farenheint
#round( n, 2) arredonda em duas casas decimais
tempf = round((tempc * 9 / 5 + 32), 2)
#converte as variaveis de temperatura flutuante em strings
str_tempc = str(tempc)
str_tempf = str(tempf)
# define os pinos dos leds
red = Pin(12, Pin.OUT)
green = Pin(14, Pin.OUT)
blue = Pin(27, Pin.OUT)
# Inicializa o BUZZER
buzzer_pin = Pin(32, Pin.OUT)
buzzer = PWM(buzzer_pin)
#condiçôes, se temperatura <=60, >60 e <=65 ou >65
# se temperatura <=60
if tempc <=60:
# leds ficam verdes, 1-desligado, 0-ligado
red.value(1)
green.value(0)
blue.value(1)
# escreve no lcd
#liga o lcd
lcd.blink_cursor_on()
#limpa o lcd
lcd.clear()
#escreve no lcd
lcd.putstr(" TEMPERATURA ")
lcd.putstr(" ")
lcd.putstr(str_tempc)
lcd.putstr("C")
lcd.putstr(" ")
lcd.putstr(str_tempf)
lcd.putstr("F")
sleep(2)
#limpa o lcd
lcd.clear()
#desliga o lcd
lcd.blink_cursor_off()
#se temperatura >60 e <=65
if tempc > 60 and tempc <= 65:
# leds ficam amarelos, 1-desligado, 0-ligado
red.value(0)
green.value(0)
blue.value(1)
# escreve no lcd
#liga o lcd
lcd.blink_cursor_on()
#limpa o lcd
lcd.clear()
#escreve no lcd
lcd.putstr(" TEMPERATURA ")
lcd.putstr(" ")
lcd.putstr(str_tempc)
lcd.putstr("C")
lcd.putstr(" ")
lcd.putstr(str_tempf)
lcd.putstr("F")
sleep(2)
#limpa o lcd
lcd.clear()
#escreve no lcd
lcd.putstr(" TEMPERATURA ")
lcd.putstr(" CRITICA!!!")
sleep(2)
#limpa o lcd
lcd.clear()
#desliga o lcd
lcd.blink_cursor_off()
# se temperatura >65
if tempc > 65:
# leds ficam vermelhos, 1-desligado, 0-ligado
red.value(0)
green.value(1)
blue.value(1)
#liga o buzzer
buzzer.duty_u16(1000)
#define a frequencia do buzzer
buzzer.freq(500)
sleep(1)
#escreve no lcd
#liga o lcd
lcd.blink_cursor_on()
#limpa o lcd
lcd.clear()
#escreve no lcd
lcd.putstr(" ALERTA!!! ")
lcd.putstr("AREA EM CHAMAS!!")
sleep(2)
#limpa o lcd
lcd.clear()
#desliga o lcd
lcd.blink_cursor_off()
#desliga o buzzer
buzzer.duty_u16(0)
#desinicializa o buzzer
buzzer.deinit()