Forum: Mikrocontroller und Digitale Elektronik Arduino und FSX - CodeIn GetChar


von DasMoritz (Gast)


Lesenswert?

Guten Abend,

ich habe seit kurzem einen Arduino und möchte diesen primär nutzen, um 
etwas mehr Kenntnis in der Materie zu bekommen. Idee war, den Arduino 
ein bisschen mit FSX zu nutzen, um z. B. Heading-Werte, Höhen, den 
Autopiloten usw. zu setzen.

Bisher habe ich immer den Weg "vom Arduino" in den "FSX" genommen (mit 
dem Tool Link2FS). Nun möchte ich aber auch am Arduino auf Basis des 
seriellen Datenstroms eine LED ein- und ausschalten.

Wenn ich den AP einschalte, sendet FSX an die serielle Schnittstelle 
"=a0", beim Einschalten "=a1" (beides ohne ""). Die Daten kommen soweit 
korrekt beim Arduino an.

Nun möchte ich, dass bei der Zeichenkette "=a1" die LED an Pin 4 
eingeschaltet wird und LED an Pin 5 aus geht, bei der Zeichenkette "=a0" 
die LED an Pin 4 wieder aus geht, LED an Pin 5 dann an.

Mein Code sieht wie folgt aus (auf Basis von Code aus dem Netz):

[c]
int CodeIn;// used on all serial reads
void setup()
{

  // Lets set the output pin modes (longhand)
  pinMode(4, OUTPUT); //
  pinMode(5, OUTPUT); //

  Serial.begin(115200);
}

void loop() {

  if (Serial.available()) {//checks the serial read buffer
    CodeIn = getChar();// reads one charactor via it's own routine (char 
getChar)
    if (CodeIn == '=') {
      EQUAL(); // The first identifier is "=", goto EQUAL void

    }
  }//end of yes there is something to read
} // end of void loop (The main one)

char getChar()// Get a character from the serial buffer
{
  while (Serial.available() == 0); // wait for data
  return ((char)Serial.read()); // Thanks Doug
}// end of getchar void.

void EQUAL() {   // The first identifier was "="
  CodeIn = getChar(); // Get the second identifier
  switch (CodeIn) { // Now lets find what to do with it
    case 'a'://Found the second identifier (Autopilot)

  }// end of switch
}// end of lessthan void
[c]

Ich komme mit dem Switch Case nicht weiter.
Ich muss ja nicht nur den zweiten Wert auslesen (beides a) sondern auch 
den dritten (also ob 0 oder 1), damit ich steuern kann ob der Autopilot 
an ist oder eben nicht.

Hat jemand dazu eine Idee?
Danke,
Moritz

von Dieter S. (Gast)


Lesenswert?

Wie wäre es mit der Arduino Referenz:
https://www.arduino.cc/en/Reference/SwitchCase

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.