from machine import Pin, ADC, I2C
import time
import dht
from math import log
import ssd1306
oled_rst = Pin(16, Pin.OUT)
oled_rst.value(0)
time.sleep_ms(50)
oled_rst.value(1)
i2c = I2C(0, scl=Pin(22), sda=Pin(21))
ledPin = Pin(4, Pin.OUT)
button = Pin(19, Pin.IN, Pin.PULL_DOWN)
Pot = Pin(35)
adc = ADC(Pot)
EstadoBotao = 0
UltimoAcionamento = 0
def ApertarBotao(Pin):
global EstadoBotao, UltimoAcionamento
tempo_agora = time.ticks_ms()
if time.ticks_diff(tempo_agora, UltimoAcionamento) > 200:
UltimoAcionamento = tempo_agora
EstadoBotao= 1 - EstadoBotao
def Temp(pinNumber):
BETA = 3950
analog = Pin(pinNumber)
adc = ADC(analog)
ntc = adc.read()
temperatura = 1 / (log(1 / (4095 / ntc - 1)) / BETA + 1.0 / 298.15) - 273.15;
return temperatura
def TempHumidity(modelo, pinNumber):
if modelo == 11:
sensor = dht.DHT11(Pin(pinNumber))
elif modelo == 22:
sensor = dht.DHT22(Pin(pinNumber))
if modelo not in [11, 22]:
print(f'Modelo {modelo} Invalido, escolha entre os modelos 11 ou 22')
try:
sensor.measure()
temp = sensor.temperature()
Umidade = sensor.humidity()
return temp, Umidade
except Exception as e:
print(f'''Erro: {e}
Modelo {modelo} Invalido, escolha entre os modelos 11 ou 22''')
return None, None
def Chuva(PinAnalog, PinDigital = None):
analog = Pin(PinAnalog)
adc = ADC(analog)
MedidaAnalogica = adc.read()
PorcentagemChuva = (MedidaAnalogica/4095) * 100
EstadoChuva = "Chovendo"
if MedidaAnalogica > 2050:
EstadoChuva = "Normal"
if PinDigital is not None:
Digital = Pin(PinDigital, Pin.IN)
MedidaDigital = Digital.value()
if MedidaDigital == 1:
EstadoChuva = "Normal"
return PorcentagemChuva, EstadoChuva
def UmidadeSolo (PinAnalog, PinDigital = None):
analog = Pin(PinAnalog)
adc = ADC(analog)
MedidaAnalogica = adc.read()
PorcentagemUmidade = 100 - ((MedidaAnalogica/4095) * 100)
EstadoSolo = "Umido"
if MedidaAnalogica > 2050:
EstadoSolo = "Seco"
if PinDigital is not None:
Digital = Pin(PinDigital, Pin.IN)
MedidaDigital = Digital.value()
if MedidaDigital == 1:
EstadoSolo = "Seco"
return PorcentagemUmidade, EstadoSolo
def Gas(PinDigital):
Digital = Pin(PinDigital, Pin.IN)
MedidaEstado = Digital.value()
EstadoFumaca = "Normal"
if MedidaEstado == 0:
EstadoFumaca = "FUMACA DETECTADA"
return EstadoFumaca