Bekomme wenn ich mein Programm laufen lasse unter MikroPython(PiPico) folgenen fehler/Ausgabe:
Auslösemechanismus wurde betätigt,
Traceback (most recent call last):
File "<stdin>", line 71, in <module>
IndexError:
NB! Thonny could not execute 'Run'.
It looks like MicroPython has arrived to an unexpected state or there have been communication problems. See Thonny's backend.log for more information.
You may need to reconnect, Stop/Restart or hard-reset your device.
ManagementError
>>>
NB! Thonny could not execute 'get_globals'.
It looks like MicroPython has arrived to an unexpected state or there have been communication problems. See Thonny's backend.log for more information.
You may need to reconnect, Stop/Restart or hard-reset your device.
Display More
habe mehrere Male neu gestartet den Pico resettet aber hat alles nix gebracht. Ich weiß nicht ob es relevant ist aber die Programme fingen nach einfügen von folgendem codesegment an,:
ECKEN = []
if schalter_links_unten.value() == 1:
ECKEN.append(lampe_links_unten)
if schalter_rechts_unten.value() == 1:
ECKEN.append(lampe_rechts_unten)
if schalter_links_oben.value() == 1:
ECKEN.append(lampe_links_oben)
if schalter_rechts_oben.value() == 1:
ECKEN.append(lampe_rechts_oben)
Hier nochmal der gesamte code zum besseren Verständnis (ich weiß der code ist nicht nach allen "regeln formatiert da bin ich dran aber ich will es erstmal zum laufen bringen):
import machine
import utime
import urandom
import _thread
print(""" """)
lampe_ausgabe = 0
lampe_ausgabe_2 = 0
verzoegerung = 0
input_zeit_1_wert = 0.25
input_zeit_2_wert = 0.5
input_zeit_3_wert = 1
input_zeit_4_wert = 2
input_zeit_5_wert = 4
leuchtdauer = 2
counter = 0
global bewegungsstatus_global
bewegungsstatus_global = False
#OUTPUTS
lampe_links_unten = machine.Pin(2, machine.Pin.OUT)
lampe_links_oben = machine.Pin(3, machine.Pin.OUT)
lampe_rechts_unten = machine.Pin(4, machine.Pin.OUT)
lampe_rechts_oben = machine.Pin(5, machine.Pin.OUT)
#INPUTS
bewegungsstatus = machine.Pin(1, machine.Pin.IN, machine.Pin.PULL_DOWN)
dauerbetrieb = machine.Pin(6, machine.Pin.IN, machine.Pin.PULL_DOWN)
diagonal = machine.Pin(7, machine.Pin.IN, machine.Pin.PULL_DOWN)
schalter_links_unten = machine.Pin(8, machine.Pin.IN, machine.Pin.PULL_DOWN)
schalter_links_oben = machine.Pin(9, machine.Pin.IN, machine.Pin.PULL_DOWN)
schalter_rechts_unten = machine.Pin(10, machine.Pin.IN, machine.Pin.PULL_DOWN)
schalter_rechts_oben = machine.Pin(11, machine.Pin.IN, machine.Pin.PULL_DOWN)
input_zeit_1 = machine.Pin(12, machine.Pin.IN, machine.Pin.PULL_DOWN)
input_zeit_2 = machine.Pin(13, machine.Pin.IN, machine.Pin.PULL_DOWN)
input_zeit_3 = machine.Pin(14, machine.Pin.IN, machine.Pin.PULL_DOWN)
input_zeit_4 = machine.Pin(15, machine.Pin.IN, machine.Pin.PULL_DOWN)
input_zeit_5 = machine.Pin(16, machine.Pin.IN, machine.Pin.PULL_DOWN)
def signal_waiter_thread():
global bewegungsstatus_global
while True:
if bewegungsstatus.value() == 1 or dauerbetrieb.value() == 1:
bewegungsstatus_global = True
utime.sleep(0.05)
_thread.start_new_thread(signal_waiter_thread, ())
while True:
ECKEN = []
if schalter_links_unten.value() == 1:
ECKEN.append(lampe_links_unten)
if schalter_rechts_unten.value() == 1:
ECKEN.append(lampe_rechts_unten)
if schalter_links_oben.value() == 1:
ECKEN.append(lampe_links_oben)
if schalter_rechts_oben.value() == 1:
ECKEN.append(lampe_rechts_oben)
#Auslösemechanismus
if bewegungsstatus_global == True:
print("Auslösemechanismus wurde betätigt,")
while lampe_ausgabe == 0:
lampe_ausgabe = urandom.choice(ECKEN)
#Verzoegerung
verzögerung = 0
if input_zeit_1.value() == 1:
verzoegerung = verzoegerung + input_zeit_1_wert
if input_zeit_2.value() == 1:
verzoegerung = verzoegerung + input_zeit_2_wert
if input_zeit_3.value() == 1:
verzoegerung = verzoegerung + input_zeit_3_wert
if input_zeit_4.value() == 1:
verzoegerung = verzoegerung + input_zeit_4_wert
if input_zeit_5.value() == 1:
verzoegerung = verzoegerung + input_zeit_5_wert
print("die Verzögerung ist auf", verzoegerung, "Sekunden eingestellt.")
#### aktiviert wenn "+ diagonal" aktiviert ist die gegenüberliegende Lampe mit
if diagonal.value() == 1:
print("+ diagonal ist aktiviert")
if lampe_ausgabe == lampe_links_unten:
lampe_ausgabe_2 = lampe_rechts_oben
else:
if lampe_ausgabe == lampe_links_oben:
lampe_ausgabe_2 = lampe_rechts_unten
else:
if lampe_ausgabe == lampe_rechts_oben:
lampe_ausgabe_2 = lampe_links_unten
else:
if lampe_ausgabe == lampe_rechts_unten:
lampe_ausgabe_2 = lampe_links_oben
# Lasse lampen unter der Berücksichtigung aller vorherigen Variabelen leuchten
utime.sleep(verzoegerung)
lampe_ausgabe.toggle()
lampe_ausgabe_2.toggle()
utime.sleep(leuchtdauer)
lampe_ausgabe.toggle()
lampe_ausgabe_2.toggle()
else:
utime.sleep(verzoegerung)
lampe_ausgabe.toggle()
utime.sleep(leuchtdauer)
lampe_ausgabe.toggle()
## value cleanup
lampe_ausgabe2 = 0
lampe_ausgabe = 0
verzoegerung = 0
global bewegungsstatus_global
bewegungsstatus_global = False
utime.sleep(0.25)
counter = counter + 1
print("curcuit", counter, "end")
print()
print()
print("******************************************************")
print("curcuit", counter + 1,"start")
print()
Display More