ich stelle mich grade etwas dumm an, glaube ich: Ich möchte ein importiertes Modul in einer selbstgeschriebenen Klasse implementieren. Allerdings funktioniert es nicht so wie ich mir das vorstelle. Dazu habe ich zwei Lösungsvorschläge, die beide andere Fehlermeldungen auswerfen. Mir ist weder beim ersten noch beim zweiten Versuch klar, warum es nicht geht.
Über Anregungen bin ich dankbar =)
LG
Michi
Code, welcher gar nicht funktioniert:
Code: Alles auswählen
from gpiozero import DistanceSensor
import time
class US_sensor(DistanceSensor):
def __init__(self, pins, name):
self.pins = pins
self.name = name
DistanceSensor.__init__(self,self.pins)
# main function
def main():
sensor = US_sensor([16,26],"sensor")
while True:
print('Distance to nearest object is', sensor.distance*100, 'cm')
time.sleep(0.5)
if __name__ == '__main__':
main()
Code: Alles auswählen
Traceback (most recent call last):
File "Ultrasonic_HC-SR04_Lib.py", line 17, in <module>
main()
File "Ultrasonic_HC-SR04_Lib.py", line 11, in main
sensor = US_sensor([16,26],"sensor")
File "/usr/lib/python3/dist-packages/gpiozero/devices.py", line 124, in __call__
self = super(GPIOMeta, cls).__call__(*args, **kwargs)
File "Ultrasonic_HC-SR04_Lib.py", line 8, in __init__
DistanceSensor.__init__(self,self.pins)
File "/usr/lib/python3/dist-packages/gpiozero/input_devices.py", line 856, in __init__
partial=partial, ignore=frozenset({None}), pin_factory=pin_factory
File "/usr/lib/python3/dist-packages/gpiozero/input_devices.py", line 277, in __init__
pin_factory=pin_factory)
File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 197, in __init__
super(EventsMixin, self).__init__(*args, **kwargs)
File "/usr/lib/python3/dist-packages/gpiozero/input_devices.py", line 98, in __init__
super(InputDevice, self).__init__(pin, pin_factory=pin_factory)
File "/usr/lib/python3/dist-packages/gpiozero/devices.py", line 520, in __init__
self.pin_factory.reserve_pins(self, pin)
File "/usr/lib/python3/dist-packages/gpiozero/pins/pi.py", line 100, in reserve_pins
requester, *(self.pi_info.to_gpio(pin) for pin in pins))
File "/usr/lib/python3/dist-packages/gpiozero/pins/pi.py", line 100, in <genexpr>
requester, *(self.pi_info.to_gpio(pin) for pin in pins))
File "/usr/lib/python3/dist-packages/gpiozero/pins/data.py", line 1209, in to_gpio
spec = spec.upper()
AttributeError: 'list' object has no attribute 'upper'
Code: Alles auswählen
from gpiozero import DistanceSensor
import time
class US_sensor(DistanceSensor):
pass
# main function
def main():
sensor = US_sensor(16,26)
while True:
print('Distance to nearest object is', sensor.distance*100, 'cm')
time.sleep(0.5)
if __name__ == '__main__':
main()
Code: Alles auswählen
Traceback (most recent call last):
File "Ultrasonic_HC-SR04_Lib.py", line 18, in <module>
main()
File "Ultrasonic_HC-SR04_Lib.py", line 14, in main
print('Distance to nearest object is', sensor.distance*100, 'cm')
File "/usr/lib/python3/dist-packages/gpiozero/input_devices.py", line 927, in distance
return self.value * self._max_distance
File "/usr/lib/python3/dist-packages/gpiozero/input_devices.py", line 937, in value
return super(DistanceSensor, self).value
File "/usr/lib/python3/dist-packages/gpiozero/input_devices.py", line 341, in value
return self._queue.value
File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 541, in value
self.full.wait()
File "/usr/lib/python3.7/threading.py", line 552, in wait
signaled = self._cond.wait(timeout)
File "/usr/lib/python3.7/threading.py", line 296, in wait
waiter.acquire()
KeyboardInterrupt