PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Gestenerkennung



Che Guevara
25.04.2010, 13:18
Hallo Leute,

habs jetzt geschafft, mir 4 leds als "sensor" aufzubauen und zu nutzen.
Dazu gibts auch nen Bascom thread ;)
https://www.roboternetz.de/phpBB2/viewtopic.php?t=53590

Jetzt möchte ich einen Schritt weitergehen und die Daten an den PC senden (kein Problem) und dort dann erkennen, ob ich eine bestimmte Geste ausgeführt habe.
Am Anfang möchte ich nur folgendes erkennen:
Wenn ich mit dem Finger von lednr. 2 auf lednr.3 "schweife", soll erkannt werden, dass ich von links nach rechts über die Leds gefahren (mit dem Finger xD) bin.

Allerdings weiß ich nicht so recht, wie ich ansetzen soll... Programmieren tue ich in XProfan (Basic).
Die Werte kommen folgendermaßen (zuerst nur lednr. 2 und lednr. 3) als String (ohne Anführungszeichen):


"###:xxx:yyy"

Die ### Kennzeichnen den Beginn, die Doppelpunkte sind Trennzeichen. xxx ist der Wert von lednr. 2 und yyy von lednr. 3 (also Werte liegen so zwischen 50 (050) und 400. Eine Berührung drückt den Wert auf ca. unter 200. Je kleiner der Wert, desto genauer / direkter ist die Berührung.
Die Werte stellen die Entladedauer in ms dar (mehr dazu: siehe Bascom-Thread).
Hatte mir gedacht, ich benutze die aktuelle Systemzeit (also millisekunden), um zu vermerken, welcher Wert als erster da war. Somit könnte man die Richtungserkennung machen.

Ich hoffe, irgendjemand hat sich schonmal damit befasst und kann mir helfen. Habe leider im I-net nichts wirklich brauchbares gefunden.
Möchte hier jetzt auch keinen fertigen Code (wird eh nicht viele geben, die in XProfan proggen), sondern nur eine Beschreibung der Vorgehensweise.

Danke
Gruß
Chris

nflatjor555
25.04.2010, 16:24
Du kannst ja jeweils die letzten "Spitzenwerte" (niedrigster Wert) fuer jeden Sensor mit Wert und Timestamp speichern.
Jeder Mal wenn ein Sensorwert von "Spitze" abfaellt kannst du eine Auswertung machen.

Beispiel:
1.
Lednr. 2 faellt gerade vom Spitzenwert runter -> Vergleich ausgeloest.
Kein signifikanten Spitzenwert bei Lednr. 3 registriert in den letzten 3s -> keine Aktion

2.
Es vergehen etwa 500ms, und Lednr. 3 faellt gerade vom Spitzenwert runter -> Vergleich ausgeloest.
Lednr. 2 hatte vor 500ms einen Spitzenwert -> Bewegung von Links nach Rechts detektiert.

Hoffe mein Vorschlag hilft dir weiter!