Anfängerfehler beim Coden

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Schlangenmensch
User
Beiträge: 73
Registriert: Freitag 18. Februar 2022, 10:13

Hallo,
ich versuche gerade in die Welt der Python Programmierung einzusteigen und habe mir dazu ein paar Spielereien wie den Raspberry PI Pico und das Grove Seeed Set zugelegt.

Leider scheitere ich schon bei den einfachsten Programmen wegen folgendem:

Schreibe ich mein Programm so:

import machine
import utime

BUTTON = machine.Pin(18,machine.Pin.IN)
LED = machine.Pin(20,machine.Pin.OUT)

val = 0
print(val)

while True:
if BUTTON.value() == 1:
val = val+1
utime.sleep(1)
elif val == 2:
val = 0
utime.sleep(1)

LED.value(val)

funktioniert alles einwandfrei. Wenn ich aber aus Versehen die Zeile (LED.value(val)) um eine Position nach vorne oder hinten verschiebe, funktioniert das ganze Programm nicht mehr und es wird folgender Fehler ausgegeben:

Traceback (most recent call last):
File "<stdin>", line 18
IndentationError: unindent doesn't match any outer indent level

Wo ist hier das Problem?

Ich hoffe Ihr könnt mir helfen und ich blamiere mich mit dieser Frage nicht all zu sehr. :oops:
Benutzeravatar
pillmuncher
User
Beiträge: 1530
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

Das Problem ist, dass du anscheinend noch kein Python-Tutorial durchgearbeitet hast. Die Einrückung ist wichtig in Python. Die muss stimmen. Per Konvention verwendet man vier Leerzeichen. Nicht drei. Nicht fünf. Und niemals Tabs.
In specifications, Murphy's Law supersedes Ohm's.
Sirius3
User
Beiträge: 18279
Registriert: Sonntag 21. Oktober 2012, 17:20

Der Code, den Du gepostet hast, hat keinen Einrückungsfehler.

Code: Alles auswählen

import machine
import utime

BUTTON = machine.Pin(18,machine.Pin.IN)
LED = machine.Pin(20,machine.Pin.OUT)

val = 0
while True:
    if BUTTON.value() == 1:
        val = val+1
        utime.sleep(1)
    elif val == 2:
        val = 0
        utime.sleep(1)
        
    LED.value(val)
Wenn sich die LED erst mit einer Verzögerung von 1er Sekunde ändert, lädt das gerade zu ein, öfter auf den Button zu drücken.
Eigentlich ändert sich der LED-Wert nur, wenn der Button gedrückt wird, das kann man also dort unterbringen.

Code: Alles auswählen

import machine
import utime

BUTTON = machine.Pin(18, machine.Pin.IN)
LED = machine.Pin(20, machine.Pin.OUT)

val = 0
while True:
    if BUTTON.value() == 1:
        val += 1
        if val >= 2:
            val = 0
        LED.value(val > 0)
        utime.sleep(1)
    utime.sleep(0.01)
Schlangenmensch
User
Beiträge: 73
Registriert: Freitag 18. Februar 2022, 10:13

Vielen Dank für Eure Hilfe und den Hinweis wie man das Programm noch schreiben kann.

Viele Grüße
Ernesto
Antworten