Demodatei lights.py : Neopixel Import scheint nicht zu funktionieren.

Hallo Support Team,


 


Die lighty.py Demo funktioniert nicht auf dem Joy-Car. Der Code läuft beim Compilieren auf einen Fehler : 


 


from microbit import *


Bei Zeile
from neopixel import * - Fehlermeldung "unable to detect undefines names"


from utime import ticks_ms, ticks_diff



np = NeoPixel(pin0, 8)
headlights = (0, 3)
backlights = (5, 6)


 


ich arbeite mit dem Microbit V2 Joy Car


Besten Dank im voraus für die Ideen und Hilfe !


 


Andreas

Andreas Fricke

27.12.22 10:35

Hallo Andreas,


das tut mir sehr leid, dass du auf Fehler in unseren Programmen gestoßen bist. Es scheint so, als hätte es kleinere Syntaxänderungen gegeben, die nun zu Problemen führen. Wir werden selbstverständlich unsere Beispielprogramme noch einmal überprüfen und die Fehler korrigieren.


Könntest du einmal den folgende Überarbeitung ausprobieren?


import microbit
import neopixel
from utime import ticks_ms, ticks_diff


np = neopixel.NeoPixel(microbit.pin0, 8)
headlights = (0, 3)
backlights = (5, 6)
led_white = (60, 60, 60)
led_red = (60, 0, 0)
led_off = (0, 0, 0)
led_red_br = (255, 0, 0)
led_orange = (100, 35, 0)
indicator_left = (1, 4)
indicator_right = (2, 7)
indicator_warning = (1, 2, 4, 7)

def lightsON(self, headlights, led_white, backlights, led_red):
for x in self.headlights:
np[x] = self.led_white
for x in self.backlights:
np[x] = self.led_red
np.show()

def lightsOFF(np, headlights, backlights, led_off):
for x in headlights:
np[x] = led_off
for x in backlights:
np[x] = led_off
np.show()

def lightsBreakON(np, backlights, led_red_br, led_backlights_status):
temp = np[backlights[1]]
for x in backlights:
np[x] = led_red_br
np.show()
return (temp)

def lightsBreakOFF(np, led_backlights_status, backlights):
for x in backlights:
np[x] = led_backlights_status
np.show()

def lightsBackON(np, backlights, led_white, led_backlights_status):
temp = np[backlights[0]]
np[backlights[0]] = led_white
np.show()
return (temp)

def lightsBackOFF(np, backlights, led_backlights_status):
np[backlights[0]] = led_backlights_status
np.show()

def lightsIndicator(direction, last_ind_act, led_off, led_orange, np):
if ticks_diff(ticks_ms(), last_ind_act) >= 400 and np[direction[0]] == led_off:
for x in direction:
np[x] = led_orange
np.show()
return ticks_ms()
elif ticks_diff(ticks_ms(), last_ind_act) >= 400 and np[direction[0]] == led_orange:
for x in direction:
np[x] = led_off
np.show()
return ticks_ms()
else:
return last_ind_act

Liebe Grüße
Jens

Jens

28.12.22 09:12

Hallo Jens , danke für die schnelle Antwort !


ich habe den Eindruck das die  Syntax "import microbit" oder "import neopixel" nicht funktioniert. Mein kleiner Testcode läuft nur mit der Zeile "from microbit import *". Wenn ich die erste Zeile in "import microbit" ändere kommt die folgende Fehlermeldung : line 7 NameError: name 'display' isn't defined


 


Leider funktioniert deine Überarbeitung nicht. Ich habe den Eindruck, das die neopixel library nicht geladen wird.


Das Beispiel aus dem Make Code läuft einwandfrei.Das Beispiel für micropython leider noch nicht.


Hast Du noch eine Idee ?


 


Mein Testcode:
from microbit import *


while True:
    display.show(Image.HEART)
    sleep(1000)
    display.scroll("Hello World")


 

Andreas Fricke

28.12.22 18:19

Hallo , Ich habe es jetzt mit dem online Editor ausprobiert und die Demo.py Datei genutzt.


Der Fehler wird hier nicht angezeigt und die Licht Demo funktioniert. Ich kann auch die Beispiele vom lights.py übernehmen und diese funktionieren. 


Mit ist noch nicht klar warum der MU Editor hier anders reagiert. 


Besten Gruß Andreas 


 

Andreas Fricke

29.12.22 19:07

Hallo Andreas,


du hast völlig Recht. Welche Version des Mu-Editors verwendest du? Es scheint so, als würde Mu hier, vor allem bei neueren Versionen (ich habe hier 1.2.0 im Einsatz) die von dir genannten Meldungen anzeigen. Diese scheinen allerdings auch nur Warnungen und keine Fehler zu sein. Der Code müsste trotz den Meldungen erfolgreich kompilieren und auch auf dem Joy-Car funktionieren.


Wir gehen der Sache aber noch einmal näher auf den Grund und passen hier, falls nötig, unsere Codes noch einmal an. 🙂


Liebe Grüße
Jens

Jens

02.01.23 10:59

Achtung!

Ihr Webbrowser ist veraltet. Wechseln Sie jetzt zu einem aktuellen Browser für mehr Sicherheit, Geschwindigkeit und den besten Komfort auf dieser Seite.