Versuche mich jetzt neu in den Pico 2 (RP2350) ein zu arbeiten.
Habe auch schon einen zweiten Pico zum Debugen und Programieren verdrahtet.
Habe vorher ein bisschen mit Mega8 und C gemacht.
Bin aber relativ ein Anfänger
Programieren möchte ich eher in C als in Python, da C doch 10mal schneller ist. (bin aber C-Anfänger)
Das läuft aber nur mit einem Pin (Kanal)
Ich möchte aber min 3 Led-Ketten anhängen (also 3 Kanäle)
Kennt jemand einen Code, wo man mehr Kanäle für den WS2812 betreiben kann ?
Der Pico ist ja sehr viel anders als der Mega 8
Kennt jemand vielleicht gute Foren auf deutsch, wo das vielleicht gut behandelt wird, oder bin ich hier eher doch richtig ?
Ich war vor der Wahl zwischen Arduino und Pico
Habe mich für Pico entschieden weil es scheinabr vortschritlicher ist, aber scheinbar gibt es für Arduino doch viel mehr Beispiele und Anwender als für Pico?!
Kennt jemand einen Code, wo man mehr Kanäle für den WS2812 betreiben
kann ?
Hast du doch schon. Selbst der Pico 1 hat 4 PIO Engines und ich schätze, das der Pico 2 dem nicht nachsteht. Du wirfst den PIO Engines den gleichen Code wie für PIO 1 hin, musst nur die Pins verändern.
Übrigens spielt es für die PIOs keine Rolle, ob sie aus Python oder C programmiert werden, das hat auf die Geschwindigkeit keinen Einfluss.
Tutorials sogar auf Deutsch findet man auf Youtube - meist für den PICO '1'.
Das läuft aber nur mit einem Pin (Kanal)
Ich möchte aber min 3 Led-Ketten anhängen (also 3 Kanäle)
Kennt jemand einen Code, wo man mehr Kanäle für den WS2812 betreiben
kann ?
Der PICO2 hat drei PIOs, also zwölf StateMachines und kann somit zwölf 'Ketten' allein darüber ansteuern. Wenn du dir die Mühe machst zu verstehen, wie die doch recht triviale Funktion implementiert ist, dann sollte keine allzu hohe mentale Transferleistung notwendig sein den zuvor kopierten Code zu erweitern.
Wenn du dir die Mühe machst zu
verstehen, wie die doch recht triviale Funktion implementiert ist, dann
sollte keine allzu hohe mentale Transferleistung notwendig sein den
zuvor kopierten Code zu erweitern.
mmmhh..
Könnte man einen Kanal einfach mehr mal anlegen, für unterschiedliche pins?
Habe mal den Code durchgekaut, aber nicht so recht Plan.
Könnte man einen Kanal einfach mehr mal anlegen, für unterschiedliche
pins?
Ganz bequem?
Wenn der PIO code vernünftig geschrieben ist, muss man den nur einmal anlegen sowie einmal pro PIO (also für je vier StateMachines) laden.
Jede Statemachine (0…11) steuert mit diesem Code nur jeweils einen GPIO Pin an. Danach kann man in die SM-FIFOs einfach die zu übertragenden Daten manuell einschreiben, oder – für die Bequemen unter uns – mittels DMA einschieben.
PS. Mit µPy wärst du schon gestern fertig. (Bei vollkommen identischer Geschwindigkeit)
oder muss ich da den Pico immer neu anstecken und die .uf2 rüberladen?
Du lädst nur einmal das .UF2 File für Micropython selbst auf den Pico. Die eigentlichen *.py Programme kommen per z.B. Thonny oder anderer Konsole auf den Pico. Nennst du ein Programm 'main.py', ist es ein Autostarter und wird nach dem Einschalten des Pico ausgeführt.
Du merkst, ich benutze Thonny, aber alles andere geht natürlich auch. Nur so als Beispiel, hier steuert ein Pico (1) mit MPy ein RC Car mit SBUS Dekoder, 2 MotorESC, Lichtsteuerung und einem RC Servo ohne irgendwelche Engpässe, und dabei benutze ich noch nicht mal die PIOs.
PIO Programmierung erfordert am Anfang eine neue Rangehensweise an Programmierung, macht aber Spass. Benutze ich z.B. als Ausgabe an ein LC-Display mit MM5453 Treiberchip, von dem du sicher noch nie gehört hast. Ich auch nicht, aber sein ulkiges Datenformat bot sich für PIO geradezu an.
Was für eine Umgebung würdest du empfehlen ?
In VS-Code oder in Thonny Python ?
Empfehlungen sind so eine Sache. Ich nutze vi, manchmal gvim, manchmal geany. Von den beiden von dir genannten würde ich keine anfassen wollen. Vor allem weil Thonny gern die Gelegenheit ergreift, unangenehm aufzufallen. Genügend dokumentierte Fälle findet man.
Kann ich da auch meinen zweiten Pico zum Programmieren/Debugen verwenden
oder muss ich da den Pico immer neu anstecken und die .uf2 rüberladen?
Matthias hat's schon gut erklärt, nur einmal das passende uf2 drauf und danach werden Programme und Daten per /dev/ttyACM[0-9] (COMirgendwas:, oder wie auch immer das Zeug unter Windows heißt) übertragen.
Dafür eignet sich zB. pyboard.py prächtig (temporäres übertragen oder auch Änderungen am internen Dateisystem)
Wobei das trotzdem noch timing-wackeliger, Arduino-ähnlicher, blockierender Code ist, von dem ich noch nie ein Freund war.
Aber für'n quick hack reicht's sicherlich.
Danke für die Antworten !
Ich werde mich mal da reinarbeiten..
Aber was anderes, weil gerade so viel Fachleute hier sind:
Kann man eigetlich den programierten Code in einem Pico auch schützen ?
Beim Mega 8 gib es ja Flags, die man setzen kann, womit man das auslesen verhindern kann.
Gibt es sowas bei einem Pico auch ?
Bei Pyhton oder C?
Du allokierst ja auch wie ein Berserker zig zehntausende von Tupels. Da kommt dann flugs die Garbage Collection ins Spiel.
Daher meine Abneigung bezgl. der NeoPixel Implementation.
Zudem schreibst du zehntausende von unnötigen, redundanten Informationen.