import max7219
from machine import Pin, SPI,I2C,RTC
from time import sleep,
from utime import sleep_ms, ticks_us
from ssd1306 import SSD1306_I2C
import framebuf
spi = SPI(0, baudrate=10000000, polarity=1, phase=0, sck=Pin(2), mosi=Pin(3))
ss = Pin(5, Pin.OUT)
sensor_temp = machine.ADC(3)
conversion_factor = 3.3 / 65535
rtc=RTC()
ancho= 128
alto=64
i2c=I2C(1, scl=Pin(19), sda=Pin(18))
oled=SSD1306_I2C(ancho,alto, i2c)
led=machine.Pin(25, machine.Pin.OUT)
oled.rect(0,0,127,15,1)
oled.rect(0,16,127,47,1)
oled.text("CPU",49,3)
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="Rafael, "+"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.2)
for x in range(32, -length, -1):
display.text(msg ,x,0,1)
display.show()
sleep(0.1)
display.fill(0)
while 1:
t = rtc.datetime()
h = t[4]
m = t[5]
s = t[6]
reading = sensor_temp.read_u16() * conversion_factor
temp = 27 - (reading - 0.706)/0.001721
if 0<=s<=59:
oled.fill_rect(1,17,125,40,0)
oled.text("Temp:",5,45)
oled.text(str(temp),45,45)
oled.text(str(h),27,25)
oled.text(":",42,25)
oled.text(str(m),52,25)
oled.text(":",67,25)
oled.text(str(s),77,25)
oled.show()
print(temp)
sleep_ms(1000)