Hallo zusammen,
Ich habe hier einen Raspberry Pico mit MicroPython v.1.21.0 auf einem Breadboard mit einer LED, TSOP 4838 (Infrarot) mit Fernbedienung und einem Servomotor (ählich sg90) zusammen gefrickelt.
Via Fernbedienung z.B. Taste 1 wird eine Mp3 abgespielt und nach einer sleep Zeit bewegt sich der Servomotor. Läuft alles prima.
Nun folgendes Problem, während der sleep Zeit von 26 Sekunden kann ich mit der Fernbedienung nichts Anderes wählen. Ist mir schon klar, dass das Script durchläuft und nix zulässt.
Ich hoffe das war soweit verständlich…
Hat jemand eine Idee wie ich das lösen könnte?
Lg gogo
Python
from time import sleep
from machine import Pin, freq, PWM
from ir_rx.print_error import print_error
from ir_rx.nec import NEC_8
from picodfplayer import DFPlayer
# Initialisierung DFPlayer (UART, TX-Pin, RX-Pin, Busy-Pin)
player = DFPlayer(0, 16, 17, 18)
player.setVolume(5) # Lautstärke einstellen: 0 bis 30
led = Pin(15, Pin.OUT)
#Define the IR receiver pin and led pins
pin_ir = Pin(8, Pin.IN)
# GPIO für Steuersignal
servo_pin = 28
# 0 Grad
grad000 = 500000
# 45 Grad
grad045 = 1000000
# 90 Grad
grad090 = 1500000
# 135 Grad
grad135 = 2000000
# 180 Grad
grad180 = 2500000
pwm = PWM(Pin(servo_pin))
pwm.freq(50)
Taste1 = 69
Leiser = 82
Left = 8
Right = 90
Stop = 28
Lauter = 24
OK = 28
def decodeKeyValue(data):
return data
# User callback
def callback(data, addr, ctrl):
if data < 0: # NEC protocol sends repeat codes.
pass
else:
print(data)
if data == Taste1:
led.value(1)
player.playTrack(1,1)
sleep(26)
print('Position: Mitte (90 Grad)')
pwm.duty_ns(grad045)
sleep(0.8)
print('Position: Ganz Links (0 Grad)')
pwm.duty_ns(grad000)
sleep(0.8)
print('Position: Mitte (90 Grad)')
pwm.duty_ns(grad045)
sleep(0.8)
print('Position: Ganz Rechts (180 Grad)')
pwm.duty_ns(grad180)
sleep(0.4)
print('Position: Mitte (90 Grad)')
pwm.duty_ns(grad090)
sleep(0.8)
print('Position: Mitte (90 Grad)')
pwm.duty_ns(grad045)
sleep(0.8)
print('Position: Ganz Links (0 Grad)')
pwm.duty_ns(grad000)
sleep(0.8)
print('Position: Mitte (90 Grad)')
pwm.duty_ns(grad045)
sleep(0.8)
print('Position: Ganz Rechts (180 Grad)')
pwm.duty_ns(grad180)
sleep(0.4)
print('Position: Mitte (90 Grad)')
pwm.duty_ns(grad090)
sleep(0.8)
pwm.deinit()
print('Ende')
elif data == OK:
player.pause()
elif data == Leiser:
player.decreaseVolume()
elif data == Taste2:
led.value(0)
player.playTrack(1,2)
elif data == Left:
execfile("laufschrift.py")
left()
elif data == Right:
execfile("spring_point.py")
right()
elif data == Stop:
stop()
ir = NEC_8(pin_ir, callback) # Instantiate receiver
ir.error_function(print_error) # Show debug information
try:
while True:
pass
except KeyboardInterrupt:
ir.close()
Display More