-
-
Erfahrener Benutzer
Fleißiges Mitglied
Anfängerfragen ...
Hi Leute,
ich habe in Bascom eine einfache IF Anweisung geschrieben ...
Config PortA = Input
Config PortB = Output
PortA = 1 'Pullup einschalten
Do
If Taster1 = 0 then PortB = &11000000
If Taster2 = 0 then PortB = &11111001
if Taster3 = 0 then PortB = &10100100
else PortB = &00000000
End If
Loop
Meine Frage lautet nun:
Ist es möglich auf diese Art ein Bitmuster an den PortB zu übertragen ?
Ich habe leider noch keine Controller hier zum ausprobieren, versuche mich aber schon an den ersten "Gehversuchen"
Wenn ich in Bascom den Syntaxcheck ausführe bekomme ich folgenden Fehler:
Source variable does not match the Target variable (bezogen auf die PortB =&xxxxxxxx Anweisung in der If Schleife)
Was ist denn da falsch ?
Danke schonmal.
LG
Blue
-
Erfahrener Benutzer
Robotik Einstein
Hallo,
nach dem & kommt wohl noch ein B.
Dann, wo kommen die Taster-Variablen her ?
Die letzte If-Abfrage wird immer greifen, wenn der Taster3 nicht gedrückt ist, auch wenn vorher einer der andern gedrückt sein sollte.
Zum Thema Taster solltes Du Dir noch den Befehl Debounce ansehen.
-
Erfahrener Benutzer
Roboter Experte
...und außerdem muss jede "If"-Anweisung entweder mit einem "else" kombiniert sein (wie im letzten Fall), oder aber mit einem "end if" - damit das Programm weiss, was es zu tun hat, wenn die Bedingung nicht zutrifft.
Also z.B.
If PinA.1 = 1 then X = 100 else X = 50
oder
If PinA.1 = 1 then PortB.1 = 0
End if
bzw.
If PinA.1 = 1 then
PortB.1 = 0
X = 100
Stop Timer 0
End if
Wenn Du also drei "If"-Befehle ineinander verschachtelst, muss auch an drei Stellen "End If" stehen.
-
Erfahrener Benutzer
Fleißiges Mitglied
Vielen Dank, ich glaube das B war schon das Problem
Die Taster Variablen kommen vom PortA.1, A.2 und A.3
Der PortB soll immer "0" sein wenn keine Taste gedrückt ist, bzw. der Wert an den Pins A.x low ist. Die variable Taster habe ich jetzt nur frei gewählt.
Ich habe jetzt jede If Anweisung so geschrieben:
Do
If Taster1 = 0 then PortB = &B11000000
Else PortB=&B00000000
End if
If Taster2 = 0 then PortB = &B11111001
Else PortB=&B00000000
End if
etc.
Loop
Anders bekam ich immer Fehlermeldungen beim Syntax-Check.
Edit: @Sauerbruch: Genau, ich hab es einfach mal probiert und jetzt klappt es
-
Erfahrener Benutzer
Robotik Einstein
Mit dieser If-Abfragen kombination kommst du aber auch nicht weit, geh mal das durch, für den Fall das Taster1 gedrückt ist !
Spätestens bei der Abfrage zum Taster2 ist alles wieder 0000, wenn dieser nicht auch gedrückt ist.
In diesem Fall musst Du die Werte "verodern", oder alles mit elseif zusammenhängen, damit die nächste if-Abfrage die letzte nicht plattmacht.
-
Erfahrener Benutzer
Fleißiges Mitglied
Hallo,
danke für den Tip.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen