Fixes for real RPi
This commit is contained in:
parent
62b97f3f01
commit
e1b201376f
|
@ -30,12 +30,13 @@ class ledPulse(threading.Thread):
|
|||
|
||||
self.log = logging.getLogger(self.__class__.__name__)
|
||||
self.gpio = gpio
|
||||
super().__init__(name=name, daemon=False)
|
||||
|
||||
super().__init__(name=name, daemon=True)
|
||||
|
||||
self.pwm_setup()
|
||||
|
||||
self.log.info(f"platform '{sys.platform}' " +
|
||||
f"support: {sys.platform == 'linux'}")
|
||||
self.log.info(f"platform '{self.model}' " +
|
||||
f"support: {self.supported}")
|
||||
|
||||
for dm in self.delayMethods:
|
||||
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.stop_event = threading.Event()
|
||||
|
||||
# Method to stop thread
|
||||
# Like def stop(): self.stop_event.set()
|
||||
# But shorter ;)
|
||||
self.stop = self.stop_event.set
|
||||
|
||||
self.queue = Queue()
|
||||
|
||||
# Set default values
|
||||
|
@ -53,15 +58,17 @@ class ledPulse(threading.Thread):
|
|||
setattr(self, key, value)
|
||||
|
||||
def pwm_setup(self):
|
||||
self.supported = False
|
||||
self.moel = sys.platform
|
||||
try:
|
||||
with op en('/sys/firmware/devicetree/base/model', 'r') as m:
|
||||
print("OPN")
|
||||
model = m.read()
|
||||
if model.lower().startswith('raspberry pi'):
|
||||
self.supported = True
|
||||
self.model = model
|
||||
except Exception:
|
||||
self.supported = False
|
||||
self.model = sys.platform
|
||||
pass
|
||||
|
||||
if self.supported:
|
||||
import RPi.GPIO as GPIO
|
||||
|
@ -75,9 +82,12 @@ class ledPulse(threading.Thread):
|
|||
self.setValue = self.pwm.ChangeDutyCycle
|
||||
self.pwm.start(0) # start pwm with value 0
|
||||
else:
|
||||
# Not supported, skip setValue
|
||||
# self.setValue = lambda x: x
|
||||
# Platform not supported, set
|
||||
# a dummy setValue function
|
||||
if self.log.level == logging.DEBUG:
|
||||
self.setValue = print
|
||||
else:
|
||||
self.setValue = lambda x: x
|
||||
|
||||
return (False, sys.platform)
|
||||
|
||||
|
|
11
test.py
11
test.py
|
@ -1,5 +1,6 @@
|
|||
import logging
|
||||
from pulses import pulses
|
||||
import time
|
||||
|
||||
logging.basicConfig(format='%(name)s %(threadName)s %(msg)s')
|
||||
|
||||
|
@ -8,4 +9,12 @@ log.setLevel('DEBUG')
|
|||
|
||||
led = pulses.ledPulse(12)
|
||||
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()
|
||||
|
|
Loading…
Reference in New Issue