import max7219
from machine import Pin, SPI
from time import sleep
from utime import sleep_ms, ticks_us
spi = SPI(0, baudrate=10000000, polarity=1, phase=0, sck=Pin(2),mosi=Pin(3))
ss = Pin(5, Pin.OUT)
class DHT22():
def __init__(self,gpio):
self.pin=gpio
self.pin=Pin(15,mode=Pin.OUT)
self.pin.high()
self.ckecksum=0
self.temperatura=0
self.humedad=0
sleep_ms(1)
def getReading(self):
DHT=self.pin
DHT.low()
sleep_ms(1)
DHT.init(mode=Pin.IN)
for i in range(2):
while DHT.value()==1:
pass
while DHT.value()==0:
pass
data=0
t1=ticks_us()
for i in range(32):
while DHT.value()==1:
pass
while DHT.value()==0:
pass
t2=ticks_us()
data=data<<1
data=data|((t2-t1)>100)
t1=t2
checksum=0
for i in range(8):
while DHT.value()==1:
pass
while DHT.value()==0:
pass
t2=ticks_us()
checksum=checksum<<1
checksum=checksum|((t2-t1)>100)
t1=t2
byte1=(data>>24&0xFF)
byte2=(data>>16&0xFF)
byte3=(data>>8&0xFF)
byte4=(data & 0xFF)
self.checksum=(checksum==(byte1+byte2+byte3+byte4)&0xFF)
self.humedad=((byte1<<8)|byte2)/10.0
neg=byte3 & 0x80
self.temperatura=(byte3<<8 | byte4)/10.0
if neg>0:
self.temperatura=-self.temperatura
while True:
sleep_ms(10)
dht=DHT22(15)
dht.getReading()
sleep_ms(100)
msg="ITTG_MCIM, "+"T:"+str(dht.temperatura)+" C,"+"H:"+str(dht.humedad)+ " %"
length = len(msg)
length = (length*8)
display = max7219.Matrix8x8(spi, ss, 4)
display.brightness(1) # ajuste de intensidad 1 a 15
display.fill(0)
display.show()
sleep(0.1)
for x in range(32, -length, -1):
display.text(msg, x, 0, 1)
display.show()
sleep(0.12)
display.fill(0)