Я хотел бы спросить о моей программе. Я программирую, чтобы показать данные сенсора рыскание, шаг от Oculus на C ++ VS2013, а затем я отправляю данные с помощью serialport в Arduino (синтаксический анализ). Сервопривод не двигается, но RX в моем arduino уже мигает, когда начинается последовательное соединение.
это моя программа с ++:
int PITCH = (-1)*(int)RadToDegree(pitch) + 75;
int YAW = (int)RadToDegree(yaw) + 90;
char bintang[10] = { "*" }, koma[5] = { "," }, pagar[5] = { "#" }, kirim[10]; //out_p[10];
SerialPort arduino(port_name);
if (arduino.isConnected()) { wzPrintf(20, 130, "Connection Established"); }
else wzPrintf(20, 130, "ERROR, check port name");
sprintf_s(kirim,"%c%3d%c%3d%c", bintang,YAW,koma,PITCH,pagar);
arduino.writeSerialPort(kirim, strlen(kirim));
и это моя программа Arduino (разбор) (* (данные рыскание), (шаг данных) #):
#include <math.h>
#include <LiquidCrystal.h>
#include <Servo.h>
#include <Arduino.h>
int serv;
Servo myServo1,myServo2;
int j,i;
boolean stringComplete=false,rxSerial=false;
String inputString="";
String data[100];
void setup() {
for(int i=2;i<=7;i++){
pinMode(i,OUTPUT);
}
myServo1.attach(9);
myServo1.write(90);
Serial.begin(115200);
delay(2000);
}
void loop()
{
if(Serial.available()){
char inChar=Serial.read();
if(inChar=='#'){
rxSerial=false;
stringComplete=true;
}
if(rxSerial){
inputString+=inChar;
}
if(inChar=='*'){
rxSerial=true;
}
}
if(stringComplete){j=0;
data[j]="";
for(i=0;i<inputString.length();i++){
if ( inputString[i] == ','){
j++;
data[j]="";
}
else {
data[j] += inputString[i];
}
}// int servo1 = (data[0].toInt())-90;
int servo1 = data[0].toInt();
if (servo1 <= -85) {
servo1 = -85;
}
else if (servo1 >= 85){
servo1 = 85;
}
//servo1 = map(servo1, -90, 90, 0, 180);
int servo2 = data[1].toInt();myServo1.write(servo1);
myServo2.write(servo2);
Serial.print(servo1);
Serial.print(",");
Serial.println(servo2);
inputString="";
stringComplete=false;
}
}
Задача ещё не решена.
Других решений пока нет …