-
        

Ergebnis 1 bis 6 von 6

Thema: Anfängerfragen ...

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    01.07.2008
    Ort
    NRW
    Alter
    45
    Beiträge
    169

    Anfängerfragen ...

    Anzeige

    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

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Alter
    48
    Beiträge
    2.731
    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.

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    705
    ...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.

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    01.07.2008
    Ort
    NRW
    Alter
    45
    Beiträge
    169
    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

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Alter
    48
    Beiträge
    2.731
    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.

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    01.07.2008
    Ort
    NRW
    Alter
    45
    Beiträge
    169
    Hallo,

    danke für den Tip.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •