PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Joystick Werte kalibrieren und richtig ausgeben



BEADG
30.11.2013, 23:25
Abend,

zur Zeit versuche ich die Werte von den Joysticks von einem PS2 Controller zu kalibrieren.
Da die Werte bei meinem Joysticks nicht genau 511 bzw 512 sind habe ich ein Programm geschrieben, dass das behebt und es noch in ein anderes Programm eingefügt.
Mein Problem ist, dass ein Wert richtig ausgegeben wird (511) und der andere (595). Beide Werte müssten 511 sein.

Seht ihr vielleicht den Fehler oder was man besser machen könnte?

Gruss



#include <VirtualWire.h>

const int numberOfAnalogPins = 1; // how many analog pins to read

int data[numberOfAnalogPins]; // the data buffer

const int dataBytes = numberOfAnalogPins * sizeof(int); // the number of bytes
// in the data buffer
int datahigh[numberOfAnalogPins];
int datalow[numberOfAnalogPins];
int datab[numberOfAnalogPins];

void setup()
{
Serial.begin(9600);

vw_setup(2000); // Bits per sec

datab[0] = analogRead(A0) - 511;
datab[1] = analogRead(A1) - 511;
}

void loop(){

int values = 0;
for(int i=0; i <= numberOfAnalogPins; i++)
{
datahigh[i] = 1023 - datab[i];
datalow[i] = 0 - datab[i];

data[i] = analogRead(i) - datab[i]; // store the values into the data buffer

if (data[i] >= 515)
{ data[i] = map(data[i], 515, datahigh[i], 515, 1023);
}
else if (data[i] <= 508)
{ data[i] = map(data[i], datalow[i], 508, 0, 508);
}

Serial.println(data[i]);
delay(1000);

}
send((byte*)data, dataBytes);


}


void send (byte *data, int nbrOfBytes)
{
vw_send(data, nbrOfBytes);
vw_wait_tx(); // Wait until the whole message is gone
}

BEADG
04.12.2013, 18:56
Ich habe jetzt alles ausführlich hingeschrieben ohne diese Schleife mit [i] (weiß nicht wie das heißt).

Kann geschlossen werden.