-         

Ergebnis 1 bis 5 von 5

Thema: Mehrere Fnktion mit nur einer Taste

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    03.08.2009
    Ort
    SFB
    Beiträge
    60

    Mehrere Fnktion mit nur einer Taste

    Anzeige

    Hallo

    Wollte mal wissen wie ich das Machen kann das ich zB eine 16Kanal lauflicht haben.
    und ih eine Taste habe. Wenn ich Sie betätige soll das Lauflicht laufen. Noch mal drücke sollen aller Leuchten und noch mal Drücke sollen Sie schnell blitzen.

    Wie bekomme ich das hin? Mit dem Tasten wechsel?

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    26.05.2007
    Beiträge
    594
    Das geht so:
    Wenn deine Taste erkannt wird, dann zählt eine Variable hoch, die du dann wieder auswertest. (Select Case...)
    Je nach Wert kommt dann hat ein anderes GoSub.

    Per If Then kannst du beim Hochzählen einen Maximalwert festlegen (max. Programmnummer) - bei einem Überlauf geht er dann wieder auf das 1. Programm.

    Wichtig ist, dass du die Taste entprellst, weil du sonst 100x die Sekunde schaltest.

    Am saubersten wird es mit einem Interrupt für die Taste, dann muss er sie nur abfragen, falls sie auch wirklich gedrückt wird.

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    03.08.2009
    Ort
    SFB
    Beiträge
    60
    will das per Interrupt machen. Wie soll das ungefähr aussehen?

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    13.02.2009
    Ort
    Basel
    Alter
    23
    Beiträge
    52
    Code:
    On Int0 int0_isr
    Config Int0 = Falling    'Interrupt bei fallender Flanke
    Enable Int0              'INT0 einschalten
    Enable Interrupts        'Interrupts global einschalten.
    
    
    
    int0_isr:                'Int0-Prozedur
        Disable Int0
        Waitms 100           'entprellen
    
        'Hier kommt deine Select-Case Abfrage, so wie es stefan_Z beschrieben hat
    
        Enable Int0
    Return
    Dieser Code springt bei fallender Flanke an INT0 zu "int0_isr".

    Das ist aber alles recht gut in der Bascom-Hilfe beschrieben.

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    26.05.2007
    Beiträge
    594
    Also da kann man verschiedene INTs nehmen...
    Wenns nur eine oder zwei Tasten sind und du eh die INT frei hast, nimm die, ist am einfachsten. Ich nutze immer die internen Pullups, dann musst du allerdings zwangsläufig per Schalter auf GND schalten.
    CONFIG INTx ist das Schlagwort in der Anleitung.

    Oder du nutzt PinChange-Interrupts - haben aber nicht alle AVRs.
    Da legst du mit einer Bitmaske fest, welche Pins eines Ports auf was reagieren. Damit lassen sich dann z.B. Matrix-Tastaturen realisieren.
    Suchwort wäre PCINT

    Wenn der Pin selber keinen INT hat, dann kannst du immer noch einen Timer-Interrupt verwenden, der zyklisch den entsprechenden Eingang abfragt.

    Das Entprellen musst du bei Interrupts manuell machen, also z.B. mit einer Zählvariable und einer IF/THEN Abfrage.

Berechtigungen

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