Forum: Mikrocontroller und Digitale Elektronik Taster mit Touch


von Achim S. (achims)


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

von Joe F. (easylife)


Lesenswert?

Benutze eine state machine.
Nachdem dh von 0 auf 1 gesetzt wurde, oder von 1 auf 0, muss ein 
weiterer state darauf warten, dass der Sensor losgelassen wird (d != 
64).
Erst dann darf wieder eine Änderung von dh zugelassen werden.

von Peter D. (peda)


Lesenswert?

Achim S. schrieb:
> Da ich einen Touch-Key verwende ist eine Entprellung nach
> Peter nicht möglich.

Sagt wer?
Die Entprellung ist transparent. Du kannst sie drin lassen oder 
rausnehmen und nur die Flankenerkennung benutzen.

von Achim S. (achims)


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

von Joe F. (easylife)


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
}

von Achim S. (achims)


Lesenswert?

mach ich sofort

von Joe F. (easylife)


Lesenswert?

Besser wäre auch
1
if (d==64)

durch
1
if (d & 0x40)

zu ersetzen, um nur das entscheidende Bit zu beobachten.

von Achim S. (achims)


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

von Achim S. (achims)


Lesenswert?

Vielleicht ist das ganze auch was für Peter. Touch IC mit 7 Keys und 
Bus, Funktion frei definierbar.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.