Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Demoprogramm: Tasten abfragen Kategorie: Open-Micro/Open-Mini/Open-Midi/Open-Macro/Open-Maxi (von Dietmar, Homepage - 15.11.2018 19:29)
Dietmar nutzt:  Open-Micro, Open-Mini, Open-Midi, Open-Macro, Open-Maxi, Open-Mini M-Unit, Open-Mini Station
' ============================================================================
' Tasten des P/E-Boards abfragen und daraufhin Signale erzeugen
' In OCBASIC 1.12a_e1 f├╝r Open-Macro von Dietmar Harlos am 15. November 2018
' ============================================================================

' Die Tasten werden auf dem P/E-Board nach 0 Volt (GND) geschaltet. Sie sind
' also invertiert.

' Stichwort "Entprellung": Die Tasten prellen, aber wenn die Tasten nicht zu
' h├Ąufig abgefragt werden, wirkt das wie eine Entprellung. Sie k├Ânnen zum
' Beispiel 10 mal pro Sekunde abgefragt werden. Also einmal alle 100 ms.

' --- Definitionen f├╝r das System --------------------------------------------

INCLUDE "omac.def"         'Definitionen f├╝r die Open-Macro

' --- Definitionen des Anwenders ---------------------------------------------

DEFINE taste1 PORT[4]      'Taste auf dem P/E-Board
DEFINE taste2 PORT[5]      'Taste auf dem P/E-Board

DIM bitarray  BYTE         'Bitvariablen liegen in den ersten 32 Bytes des
                           '  USER-RAMs, deshalb am Anfang definieren

DIM taste1alt BIT[1] OF bitarray     'Alte Zust├Ąnde der Tasten
DIM taste2alt BIT[2] OF bitarray
DIM signal1   BIT[3] OF bitarray     'Signale
DIM signal2   BIT[4] OF bitarray

' --- Das Hauptprogramm ------------------------------------------------------

init                       'Initialisierung

WHILE TRUE
  PRINT "Ich warte auf Tastendr├╝cke an PORT[4] und PORT[5]."

  handlekeys               'Tastenabfrage behandeln

  IF signal1 THEN
    PRINT "Taste 1 wurde gedr├╝ckt. Signal 1 ist HIGH."
    signal1=OFF
  END IF

  IF signal2 THEN
    PRINT "Taste 2 wurde gedr├╝ckt. Signal 2 ist HIGH."
    signal2=OFF
  END IF

  PAUSE 20
WEND

End2Host=ON                'Nach Programmende in den Host-Modus
END                        'Programmende, Neustart mit der Enter-Taste

' --- Subroutinen ------------------------------------------------------------

' Verschiedene Initialisierungen

PROCEDURE init
  taste1alt=taste1
  taste2alt=taste2
  signal1=OFF
  signal2=OFF
  RETURN
END PROCEDURE


' Tasten abfragen

' Stichwort "Entprellung": Die Tasten prellen, aber wenn die Tasten nicht zu
' h├Ąufig abgefragt werden, wirkt das wie eine Entprellung. Sie k├Ânnen zum
' Beispiel 10 mal pro Sekunde abgefragt werden. Also einmal alle 100 ms.

' F├╝r besonders hohe Anspr├╝che k├Ânnte man die Zust├Ąnde der Tasten vor dem
' Abfragen buffern. Dann k├Ânnen sich die Zust├Ąnde w├Ąhrend des Abfragens nicht
' ver├Ąndern.

PROCEDURE handlekeys
  IF taste1<>taste1alt THEN          'Zustand ver├Ąndert?
    taste1alt=taste1
    IF NOT(taste1) THEN              'gedr├╝ckt
      signal1=ON
    END IF
  END IF

  IF taste2<>taste2alt THEN          'Zustand ver├Ąndert?
    taste2alt=taste2
    IF NOT(taste2) THEN              'gedr├╝ckt
      signal2=ON
    END IF
  END IF

  RETURN
END PROCEDURE

' --- Programmende ----------------------------------------------------------


Passender Link: Bedienungsanleitung zur Open-Macro und Open-Maxi

Meine Homepage: http://ccintern.dharlos.de

 Antwort schreiben

Bisherige Antworten:

Entprellung? (von Joachim - 16.11.2018 19:40)
    Re: Entprellung? (von Dietmar - 16.11.2018 20:20)
        Re: Entprellung? (von Joachim - 16.11.2018 20:30)