Maus mitthilfe Bewegungssensor steuern (Java)

V

V.java.new

Mitglied
Hallo :)

Ich hoffe ihr könnt mir weiter helfen! Bin gerade dabei eine Maus am Pc mithilfe eines Bewegungssensors steuern zu können.

Der Sensor befindet sich in einem Armband, welches mit einem ESP32 verbunden ist. Die Maus soll durch Handbewegungen auf einer X & Y Achse gesteuert werden. Mittlerweile werden die Sensor Daten auf dem PC angezeigt. Also wenn sich der Sensor bewegt, dann ändern sich die Daten.

Dies ist der Code für die Daten:

public SensorData(JsonObject data) {

//Bewegung des armbandes
ax = data.get("ax").asDouble()/ASENSETIFITY;
ay = data.get("ay").asDouble()/ASENSETIFITY;
az = data.get("az").asDouble()/ASENSETIFITY;

//temperatur
temp = data.get("t").asDouble()/340.00+36.53;

//neigung zur erdachse gyroscope
gx = data.get("gx").asDouble()/GSENSETIFITY;
gy = data.get("gy").asDouble()/GSENSETIFITY;
gz = data.get("gz").asDouble()/GSENSETIFITY;

}

Ergebnisse beispiel:
ax: -0.06005859375, ay: 0.57861328125, az: 0.769287109375,
temp: 21.61235294117647,
gx: -1.8015267175572518, gy: -0.5343511450381679, gz: -0.061068702290076333

Problem?
Wie kann ich nun mit diesen Daten die Maus bewegen? Ich verstehe, wie es funktionieren soll, kann dies aber nicht in java umsetzen.
Also der Pc muss ja die X und Y Position wissen, prüft die neue Position und ändert dann die x und y Koordinate ab.

Hoffe ihr könnt mir helfen! Mittlerweile verzweifle ich nämlich.

Liebe Grüße :)
 
V

V.java.new

Mitglied
Mittlerweile bekomme ich die Position der Maus angezeigt. Jetzt komme ich aber nicht weiter. Ich möchte ja die Koordinaten durch die Bewegungsposition des Sensors abändern, habe aber keine Idee, wie ich dies anstellen soll.

public static void main (String[] args){

for(int i = 0; i<= 1000000; i++) {

PointerInfo info = MouseInfo.getPointerInfo();

Point location = info.getLocation();

System.out.println("x="+ location.x + " y=" + location.y);

}
 
kneitzel

kneitzel

Top Contributor
Also ich habe das jetzt so verstanden:
a) Du bekommst irgendwelche Werte von einem Sensor. Diese liegen Dir als ax, ay, az Werte vor.
b) Diese kannst Du jetzt irgendwie interpretieren - Wie musst Du Dir überlegen, so dass es sinn macht.
Nun kannst Du aus der Interpretation der Daten sagen: Maus soll nach oben / unten / links / rechts. Das kannst Du nun umsetzen, indem Du
- Dir die aktuelle Mausposition (MouseInfo) holst.
- daraus zusammen mit Daten aus b) und ggf. unter Berücksichtigung des Bildschirms kannst Du eine neue Position für die Maus berechnen.
- Diese neue Position dann setzt (Robot).
 
V

V.java.new

Mitglied
Also ich habe das jetzt so verstanden:
a) Du bekommst irgendwelche Werte von einem Sensor. Diese liegen Dir als ax, ay, az Werte vor.
b) Diese kannst Du jetzt irgendwie interpretieren - Wie musst Du Dir überlegen, so dass es sinn macht.
Nun kannst Du aus der Interpretation der Daten sagen: Maus soll nach oben / unten / links / rechts. Das kannst Du nun umsetzen, indem Du
- Dir die aktuelle Mausposition (MouseInfo) holst.
- daraus zusammen mit Daten aus b) und ggf. unter Berücksichtigung des Bildschirms kannst Du eine neue Position für die Maus berechnen.
- Diese neue Position dann setzt (Robot).

Danke für die Antwort!

Genau ich bekomme die Werte übermittelt. Dann schaue ich mal, wie es Sinn macht.

Macht es Sinn, vorab die Bildschirmgröße zu begrenzen? Oder brauche ich das nicht?
 
kneitzel

kneitzel

Top Contributor
Das würde ich einfach austesten. Was passiert, wenn Du die Maus aus dem sichtbaren Bereich heraus führst?

Wenn dann die Maus nur bis an den Rand gesetzt wird, dann musst Du da nichts machen. Wenn dem nicht so ist, dann macht eine Begrenzung Sinn.
 
V

V.java.new

Mitglied
Das würde ich einfach austesten. Was passiert, wenn Du die Maus aus dem sichtbaren Bereich heraus führst?

Wenn dann die Maus nur bis an den Rand gesetzt wird, dann musst Du da nichts machen. Wenn dem nicht so ist, dann macht eine Begrenzung Sinn.

Hab es ausgetestet und es geht nur bis zum Rand. Dann brauche ich das ja nicht, wenn es sowieso automatisch gemacht wird :)

Dann probiere ich mal, alles umzusetzen. Danke!
 
V

V.java.new

Mitglied
Das würde ich einfach austesten. Was passiert, wenn Du die Maus aus dem sichtbaren Bereich heraus führst?

Wenn dann die Maus nur bis an den Rand gesetzt wird, dann musst Du da nichts machen. Wenn dem nicht so ist, dann macht eine Begrenzung Sinn.

Ich benötige leider immer noch Hilfe. Habe jetzt probiert was brauchbares zu schreiben, allerdings habe ich keinen Plan wie. Muss ich eine Schleife schreiben oder wie kann ich die Werte abändern? Und benötige ich da nun die Werte ax und ay oder gx und gy?

Zwischenzzeitlich habe ich folgendes gefunden:


Könnte man dies so umsetzen? Also mit sensorevent.Values?
 
mihe7

mihe7

Top Contributor
Hat jemand noch eine Idee, wie ich das Problem lösen kann?
Welches Problem? Man müsste erstmal wissen, was die Werte bedeuten.

ax: -0.06005859375, ay: 0.57861328125, az: 0.769287109375,
Was sollen das für Werte sein? Beschleunigung in m/s², wobei die Erdbeschleunigung bereits rausgerechnet wurde?

gx: -1.8015267175572518, gy: -0.5343511450381679, gz: -0.061068702290076333
Was soll das hier liefern? Winkel im Bogenmaß?
 

Ähnliche Java Themen

Anzeige

Neue Themen


Oben