Microsoft/pxt-neopixel library


#1

Hallo Forum, hallo Jörn
Letztes WE wollte ich Mal schnell ne Neopixel Anwendung auf dem Calliope coden.
Leider ist das erst mit Umwegen geglückt weil die Standart Neopixel Bibliothek nicht funktioniert.
Nachdem das Paket installiert ist geht eigentlich garnichts mehr. Nicht mal das Block Hallowelt Script.
Wie kann das passieren, und keiner merkt was?
Wenn man in den JS-Editor guckt sieht man auch gleich im Explorer eine rote 23 für die Anzahl der Fehler.
Diese Fehler beruhen offensichtlich darin, dass Math Funktionen aufgerufen werden, die in der aktuellen Math Library nicht vorhanden sind.
Ich würde mich sehr freuen, wenn dieser Fehler kurzfristig beseitigt wird.

Liebe Grüße
Werner


#2

Ja bitte, ich kann ohne Neopixel auch nicht mehr leben. Aber Jörn IST unschuldig. Das Neopixelpaket auf github wird so häufig geupdated dass man kaum hinterherkommt.
Außerdem nimmt pelikhan nicht Rücksicht auf veraltete calliopekernels.


#3

Danke für die schnelle Antwort.
Ich hatte mir allerdings vorgestellt, dass die angezeigten Pakete lokal verfügbar sind und erst nach einer Prüfung aktualisiert werden.
Macht das zuviel Arbeit?

Werner


#4

Die angezeigten Pakete sind die aktuellen. Du hast aber die Möglichkeit bei Github erstmal z.B. das neopixel-Paket von Kitronik zu laden oder wenn Du einen eigenen Account hast kannst Du Dir auch einfach Pakete clonen die dann in dieser Version verfügbar sind. Die Calliopeleute haben zur Zeit leider für sowas zu wenig Leute.
Ich bin auch gerade im Urlaub und kann nicht viel nachforschen. Bei mir gab es übrigens beim Neopixelpaket auch immer Fehler in Javascript, aber es wurde fertigcompiliert und lief dann. Vielleicht ein kleiner Fehler bei Dir wie eine falsche Variable beim Show-Befehl?
Viel Erfolg erstmal!


#5

Hallo Werner und Michael,

es ist wohl so, dass die Prüfung nur einmalig stattfindet und dann nicht wirklich weiter getestet wird, ob ein Paket funktioniert. Wir machen diese Prüfung aber auch nicht, sondern das Microsoft Team.

Das Neopixel-Paket funktioniert allerdings bei mir… Ich habe es eben nur kurz eingelesen und ein Programm ausgespielt.
Vielleicht hat es sich bei dir eher um ein temporäres Problem gehandelt?

Die Pakete liegen alle auf GitHub, sie werden nur direkt verlinkt (ebenfalls nicht von uns) und gecached. Das soll eigentlich dazu führen, dass es weniger Probleme gibt. Anscheinend hat das in deinem Fall aber nicht geklappt.
Generell gibt es u.a. diese caching Umstellung bei den Paketen, deshalb funktionieren momentan nicht alle. Für die meisten gibt es aber auch funktionierende alternativen auf GitHub, wie Michael beschrieben hat.

Beste Grüße
Jörn


#6

Hallo Jörn,
Danke für den kleinen Überblick der Pakete Infrastruktur.
Fehler: pxt_modules/neopixel/neopixel.ts(373,24): error TS2339: Property ‘idiv’ does not exist on type ‘typeof Math’.
Fehler: pxt_modules/neopixel/neopixel.ts(528,18): error TS2339: Property ‘round’ does not exist on type ‘typeof Math’.
Davon sind insgesamt 23 drin. (immer idiv und round). Sieht nicht temporär aus.Ist aktuell so.


#7

Komisch, bei mir wird ein Programm mit Neopixels einfach ausgespielt. Schau doch aber mal hier: https://github.com/Microsoft/pxt-neopixel bzw hier: https://github.com/Microsoft/pxt-neopixel/commit/52a09226a5cda2eeca77ca38896b5a792c3bcb7e
Da siehst du ja die Änderungen, die bei dir anscheinend Probleme machen. Am besten dort einfach ein Issue aufmachen, dann sollte das auch behoben werden…

Beste Grüße
Jörn


#8

Ohje,
Da sehe ich vieles anders. Ich muss vermuten, dass nur du die Probleme nicht hast. Hab das auf vier verschiedenen Systemen geprüft. Wie sieht das bei dir aus Michael? Das oben erwähnte Paket benutzt idiv und round aus dem Math Namensraum. Leider gibt es diese Funktionen im Calliope Kernel nicht.

Ich verstehe auch nicht warum ich als Anwender jetzt darum bitten soll, diese Aufrufe wieder herauszunehmen, weil das Calliope Team den Kernel nicht aktuell hält. Da stimmt doch was nicht.

