Navigation im Terminal

Registriere dich jetzt, um exklusive Vorteile zu genießen! Als registriertes Mitglied kannst du Inhalte herunterladen und profitierst von einem werbefreien Forum.
Mach mit und werde Teil unserer Community!
  • Hallo,

    harter Noob hier, habe einen Pi 0 gekauft und lasse ihn ohne Benutzeroberfläche laufen, steuere ihn mit putty.

    Habe mir eine Schaltung mit LED und Widerstand gebaut. LED leuchtet beim anschalten des Pi, ohne dass ich dies per Python-Skript explizit befehle.

    1. Frage: Ist das normal? Jeder PIN scheint standardmäßig aktiviert zu sein (LED leuchtet bei jeder phys. zulässigen Schaltung beim Anschalten des Pi)


    Ich baute mir also mit dem Befehl nano led.py ein Python-Skript (falsche Benutzung von Vokabeln bitte korrigieren) mit dem Namen led und dem Inhalt

    import RPi.GPIO as GPIO

    GPIO.setmode (GPIO.BOARD)

    GPIO.setup (3, GPIO.OUT)

    GPIO.output (3, GPIO.LOW)

    wenn ich dieses Skript nun mit dem Befehl python led.py ausführe, erlischt die LED. Soweit so gut.

    Ich wollte dieses Skript wieder beenden, also rief ich alle Prozesse mit dem Befehl top auf.

    Im Anhang seht ihr meine Anzeige. Meine Fragen 2 & 3 sind nun:

    -wie komme ich wieder ins normale Terminal? Sprich: beende die top-Anzeige

    -wo sehe ich meinen Prozess, der die LED ausschaltete und wie kann ich diesen wiederrum beenden?

    Lassts krachen

    • Official Post

    Hallo irrtum,


    willkommen im Forum! ;)


    Da Du ja offenbar auch mit Python anfängst, solltest Du statt RPi.GPIO gleich mit gpiozero beginnen. Das ist besser dokumentiert, benutzerfreundlicher und aktueller.


    Im Fall LED siehe hier: https://gpiozero.readthedocs.io/en/stable/recipes.html#led


    python led.py

    Verwende python3 statt python beim Aufruf der Skripte, denn python (ohne 3) startet das Skript mit Python 2, welches aber bereits sein EOL erreicht hat.

  • Hallo,


    zum Verständnis deine Codes. Wenn du nicht programmierst, dass sich der Code wiederholen soll, dann tut er das auch nicht. Wie schon erwähnt, solltest du gleich mit 'gpiozero' anfangen, deswegen habe ich mein Beispiel daran angepasst. Schau dir den folgenden Code an. Aus der Bibliothek 'gpiozero' wird das Modul 'LED' importiert. Das wird benötigt um eine oder mehrere Led's zu steuern. Da du die Led vermutlich nicht nur einmal ansprechen willst, sondern du willst sie vielleicht mal ein- oder mal ausschalten, wird einmal definiert an welchen Pin die Led angeschlossen ist und gegebenenfalls noch weitere optionale Einstellungen, die lasse ich hier aber weg. Damit deine Led, die du definierst angesprochen werden kannst, musst du sie an einen Namen binden. Das ist in meinem Beispiel der Name 'led'. Hinter dem '=' Zeichen gebe ich den Pin an. Jetzt kann ich 'led' an- oder ausschalten.

    Wenn du das Programm startest, dann wird das in diesem Fall von oben nach unten abgearbeitet, wenn keine Fehlermeldungen kommen, dann ist das Programm beendet und du findest keinen Prozess mehr.

    Python
    from gpiozero import LED
    
    led = LED(3)
    led.off()

    Im nächsten Beispiel wird zum einen noch ein Modul 'sleep' importiert. Wie der Name vermuten lässt, macht das Programm ein Nickerchen, wenn 'sleep' aufgerufen wird und zwar so lange (in Sekunden) wie es in den Klammern hinter 'sleep' angegeben wird. Was jetzt neu ist und auch den entscheidenden Unterschied ausmacht, ist das 'while True:'. Das sorgt dafür, dass der Teil, der nach 'while True' kommt UND NUR der Teil der um 4 Leerzeichen eingerückt ist sich ständig wiederholt. Wenn das Programm so wie dieses Beispiel aufgebaut ist, dann kannst du es durch 'Strg' und 'c' beenden.

    Teste beide Beispiele einfach mal aus.

    Wenn du dich wunderst woher du die Befehle wie 'on', 'off' oder was da in die Klammern muss herbekommen sollst, jede Python-Bibliothek ist dokumentiert. Der Link wurde hier ja schon gepostet. Falls du gerne mehr Python lernen willst, dann empfiehlt es sich, als erstes das offizielle Python Tutorial durch zuarbeiten.

    Du wirst schnell merken, dass die Programme nicht so wie hier gezeigt aufgebaut werden, da meistens etwas mehr in einem Programm steht, als eine Led auszuschalten. Im weiteren solltest du dir dann auch gleich angewöhnen sprechende Namen zu verwenden und keine Abkürzungen. Variablen und Funktionen (die du noch kennen lernen wirst) schreibt man dann auch klein_mit_unterstrich und Konstanten SCHREIBT_MAN_GANZ_GROß.


    Viel Spass mit dem Pi und mit Python.


    Grüße

    Dennis

    🎧 Strahlend soll die Zukunft sein, gut wir werden seh'n, ob wir wie ein Strahlemann lächelnd untergeh'n. 🎧

    • Official Post

    Noch ein Hinweis, weil ich es gerade bei Dennis89 sehe: gpiozero verwendet per default die BCM(GPIO)-Nummern und nicht die von Dir eingestellen Pinnummer (Board). Das lässt sich zwar anpassen (steht gleich am Anfang in der Doku), ist aber verwirrend, da die Beispiele sich alle auf BCM beziehen.


    Eine hilfreiche Seite zu den Nummern findest Du hier: https://de.pinout.xyz/#