BEADG
01.12.2013, 00: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
}
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
}