Taster mit Touch

OP #4525969
Lesenswert?

Hallo
Für einen Tasterbedienung verwende ich ein Touch mit 7 Keys.
Dabei nutze ich einen Key zum einschalten und einen anderen zum 
ausschalten.
1
if (d==16)    // Key 4 Taster 5 ein LED 3
2
  {  
3
    dt=4;  
4
        db=0xcc;
5
        dd=0xbf;  
6
      }
7
    
8
if (d==32)    // Key 5 Taster 6 aus LED 3
9
      {  
10
        dt=5;    // Wert für Display
11
        db=0x33;  // Bus ADR 2
12
        dd=0xff;  // Bus ADR 3
13
      }
Das geht ohne Probleme
Verwende ich allerdings einen Key zum ein und ausschalten, geht es 
nicht.
1
if ((d==64)&&(dh==0))    // Key 6
2
      {      
3
      dd=0x7f;    // Angabe LED Muster über Bus für ein    
4
      dh=1;
5
      } 
6
      
7
    if ((d==64)&&(dh==1))
8
      {    
9
      dd=0xff;    // Angabe LED Muster über Bus für aus
10
      dh=0;
11
      }
Das geht leider nicht. Schalte ich den Key ein, wird er sofort wieder 
ausgeschaltet. Da ich einen Touch-Key verwende ist eine Entprellung nach 
Peter nicht möglich.
Wie kann ich das machen?
(d==64 ist Tastereingang - Key)
achim
OP #4526069
Lesenswert?

Hallo Peter
ich verwende den AT42QT1070. Dieser IC lässt nur (gleichzeitig) einen 
Key zu. Da es ein rein elektronischer Kontakt ist, der über den I2C Bus 
übertragen wird, brauche/kann ich deine Tasterentprellung einsetzen?
Bei den "normalen" Tstern verwende ich es fast immer. Wie ich es in 
dieser Technik einsetzen soll ist mir vollkommen unklar. Da wird wohl 
deine Hilfe gebraucht. Sind mir ein paar Baustellen zu viel auf einmal.
Ansonsten einige Daten:
- Atmega 1284p mit 16 MHz
- Programm in C
- AT42QT1070 mit 7 Keys (Tasten)
- übertragung im I2C Bus mit 100 kHz
- Anzeige auf Display im Bus
- Anzeige auf LED ob Tasten schalten
Die SM werde ich auf jeden Fall annehmen und sehen was geht. Bleibt 
vielleicht die Frage nach Auwand.
achim
#4526088
Lesenswert?

Am Prellen liegt es ja evtl. gar nicht.

Kannst ja mal diesen Hack hier probieren:
1
if (d==64)
2
{
3
  if (touch_ready)
4
  {
5
    if (dh==0)    // Key 6
6
    {      
7
      dd=0x7f;    // Angabe LED Muster über Bus für ein    
8
      dh=1;
9
    }
10
    else 
11
    {    
12
      dd=0xff;    // Angabe LED Muster über Bus für aus
13
      dh=0;
14
    }
15
    touch_ready = 0; // wait for key release
16
  }
17
}
18
else
19
{
20
  touch_ready = 1; // key was released
21
}
OP #4526105
Lesenswert?

in mein Programm geladen, ein paar Warnungen bekommen, soweit beseitigt 
und es geht sofort. Ohne delay drin. super
Funktion:
Kann mit einem Key (6) einschalten und mit der selben Taste wieder aus.
Damit gibt es jetz viele Möglichkeiten mit dem Touch Tasten und 
Bedineungen zu schreiben und alle Möglichkeoten für Multitasking bleiben 
drin.
Danke dir viel mal. Hast was gut bei mir.
Werde mir die Funktion vornehmen
achim

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren