Asuro Programmcode

OP #3280001
Lesenswert?

Hallo,

könnte mir wohl mal einer den nachfolgenden Befehl Zeile für Zeile 
beschreiben?

#include <asuro.h>
#include "rc5.h"
#include <stdlib.h>

#define LINKS   0x100b
#define RECHTS   0x100a
#define STOPP  0x102b
#define VORWAERTS  0x102a
#define RUECKWAERTS  0x102e

#define MAXSPEED  180




int main(void)
{

  static unsigned int cmd; //Lesepuffer für IR-Empfänger

  char text[7];
  unsigned char taste;
  Init();
  InitRC5();

  SerPrint("RC5 Test\r\n");

  FrontLED(OFF);
  BackLED(OFF, OFF);

   MotorDir(FWD, FWD);
   MotorSpeed(0, 0);
   Msleep(100);

  while (1)
  {
    taste=PollSwitch();
    if (taste> 0)
  {
  MotorSpeed(0,0);
  FrontLED(OFF);
    }

    cmd = ReadRC5();
    if (cmd)
    {
      cmd &= RC5_MASK;
      itoa(cmd, text, 16);
      SerPrint(text);
      SerPrint("\r\n");

      switch (cmd)
      {
      case LINKS :
    SerPrint("LINKS\r\n");
    BackLED(ON, OFF);
    FrontLED(OFF);
    MotorDir(FWD, FWD);
    MotorSpeed(0, 200);
    break;
    case RECHTS :
    SerPrint("RECHTS\r\n");
    BackLED(OFF, ON);
    FrontLED(OFF);
    MotorDir(FWD, FWD);
    MotorSpeed(MAXSPEED, 0);
    break;
    case VORWAERTS :
    SerPrint("VORWAERTS\r\n");
    BackLED(OFF, OFF);
    FrontLED(ON);
    MotorDir(FWD, FWD);
    MotorSpeed(150, 165);
    break;
    case RUECKWAERTS :
    SerPrint("RUECKWAERTS\r\n");
    FrontLED(OFF);
    BackLED(ON, ON);
    MotorDir(RWD, RWD);
    MotorSpeed(150, 160);
    break;
    case STOPP :
    SerPrint("STOPP\r\n");
    BackLED(OFF, OFF);
    FrontLED(OFF);
    MotorSpeed(0, 0);
    MotorDir(FWD, FWD);
    break;
    }
    }

    Msleep(100);
  }
  return 0;
}
Gast #3281286
Lesenswert?

RC5_MASK ist irgend ein Makro mit einer Bit-Maske.
Dieses Makro (#define RC5_MASK) muss in einer der Header-Dateien stehen.
Dann wird vielleicht deutlicher was da passiert.

Wenn cmd > 0 ist wird cmd mit der Maske "ver-und-et".
Daraus resultierenden dann je nach Wert von cmd verschiedene Werte, die 
wiederum für unterschiedliche Befehle stehen.

itoa macht aus Integer-Werten ASCII-Zeichen.

Naja und SerPrint gibt das ganze dann vermutlich auf die serielle 
Schnittstelle.

Gruß

Christian

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren