MicroPython - LEDs an Raspberry Pi Pico leuchten nicht auf

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Moin!

    Ich arbeite seit ein ein paar Tagen an einem Projekt, an dem ich mit meinem Raspberry Pi Pico arbeite.

    Ich habe dabei LEDs mit einem Vorwiderstand an den Raspi Pico gelötet. (- Pol an einen GND Pin und + Pol an einen beliebigen Pin)

    Mein Problem: Ich habe nun, bevor ich die Schaltungen verlötet habe, Die Kabel testweise an die Pins des Raspis angeschlossen, um zu überprüfen, ob alles geht.

    Klar! Es leuchtet natürlich keine einige LED.

    Ich hab mich also auf die Suche nach Fehlern gemacht. Ich habe alle LEDs ausprobiert, alle funktionieren.

    Zusätzlich habe ich dann noch einmal die Kabel der + Pole an einen +3.3V Pin am Pico angeschlossen. Komischerweise haben dort die Lampen funktioniert...

    Deshalb denke ich, liegt es an meinem Code, den ich geschrieben habe:

    Jetzt die Frage: Was ist am Code falsch?

    Ich habe auch nochmal diesen Code ausprobiert: (Der funktioniert!)

    Danke schonmal,

    VG Julgeh1234

    2 Mal editiert, zuletzt von Julgeh1234 (28. April 2023 um 17:20)

  • MicroPython - LEDs an Raspberry Pi Pico leuchten nicht auf? Schau mal ob du hier fündig wirst!

  • Guten Tag,

    Das Programm kommt nicht über die Zeile 10 hinaus. Denn dort ist schon dein LOOP zu ende. Zudem was bezweckst du mit dem GPIO 25 ? An diesen kann man keine externe LED anlöten ?

    Wenn es ein einfache PICO ohne WLAN ist, wird mit GPIO 25 die interne LED angesprochen. Nur beim PICO W wird hierfür eine andere Bezeichnung notwendig, denn diese OnBoard LED wird beim W nicht mehr vom Prozessor angesteuert.

    ZU Beginn des Programms stehen erst alle Importe, dann die Funktiones-def-initionen , dann alle GPIO Zuweisungen und Initiierungen, und dann erst der eigentliche Hauptprogrammcode.

    Wenn du eine Blinken der internen LED als Headbeat haben möchtest, dann kannst du das als Thread über _thread , oder über einen Timer aus des der Bibliothek machine machen.

    Deine Code ist oder endet immer wieder in einer While Schleife ohne tatsächliche Abbruchbedingung.
    Bringe mal dein Programm in eine vernünftige Struktur, und beschreibe den Funktionsablauf. Denn das was du hier zusammengeschrieben hast ergibt keinen wirklichen Sinn.

    es grüßt euer
    Willy

    Einmal editiert, zuletzt von WillyR_aus_C (28. April 2023 um 17:28)

  • Beitrag von Julgeh1234 (28. April 2023 um 17:41)

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Mein Pico hat kein WLan. Ich hab die eigentlich nur useless angeschaltet, um noch zu sehen ob er Strom bekommt.

    Hab jetzt den Code strukturiert:

    Möchte mit ledblau1 und ledblau2 ein Wechselblinken. Aktuell ist die die eine LED für lange Zeit an, wechselt in ca. .5 Sekunden und die gleiche geht wieder an...

  • Guten Tag,

    Du machst wieder eins du pollst das Ganze. Das wird so nichts.

    Du musst deine Blinksequenzen der einzelnen LEDs in Funktionen packen.
    Und dann schau mal bei TIMER rein wie man einzelne Abläufe als Funktionen startet.

    So wie du an die Sache ran gehst wird das nichts.

    Wenn du eine Wechselblinken über eine Funktion erzeugen willst, dann kann man das auch so machen:

    Code
    def blinken():
        led1.toggle()
        led2.value(not led1.value())

    damit kippt bei jedem Aufruf der Funktion blinken der Status der LED1 um, von LOW to HIGH und umgekehrt, und LED2 nimmt den entgegengesetzten Status an.

    es grüßt euer
    Willy

  • Hallo,

    Aktuell ist die die eine LED für lange Zeit an, wechselt in ca. .5 Sekunden und die gleiche geht wieder an...

    wichtig ist, das man nicht zu viele Probleme auf einmal lösen will. Wenn wir mal die anderen LED's rauswerfen und nur noch die Rote und die Blaue drin lassen, dann sieht dein Code so aus:

    Jetzt machst du hier folgendes, du rufst 'lightUpLed' auf, darin setzt du als erstes eine Blaue und die andere Blaue LED auf 0., dann machst du die erste Blaue an. 0,25 Sekunden später rufst du die Funktion wieder auf und setzt beide LED's auf 0, danach wird die andere Blaue angeschalten und dann wartest du 7 Sekunden und das geht dann wieder von vorne los. Kannst du damit das Verhalten der LED's nachvollziehen?

    Der nächste Schritt wäre, eine Schleife zu schreiben, in der abwechselnd die LED's an und aus gemacht werden. Eine Funktion die immer beide aus macht, obwohl eine eh schon aus ist, wird nicht benötigt.

    Ich würde beide LED's zu Beginn ausschalten, dann in die Schleife springen und abwechselnd an- und ausschalten.

    Wenn du das hast, dann kann man sich um die anderen LED's kümmern.

    Jetzt noch ein paar Anmerkungen zum Programmaufbau in Python.

    Auf Modulebene, der Code ohne Einrückungen, darf kein ausführbarer Code stehen. Ausnahme ist eine 'If'-Abfrage die die 'main'-Funktion startet, aus dieser wird das Programm üblicherweise gesteuert. Ansonsten steht auf Modulebene nur Konstanten, Klassen und Funktionen.

    Namen werden in Python klein_mit_unterstrich geschrieben, Ausnahmen sind Konstanten, GANZ_GROSS und Klassen in PascalCase-Schreibweise.

    Namen nummeriert man eigentlich nicht durch, weil das dem Leser selten einen Mehrwert bietet. Da würde man eher eine Datenstruktur wie eine Liste wählen oder Zusätze die vielleicht den Ort oder sonstiges bestimmen

    'resetLeds' hat einen Nachteil, du kannst die Funktion nur in deiner jetzigen Konfiguration verwenden. Wenn du so eine Funktion willst, dann würde ich die LED's übergeben, die ausgeschalten werden sollen, so wie du es in 'lightUpLed' machst.

    'resetLeds' gehört eigentlich auch nicht in eine Funktion, die einen Namen mit 'lightUp' hat, denn 'resetLeds' macht ja genau das Gegenteil.

    Dein Code würde dann so aussehen:

    Kannst du deinen Fehler jetzt erkennen?

    Grüße

    Dennis

    🎧 With the music execution and the talk of revolution, it bleeds in me and it goes 🎧

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!