#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()
$abcdeabcde151015202530fghijfghij