It works!
So goood!!!
my "main" :
Code: Select all
import machine
import uasyncio as asyncio
from pms.pms5003 import PMS5003
import pms.pms5003
from time import sleep
import time
import epaper2in9
from pyb import SPI
import pyb
# SPI3 on Black STM32F407VET6
spi = SPI(2, SPI.MASTER, baudrate=2000000, polarity=0, phase=0)
cs = pyb.Pin('Y7')
dc = pyb.Pin('Y5')
rst = pyb.Pin('Y4')
busy = pyb.Pin('Y3')
e = epaper2in9.EPD(spi, cs, dc, rst, busy)
e.init()
w = 128
h = 296
x = 0
y = 0
import framebuf
buf = bytearray(128 * 296 // 8)
fb = framebuf.FrameBuffer(buf, 128, 296, framebuf.MONO_HLSB)
black = 0
white = 1
_DEFAULT_MS = 20
class Lock:
def __init__(self):
self._locked = False
async def __aenter__(self):
while True:
if self._locked:
await asyncio.sleep_ms(_DEFAULT_MS)
else:
self._locked = True
break
async def __aexit__(self, *args):
self._locked = False
await asyncio.sleep_ms(_DEFAULT_MS)
def locked(self):
return self._locked
def release(self):
self._locked = False
lock = Lock()
uart = machine.UART(4, baudrate=9600)
pm = PMS5003(uart, lock)
pm.registerCallback(pm.print)
async def display_values():
await asyncio.sleep(50) # wait for sensor to start correctly
while True:
PM25 = str(pm.pm25_standard)
fb.fill(white)
fb.text(PM25,5,5,black)
e.set_frame_memory(buf, x, y, w, h)
e.display_frame()
await asyncio.sleep(30)
#asyncio.run(display_values())
loop=asyncio.get_event_loop()
loop.run_until_complete(display_values())
#asyncio.run(display_values())
loop=asyncio.get_event_loop()
loop.run_forever()
I'm so grateful for your help...
THANKS.
All the best.