Hallo Zusammen,
ich habe wieder einmal eine Frage und ich hoffe ihr könnt mir bei meinem “Problemchen” weiterhelfen.
Es geht um die Funktion int geschwindigkeit();
Die Berechnung von V soll nur stattfinden sobald die Dauer sich ändert.
So wie der Code momentan aufgebaut ist, wird V allerdings in jedem durchgang der If-Abfrage berechnet und ausgegeben. (Siehe Serielle Ausgabe unten).
Könnt ihr mir hierbei behilflich sein und einen Tipp geben?
Viele Dank vorab!!
#include <Wire.h>
#include <wiinunchuck.h>
int dy = 0;
unsigned long timestore;
unsigned int zeitmessung= LOW;
int dauer;
int v=0;
double a=0.000000;
int berechnung(){
dy = -(123.0 - nunchuk_cjoy_y());
}
int zeitberechnung(){
if(zeitmessung == LOW){
if(dy >= 10 && dy <= 110){
timestore = millis();
zeitmessung = HIGH;
}
if(dy <= -10 && dy >= -110){
timestore= millis();
zeitmessung = HIGH;
}
}else{
dauer = millis()-timestore;
dauer = dauer/1000;
}
if(dy < 10 && dy >-10 ){
zeitmessung = LOW;
dauer = 0;
}
return dauer;
}
int geschwindigkeit(){
//v=a*t
int vdif=0;
int v0=v;
if(zeitmessung==HIGH){
vdif = a* dauer;
v = v0+vdif;
}else{
v=v0;
}
return v;
}
double beschleunigung(){
if(zeitmessung==HIGH){
//a = 1*dy+3;
//a = (61/910)*dy-(549/910);
a = 0.067033*dy-0.603297;
}else{
a=0;
}
return a;
}
void nunchuck_auslesen(){
nunchuk_get_data();
char buffer[60];
sprintf(buffer, "Y:%3d DY:%3d Dauer:%3d Status:%3d V:%3d A:%3d", nunchuk_cjoy_y(), dy, dauer, zeitmessung, v, (int)a);
Serial.println(buffer);
}
void setup() {
Serial.begin(9600);
nunchuk_init(); //I²C-Verbindung wird hergestellt
delay(20);
nunchuk_calibrate_joy(); //Setzt die Normalstellung auf (0,0)
delay(20);
}
void loop() {
nunchuck_auslesen();
berechnung();
zeitberechnung();
beschleunigung();
geschwindigkeit();
delay(1);
}
SERIELLE AUSGABE:
Y:223 DY:100 Dauer: 0 Status: 1 V: 0 A: 6
Y:223 DY:100 Dauer: 0 Status: 1 V: 0 A: 6
Y:223 DY:100 Dauer: 1 Status: 1 V: 6 A: 6
Y:223 DY:100 Dauer: 1 Status: 1 V: 12 A: 6
Y:223 DY:100 Dauer: 1 Status: 1 V: 18 A: 6
Y:223 DY:100 Dauer: 1 Status: 1 V: 24 A: 6
Y:223 DY:100 Dauer: 1 Status: 1 V: 30 A: 6
Y:223 DY:100 Dauer: 1 Status: 1 V: 36 A: 6
Y:223 DY:100 Dauer: 1 Status: 1 V: 42 A: 6
Y:223 DY:100 Dauer: 1 Status: 1 V: 48 A: 6
Y:223 DY:100 Dauer: 1 Status: 1 V: 54 A: 6
Y:223 DY:100 Dauer: 1 Status: 1 V: 60 A: 6