Gyro abfrage in Schleife

L

lonewolf68686

Neues Mitglied
0
Hi,
da ich grade total am Verzweifeln bin, stelle ich nun hier meine Frage:

Ich versuche mich grade am schreiben meiner ersten app und habe bisher nur erfahrungen in Vb.net sammeln können. Nun ist die app, denke ich soweit fertig, ausser dass ich es nicht hinbekomme, die werte des gyros aus zu lesen. Bei Bewegung ausserhalb der schleife kein Problem.
Was muss ich in die Schleife schreiben, damit bei jedem durchlauf die Werte erneut abgefragt werden?
 
ist es ein Spiel?dann ab in die Spiele abteilung damit....ansonsten gibst du sehr wenige infos preis
 
oh sry, da fehlt irgendwie etwas :D

also ich habe eine while schleife, die abfragt, ob die resultierenden werte des gyro sensors größer als 10,5 sind, wenn ja soll er die schleife verlassen.
Nun ist das Problem, welchen Befehl muss ich eingeben um in der Schleife meine Gyro werte aus zu lesen?

Also nicht OnChange, sondern an dem Punkt, wenn es in der schleife dran ist.
 
Zuletzt bearbeitet:
ich kenn mich nicht mit gyro aus aber
poste mal den code abschnbitt bitte hört sich bnicht nach einer speziellen frage wo man sich damit auskennen muss sondern um logischen ablauf
 
Habs leider grad nicht ganz richtig dabei, bin auf arbeit aber es lautet eigtl so:

Do
anzeige1.settext ("Wartet auf Änderung")
read gyro
while(a <10.5)
das read gyro muss halt irgend ein befehl sein, den ich leider nirgends finde:(
 
ach wudner
bar ich werd mich da mal auch reinlesen...bei matrizen und quaternionen gehen bei mir die lichter auf herrlich

Der ursprüngliche Beitrag von 12:28 Uhr wurde um 12:45 Uhr ergänzt:

also ok du musst den die veränderungen in x,y und z richtung erstmal erfassen in onSensorChanged je nachdem was du willst mit mehr oder weniger aufwand

jetzt die frage: was möchtest du genau erfassen? eine winkelveränderung in irgendeinen Winkel z.B. in Y richtung als ob das Hsndy wie ein steuerrad gedreht wird oder eine Beschleunigungs veränderung in irgendeine Richtung z.B. y richtung als ob man das Handy hochreissen würde in die luft?

oder...?

ansonsten würde ich in onSensorchanged mit dem wert der mir geliefert wird vergleichen und je nachdem eine methode triggern ganz banal:

onSensorChanged(SensorEvent sE)
{

...

if(change>10.5)methodToDealWithIt();
else return;

}

Der ursprüngliche Beitrag von 12:45 Uhr wurde um 12:46 Uhr ergänzt:

und so liest du die werte aus :

float axisX = sE.values[0];
float axisY = sE.values[1];
float axisZ = sE.values[2];
 
Hi, danke schonmal für die Antwort.
Also das Handy wird in irgendeiner position hin gelegt, dann berechnet das programm durch den räumlichen Pythagoras den g wert aus. Dann soll ein button gedrückt werden. Dann soll auf eine resultierende beschleuniguns änderung gewartet werden. Die werte sollen aufsummiert werden bis der resultierendr wert einen wert wieder unterschreitet. Sodass ich am ende eine mittlere Beschleunigung ausgegeben bekomme.
Ich hoffe, dass der text verständlich ist:)
 
OK

Dann tu das in onSensorChanged

benutzen eine aifsummer variable:delForce

delForce+=currentForce-oldForce;
If (delForce>10,5)doSth ();
oldForce=currentForce;

Der ursprüngliche Beitrag von 18:33 Uhr wurde um 18:36 Uhr ergänzt:

So summiert du die einzelnen Änderungen ob positiv oder negativ auf
 
Ja, das aufsummieren ansich sollte ich hin kriegen. Nur das problem ist, dass er das erst machen soll, wenn:
1. Der button gedrückt wurde
2. Die resultierende (=sqrt (ax^2+ay^2+az^2)) größer als 10.5 ist.

Bei dem was du geschrieben hast, ist es ja so, dass er von anfang an aufaufsummiert sobald er 10,5 überschreitet.

Und in der Programmierung des onklick listeners des buttons bekomm ich keinen zugriff auf den gyro
 
ok er soll es erst aufsummieren wenn die Änderung größer als 10,5 ist und der button geklickt wurde?
führe eine variable boolean isButtonClicked ein:

if(isButtonClicked&&delForce>10,5)
delForce+=currentForce-oldForce;
else delForce=0;

}
oldForce=currentForce;
 
Zuletzt bearbeitet:
Vielen dank erstmal, das funktioniert jetzt.
Nun leider ein neues Problem.
Kurz nochmal der Gedankengang:
Handy liegt in Ruhelage,
Resultierende (welche ca erdbeschleunigung entspricht) wird errechnet, und wird beim berechnen der starttaste als offset gespeichert(ist genau genug)
Dann wird die Starttaste gedrückt,
Handy berechnet die beschleunigungen bis zum drücken dee stoptaste und summiert diese auf,
teilt sie dann durch die Anzahl der summanden,
zieht den offset ab,
Uch habe eine mittlere beschleunigung.
Soweit so gut nur habe ich dies mit einem geeichten gerät gegen gemessen und die Werte passen absolut nicht zueinander, wo ist der denkfehler?
 
hast du die beschleunigungen richtig über die zeit integriert? die zeitkonstante musss auch noch einberechnet werden weil

wenn du eine beschleunigung von 20m/s2 9 sekunden lkang hast und eine von 15 m/s2 und diese nur 4 sekunden wäre das eine mittlere beschleunigung von 20*9/(9+4) + 15*4/(9+4)=18.46 m/s2 ungefähr und nciht 17.5 ((20+15)/2)

in der doku siehst du das das gemacht werden muss
 
eine ausnahme wäre nur wenn die abtatszeitpunkte und zeitdauern imemr gleich sind da kann man den mittelwert so wie du ihn berechnest nehmen...aber nur dann!

ansonsten muss man ncoh beachten das das handy kein geeichtes wissenschaftliches messgerät ist und deren toleranz größer als der deines geeichten Gerätes ist und nciht mit der Genauigkeit arbeiten kann
 
Hallo,
ich habe bei einer App von mir ähnliches festgestellt, als ich sie programmiert habe.
Es scheint einen gewissen Vorlauf zugeben, bis der Sensor letztlich genaue Werte überträgt. Wenn diese "Einpendel-Zeit" (ich beginne erst nach 1000ms mit der eigentlichen Messung) erst mal überschritten ist, sind die Werte doch ziemlich genau. Jedenfalls ist das die Erfahrungswerte, die ich mit verschiedenen Geräten gemacht habe...
 

Ähnliche Themen

B
Antworten
3
Aufrufe
1.307
swa00
swa00
D
Antworten
23
Aufrufe
2.549
Data2006
D
OnkelLon
Antworten
13
Aufrufe
1.985
OnkelLon
OnkelLon
Zurück
Oben Unten