Nur schnell überflogen:
Die Bedingung kann nicht erfüllt werden:
else if ((incomingpos <= 2501) && (incomingpos >=3500))
Die schon:
else if ((incomingpos >= 2501) && (incomingpos <=3500))
- - - Aktualisiert - - -
SerialPort1.Write(myJoystick.StatusInformation.Pos ition.Y.ToString - 1500 & myJoystick.StatusInformation.Rotation - 2501 & myJoystick.StatusInformation.Position.X.ToString) 'hier liegt mein Problem!!
Richtig!
Mal ne Analyse:
1. Wir nehmen an, der Joystick ist etwas aus der Mittellage ausgelenkt, sodass
myJoystick.StatusInformation.Position.X
vielleicht 100 liefert
myJoystick.StatusInformation.Position.Y
vielleicht 200 liefert
2. Nehmen wir an, der Befehl lautet:
SerialPort1.Write(myJoystick.StatusInformation.Pos ition.X.ToString )
->Dann kommt am Empfänger ein String an z.B. "100" .
3. Nehmen wir an, der Befehl lautet nun:
SerialPort1.Write(myJoystick.StatusInformation.Pos ition.X.ToString & myJoystick.StatusInformation.Position.Y.ToString )
->Dann kommt am Empfänger ein String an z.B. "100200".
4. Den String wandeln wir wieder um in eine Ganzzahl "100200" -> 100200.
Die Methode solltest du überarbeiten.
-- Lösung mit Write(String) ------------------------------------
Kannst du sagen welche Parameter hier übergeben werden?
Code:
joystick(Me.Handle, -1000, 0, 0, 100)
Ich VERMUTE es wäre schlauer, gleich zu schreiben:
Code:
joystick(Me.Handle, 0, 179, 0, 100)
--
Wenn das geht, kannst du schreiben:
Code:
...
joystick(Me.Handle, 0, 179, 0, 100)
...
Dim joyData As Integer
joyData = myJoystick.StatusInformation.Position.X + myJoystick.StatusInformation.Position.Y *256 + myJoystick.StatusInformation.Rotation *256*256
SerialPort1.Write(joyData.toString)
...
--
Im Arduino Code:
Code:
...
char X_buffer[8]; //Max. Zahl "16700000"
int joyData = atoi(X_buffer);
int x = joyData & 0xff;
int y = (joyData >> 8) & 0xff;
int rot = (joyData >> 16) & 0xff;
...
--- BESSER: Lösung ohne Stringumwandlung ------------------------------------
Code:
...
joystick(Me.Handle, 0, 179, 0, 100)
...
Dim joyData(3) As Byte
joyData(0) = myJoystick.StatusInformation.Position.X
joyData(1) = myJoystick.StatusInformation.Position.Y
joyData(2) = myJoystick.StatusInformation.Rotation
SerialPort1.Write(joyData, 0, 3)
...
Arduino Code:
Code:
#include <Servo.h>
#define LEN 3
Servo Servo1;
Servo Servo2;
Servo Servo3;
void setup()
{
Servo1.attach(9);
Servo2.attach(10);
Servo3.attach(11);
}
void loop()
{
if(Serial.available() == LEN)
{
byte joyData[LEN];
int i = 0;
while(Serial.available()>0)
{
joyData[i++] = Serial.read();
}
Servo1.write(joyData[0]); // Position.X
Servo2.write(joyData[1]); // Position.Y
Servo3.write(joyData[2]); // Rotation
}
delay(10);
}
Lesezeichen