Hallo,
ich komme einfach nicht weiter und hoffe, dass sich hier jemand auskennt…
Ich habe einen Flugcontroller Crius V1 mit der aktuellen Multiwii-Software drauf. Ich kann das Teil auch beispielsweise über MultiWiiConf am PC auslesen, wenn ich es per USB mit dem PC verbinde. Jetzt möchte ich einige Daten aber gerne mittels eines zweiten Mega2560 auslesen und die Daten im Serial Monitor anzeigen (später möchte ich damit Schrittmotoren steuern)
Infos zum Protokoll stehen hier:
http://armazila.com/sites/default/files/content/download/MultiwiiSerialProtocol(draft)v04.pdf
Mein Problem: Ich begreife irgend etwas nicht und weiß nicht genau was :~
Der Aufbau:
Ich habe den Flightcontroller mit der MutiWii-Software 2.3 darauf. Ich habe ein Arduino Mega 2560 auf den der unten stehende Sketch geladen ist.
Die MultiWii- Software liefert angeblich nur Daten, wenn diese auch angefordert wurden. Tatsächlich reagiert der Flightcontroller auch auf die Anfrage, wenn ich SCL und SDA vom Flightcontroller mit RX1 und TX 1 vom Mega verbinde. (Kann das überhaupt funktionieren und was gehört an was? Antwort kommt bei mir in beiden Fällen.) Aber was ich zurück bekomme entspricht gar nicht dem, was ich sehen möchte. Mein Ziel wäre es Roll, Pitch und Head zu erhalten, was ich mir durch den Parameter 108 erhoffe.
Jemand eine Idee? Wäre echt super!
Vielen Dank
Hannes
int Byte;
int x=0;
void setup() {
Serial.begin(19200); // Serial Monitor
Serial1.begin(19200); // Mwii
}
void loop() {
x=0;
/* Data request */
Serial1.write('
);
Serial1.write(‘M’);
Serial1.write(’<’);
Serial1.write(108); // MSP_ATTITUDE
while (!Serial1.available() ) Serial.println(“WARTE”);;
while (Serial1.available() > 0)
{
Serial.print(" Wert: “); Serial.print(x);Serial.print(” = “);
Byte = Serial1.read();
Serial.print(Byte); // Print data from Multiwii
x++;
if(x>63) break; // Um die Sache zu verkürzen
}
Serial.print(”\n");
}