Hier noch ein Testscript , dass bei geladenem Neopixel-Paket das blinkende Icon nur zeigt, wenn die zusätzlichen Funktionen eingebunden werden:

// notwendige Funktionen für das aktuelle Neopixel-Paket
namespace Math {
export function idiv(x: number, y: number) { return x / y }
export function round(x: number) { return x }
}
basic.forever(() => {
basic.showIcon(IconNames.Happy)
basic.clearScreen()
basic.pause(500)
})

Liebe Grüße
Werner


#9

Bin erst am Montag daheim zum testen. Grundsätzlich ist aber der Weg dass sich der Enduser kümmern soll ungünstig, da sich der Mini ja an Drittklässler und die zugehörigen Grundschullehrerinnen richtet, die garantiert nicht auf github angemeldet sind.
Da könnte Calliope noch nen Job vergeben.
Aber vielleicht läuft es ja nur bei Dir nicht #-(


#10

So, alles getestet!
Leider läuft es nicht. Es wird im Blockmodus problemlos compiliert, es tut sich aber am Mini garnichts wenn das Programm läuft.
In Javascript werden dann auch die 23 Fehler angezeigt.
Wenn ich ein altes Programm mit altem Neopixelpaket lade läufts wunderbar, wenn ich das Paket aktualisiere läufts nichts mehr. Jetzt weiß ich auch warum ich bei meinem zweiten Neopixelteil auf hackster so Probleme hatte. Da war das wahrscheinlich auch schon so.
Was nun?


#11

Hallo Michael,

Als vorübergehende Umgehungslõsung kannst du den typescript Patch , den du weiter oben findest entweder in dein Programm oder als custum.ts mit aufnehmen.
Ich hab das bei mir getestet funktioniert gut.
Aber natürlich ist das nicht die Lösung für weitere Fehler dieser Art auch mit anderen Bibliotheken. Siehe zum Beispiel hier die Midi Sache.


#12

Ja, so läufts wieder!


#13

Das ESP8266-Paket läuft auch nicht mehr. Paketsterben überall :frowning:


#14

Habe gerade festgestellt wie man an alte Versionen der libs kommt. Auf Fork klicken, und es erscheinen dann alle anderen die sich schon eine Kopie gezogen haben mit Datum. Dann kann man sich zur gewünschten Version klicken. (Als Notlösung)


#15

Hallo Werner,
es wäre natürlich hilfreich gewesen, wenn du geschrieben hättest, dass es auf dem mini nicht mehr geht. Auf dem mini hatte ich es nicht getestet, da ich es so verstanden hatte, dass dies bei dir schon nicht auszuspielen ging. :wink:
Bitte schreib doch noch ein Issue auf https://github.com/Microsoft/pxt-calliope bzw. https://github.com/Microsoft/pxt-neopixel, damit sich die MS Entwickler (auch langfristig) darum kümmern.
Beste Grüße
Jörn


#16

Weil es mich so nervt hab ichs mit meinem armseligen Grundkursenglisch bei pxt-calliope gemacht.

Bekommen wir eigentlich auch ein neues makecode und scratch?


Fehler in den makecode Paketen, BC95, ESP8266, Devices, neopixel, microturtle + Lösungen
#17

Danke Michael,
Vielleicht solltest du noch dazu schreiben, dass das den Calliope Mini betrifft. Auf den anderen Plattformen wird es wohl funktionieren.
Ich ärgere mich so, dass ich die Sache nicht weiter kommentieren möchte.
Gruß


#18

Da sich bis heute noch nichts getan hat habe ich heute auch noch im Neopixelpaket ein Issue eröffnet.


#19

Inzwischen weiß ich warum das Paket nicht mehr läuft. Dadurch, dass das neue Makecode für den micro:bit mit Dezimalzahlen rechnen kann, muss in machen Paketen die Division geändert werden. 3:2 ergibt nicht mehr zwei (Rundung auf Ganzzahl) sondern 1,5. Deswegen werden jetzt idiv und round verwendet um wieder auf das Ergebnis 2 zu kommen.
Jetzt wäre ein Update für unser makecode nötig und pelikhan hat auch schon thinkberg @Leo (?) auf Github angepingt aber ich konnte noch keine Reaktion beobachten. Also bitte mal ein Update herausbringen bevor wir völlig abgehängt sind. :kissing_heart:


#20

Stimmt.Diese beiden Funktionen für die Math Bibliothek im Calliope Kernel hatte ich schon im erstem Post zu diesem Thema angefordert. Da ist ja nichts passiert.
Genau diese Funktionen stehen ja auch in dem Patch von mir drin.
Ich baue die beiden Zeilen immer in meine custom.ts mit ein.
Habe z.Z. keine Hoffnung, dass sich da demnächst was ändert.

Liebe Grüße
Werner