-         

+ Antworten
Ergebnis 1 bis 6 von 6

Thema: Anfänger probleme mit taste

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    26.12.2004
    Beiträge
    12

    Anfänger probleme mit taste

    Anzeige

    habe eine kleine schaltung geschrieben (Ampelschaltung)
    wollte jetzt eine taste nehmen wen die gedrückt wird soll das programm schneller zum anfang gehen da angekommen nach kurzen warten wieder normal weitergehen als tastenport wollte ich wie unten zu sehen Pind.4 nehmen

    Code
    $regfile = "2313def.dat"
    $crystal = 3686400

    Config Pind.4 = Input
    Config Pinb.0 = Output
    Config Pinb.1 = Output
    Config Pinb.2 = Output

    Do
    ab hier sollte das prog normal weitermachen
    Set Portb.2
    Wait 10
    Set Portb.1
    Wait 2
    Reset Portb.1
    Reset Portb.2
    Set Portb.0
    ab hier sollte es bis zum anfang schneller gehen wenn man die taste drückt
    Wait 10
    Set Portb.1
    Reset Portb.0
    Set Portb.1
    Wait 4
    Reset Portb.1
    Loop
    End


    hoffe jemand kann mir helfen dabei

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    26.12.2004
    Beiträge
    12
    hatte vergessen
    Portb.0 = Grün
    Portb.1 = Gelb
    Portb.2 = Rot

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.06.2004
    Ort
    Aachen
    Beiträge
    2.674
    Also wenn ich dich richtig vertehe, dann sollten die einzlnen Pausen zwischen

    ab hier sollte es bis zum anfang schneller gehen wenn man die taste drückt
    und

    Loop
    Eine Frage hätte ich dann noch, soll die Zeit verkürzt werden, wenn der Taster an der entsprechenden Stelle gedrückt ist, oder auch dann, wenn er z.B. in der 10 sekündigen Pause gedrückt wird?

    im 1. Fall ginge das recht einfach.

    im 2. Fall müsste man vermutlich ganz anders Programmieren.

    Wichtig ist auch, inwieweit die Zeit verkürzt werden soll, halbiert, und was ist dann, wenn die Hälfte der Pause schon um ist?

    MFG Moritz

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    26.12.2004
    Beiträge
    12
    er soll schneller auf rot schalte so wie du meintest im 1. fall
    habe aber das problem das ich generel nicht weiß wie man tasten im programmablauf programmiert

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.06.2004
    Ort
    Aachen
    Beiträge
    2.674
    Also da gibt es 2 Möglichkeiten, die erste ist über eine if-Anweisung, was den NAchteil hat, dass du, wenn du keine schnell durchlaufende Schleife hast, nur an einer bestimmten Stelle prüfst, ob die Taste gedrückt ist. Die 2. Möglichkeit wäre ein Interrupt, der ja bekanntermaßen sofort anspringt, allerdings ist es dann etwas schwerer von der Interruptroutine Bezug auf das laufende Programm zu nehmen.

    Den Taster würde ich im 1. Fall (if-Anweisung) gegen Masse un an einen beliebigen Pin schließen. AUßerdem muss an dem Pin, nehmen wir mal PinD.4 der Pullup aktiviert werden, denn wenn der Taster nicht gedrückt ist, liegt ja kein Signal an und das ist bei Eingängen garnicht gut.

    config Pind.4=input
    Portd.4=1 'Beim Setzen im Port!


    Nun ist der Taster quasi schon konfiguriert.
    Jetzt die If-Anweisung:

    If Pind.4=0 then 'Wenn Taster gedrückt, dann
    'Tue dies
    else
    'Tue das
    End if


    Man könnte jetzt in der If-Anweisung z.B. die Pausen verkürzen, wenn man diese vorher zu Variablen gemacht hätte. Der NAchteil ist halt, dass nur vor der 10 Sek. langen Pause geprüft wird ob ein Taster gedrückt ist, wird er zu spät, also während der Pause gedrükt, dann reagiert das Programm nciht daruaf.

    Hier müsste man dann mit Interrupts arbeiten, allerdings dann auch die Pausen z.B. durch SChleifen ersetzen, die Besser verändert werden können.

    MFG Moritz

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    26.12.2004
    Beiträge
    12
    das programm läuft nur ca.30 sek da ist das nicht so schlimm wenn es nicht sofort reagiert hab ja zeit werde es mal so versuchen und wenn es funktioniert oder nicht werde ich dan posten
    MFG Mario

+ Antworten

Berechtigungen

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