Fixes for real RPi

This commit is contained in:
Andrea Mistrali 2023-05-02 07:01:28 +02:00
parent 62b97f3f01
commit e1b201376f
2 changed files with 29 additions and 10 deletions

View File

@ -30,12 +30,13 @@ class ledPulse(threading.Thread):
self.log = logging.getLogger(self.__class__.__name__) self.log = logging.getLogger(self.__class__.__name__)
self.gpio = gpio self.gpio = gpio
super().__init__(name=name, daemon=False)
super().__init__(name=name, daemon=True)
self.pwm_setup() self.pwm_setup()
self.log.info(f"platform '{sys.platform}' " + self.log.info(f"platform '{self.model}' " +
f"support: {sys.platform == 'linux'}") f"support: {self.supported}")
for dm in self.delayMethods: for dm in self.delayMethods:
self.register_delay_method(dm, eval(f"delay_{dm}")) self.register_delay_method(dm, eval(f"delay_{dm}"))
@ -44,8 +45,12 @@ class ledPulse(threading.Thread):
self.register_value_method(vm, eval(f"value_{vm}")) self.register_value_method(vm, eval(f"value_{vm}"))
self.stop_event = threading.Event() self.stop_event = threading.Event()
# Method to stop thread # Method to stop thread
# Like def stop(): self.stop_event.set()
# But shorter ;)
self.stop = self.stop_event.set self.stop = self.stop_event.set
self.queue = Queue() self.queue = Queue()
# Set default values # Set default values
@ -53,15 +58,17 @@ class ledPulse(threading.Thread):
setattr(self, key, value) setattr(self, key, value)
def pwm_setup(self): def pwm_setup(self):
self.supported = False
self.moel = sys.platform
try: try:
with open('/sys/firmware/devicetree/base/model', 'r') as m: with op en('/sys/firmware/devicetree/base/model', 'r') as m:
print("OPN")
model = m.read() model = m.read()
if model.lower().startswith('raspberry pi'): if model.lower().startswith('raspberry pi'):
self.supported = True self.supported = True
self.model = model self.model = model
except Exception: except Exception:
self.supported = False pass
self.model = sys.platform
if self.supported: if self.supported:
import RPi.GPIO as GPIO import RPi.GPIO as GPIO
@ -75,9 +82,12 @@ class ledPulse(threading.Thread):
self.setValue = self.pwm.ChangeDutyCycle self.setValue = self.pwm.ChangeDutyCycle
self.pwm.start(0) # start pwm with value 0 self.pwm.start(0) # start pwm with value 0
else: else:
# Not supported, skip setValue # Platform not supported, set
# self.setValue = lambda x: x # a dummy setValue function
self.setValue = print if self.log.level == logging.DEBUG:
self.setValue = print
else:
self.setValue = lambda x: x
return (False, sys.platform) return (False, sys.platform)

11
test.py
View File

@ -1,5 +1,6 @@
import logging import logging
from pulses import pulses from pulses import pulses
import time
logging.basicConfig(format='%(name)s %(threadName)s %(msg)s') logging.basicConfig(format='%(name)s %(threadName)s %(msg)s')
@ -8,4 +9,12 @@ log.setLevel('DEBUG')
led = pulses.ledPulse(12) led = pulses.ledPulse(12)
led.start() led.start()
# led.set(delay=1/100, valueMode="sin", max=20) led.set(delay=1/100, loopMethod="sin", max=20)
time.sleep(4)
led.set(delay=1/100, loopMethod="on", initialMethod="sin", finalMethod=None, max=40)
time.sleep(4)
led.set(delay=1/100, loopMethod="cos", initialMethod=None, finalMethod="sin", max=20)
time.sleep(4)
led.set(delay=1/100, loopMethod="on", initialMethod="sin", finalMethod="sin", max=40)
time.sleep(4)
led.stop()