Seite 1 von 1

IF funktion

Verfasst: Montag 20. Oktober 2014, 16:55
von Andy1986
Hallo Leute
Bin gerade dabei ein Programm zu schreiben wo ich 1LED mit ansteuern kann .
Wollte das ganze mit einer if Funktion gestalten sodass ich nur AN oder AUS schreiben muss um die LED zu steuern. Das Problem ist ich muss wahrscheinlich woher was
definieren damit das Programm weiss was es tun soll, was ich aber nicht so ganz verstehe wie ich das am besten anstelle.

Hier erstmal mein Programm:

Code: Alles auswählen

import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)


print("Bitte geben Sie einen Befehl ein")

x = input()


if x == AN:
        GPIO.setup(8,GPIO.OUT)

if x == AUS:
        GPIO.setup(8,GPIO.IN)
Wenn ich das Programm nun starte sagt er mir zwar das ich einen Befehl eingeben soll,
aber danach kommt folgende Fehlermeldung :

Code: Alles auswählen

Bitte geben Sie einen Befehl ein
AN
Traceback (most recent call last):
  File "fototest.py", line 12, in <module>
    if x == AN:
NameError: name 'AN' is not defined
Könnte mir jemand erklären wie ich das hinbekomme das ich mit den Befehlen AN und AUS meine LED steuern kann .

Schonmal vielen Dank im vorraus :)

Re: IF funktion

Verfasst: Montag 20. Oktober 2014, 17:11
von BlackJack
@Andy1986: Wenn Du etwas mit einer Zeichenkette vergleichen willst dann musst Du eine Zeichenkette dort hinschreiben und nicht einen Namen der nicht definiert ist. Literale Zeichenketten werden in ' eingefasst. Oder ". Oder… es gibt noch mehr möglichkeiten die in der Dokumentation/im Tutorial erklärt werden.

Warum schaltest Du die Warnungen von `GPIO` aus? Die weisen eventuell auf Probleme hin die man lösen und nicht ignorieren sollte.

`GPIO.setup()` legt fest ob ein Pin als Ein- oder Ausgang fungiert. Eingang macht bei einer LED nicht wirklich Sinn.

Re: IF funktion

Verfasst: Montag 20. Oktober 2014, 17:51
von Üpsilon
Kleine Tipps:

Code: Alles auswählen

print("Bitte geben Sie einen Befehl ein")
x = input()
Das kann man abkürzen mit

Code: Alles auswählen

x = input("Bitte geben Sie einen Befehl ein.)
x ist allerdings ein außerordentlich schlechter Variablenname. Nenn die Variable doch befehl, denn dann weiß man sofort, was die Variable macht.

Die vielen Leerzeilen in deinem Code sind etwas unnötig, denn sie machen das Programm nicht lesbarer.

Es ist bei Python-Programmen üblich, 4 Leerzeichen pro Einrückungsstufe zu machen.

Da wir schon bei Leerzeichen sind: Mach doch auch welche hinter die Kommata.

if ist übrigens keine Funktion, sondern ein Schlüsselwort.

Und wenn du das Tutorial durchgearbeitet hast, solltest du dir auch mal die Stiltipps für Python-Programe ansehen. Wenn man die beachtet, sind die Quelltexte viel lesbarer und auch sonst schöner.

Re: IF funktion

Verfasst: Dienstag 21. Oktober 2014, 19:37
von Andy1986
Hallo Leute

Dankeschön für eure schneller Antwort, hatte leider die letzten Tage viel um die Ohren habe das jetzt mit den "" ausprobiert und es funktioniert jetzt so wie ich es mir vorgestellt habe :)
Ich verstehe aber nicht was du damit meinst das ich die Fehlermeldung der GPIO`s ausschalte wie meinst du das genau Black Jack ?

Re: IF funktion

Verfasst: Dienstag 21. Oktober 2014, 19:54
von BlackJack
@Andy1986: Was denkst Du denn was ``GPIO.setwarnings(False)`` macht?

Re: IF funktion

Verfasst: Dienstag 21. Oktober 2014, 20:13
von Andy1986
Um ehrlich zu sein weiß ich das gar nicht hatte das so aus einem Video übernommen