rfid_test now indicates the everything

This commit is contained in:
paul-loedige 2023-01-17 12:12:04 +00:00
parent 9471e77874
commit 7af627c2b4
3 changed files with 49 additions and 13 deletions

View File

@ -54,3 +54,4 @@ class IndicationDriver:
self.pixels[idx] = (0, 0, 0)
self.pixels.show()
await asyncio.sleep(.1)
self.clear()

17
rfid_driver.py Normal file
View File

@ -0,0 +1,17 @@
import RPi._GPIO as GPIO
from mfrc522 import SimpleMFRC522
import asyncio
class RFIDDriver:
def __init__(self):
self.reader = SimpleMFRC522()
def __del__(self):
GPIO.cleanup()
async def get_next_id(self) -> int:
id = self.reader.read_id_no_block()
while not id:
id = self.reader.read_id_no_block()
await asyncio.sleep(0.01)
return id

View File

@ -1,23 +1,41 @@
from time import sleep
import RPi.GPIO as GPIO
from mfrc522 import SimpleMFRC522
import asyncio
import sys
sys.path.append('..')
import TREx.config as config
from TREx.indication_driver import IndicationDriver
from TREx.rfid_driver import RFIDDriver
reader = SimpleMFRC522()
async def __main__():
rfid_driver = RFIDDriver()
indication_driver = IndicationDriver()
indication_task = None
while True:
id, _ = reader.read()
if id in config.RFID_LOOKUP_TABLE.keys():
id = await rfid_driver.get_next_id()
trash_category = None
try:
if indication_task is not None:
indication_driver.stop_loop()
await indication_task
trash_category = config.RFID_LOOKUP_TABLE[id]
print(f"{id}: {trash_category}")
indication_driver.indicate(trash_category)
else:
print(id)
sleep(1)
GPIO.cleanup()
indication_task = asyncio.create_task(indication_driver.indicate_async(trash_category))
await asyncio.sleep(1)
except KeyError:
indication_driver.stop_loop()
asyncio.run(__main__())
# while True:
# id, _ = reader.read()
# if id in config.RFID_LOOKUP_TABLE.keys():
# trash_category = config.RFID_LOOKUP_TABLE[id]
# print(f"{id}: {trash_category}")
# indication_driver.indicate(trash_category)
# else:
# print(id)
# sleep(1)
# GPIO.cleanup()