document.write('
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. /*******************************************************************************
  2.  Projektname:       RC5.cprj
  3.  Benötigte Libs´s:  IntFunc_lib.cc
  4.  Routinen:          lcd.cc, PRO-BOT128C_Lib_V2.cc
  5.  Autor:             Niels
  6.  Datum:             6. 6. 2013
  7.  
  8.  Funktion:          RC5-Fernsteuerung zum Steuern des PRO-BOT verwenden
  9.             Nur für RCX161-Fernsteuerung!
  10.             Nur Kanal 0 ist möglich über "TV"!
  11.             Mehrere Fernsteuerungen und PRO-BOTs sind nicht gleichzeitig
  12.             verwendbar!
  13. *******************************************************************************/
  14.  
  15. // Compiler-Direktiven
  16. #define RC5DATAMASK 0b0000000000111111 // Konstante definieren (10 Nullen + 6 Einsen)
  17. #define SPEED1 225
  18. #define SPEED2 250
  19.  
  20. void main(void)
  21. {
  22.  
  23. PRO_BOT128_INIT();    //PRO-BOT128 Setup
  24. LCD_Init();
  25. RC5_Init(26); // 26 ist die Hardwareadresse
  26. AbsDelay(100);       //Wait 0,1 Sec.
  27. LCD_ClearLCD();
  28.  
  29. Akkuspg(); // Ausgabe der Akkuspannung
  30. LCD_ClearLCD();
  31.  
  32. // Wie funktioniert RC5?
  33. // Theorie an der Tafel (-;
  34. // Fernbedienung RCX161:
  35. // TV = Kanal 0
  36. //      32
  37. // 17   41   16
  38. //      33
  39. //
  40. int RC5Value; // Rohwert von der Fernsteuerung
  41. int RC5Data; // Variable für den Tastencode (die letzten 6 Bit von RC5Value)
  42.  
  43.     while(1)
  44.     {
  45.          RC5Value=RC5_Read(); // Übergibt dem Programm die RC5-Rohdaten (14 Bit)
  46.          // Wir wollen den Tastencode ermitteln (die ganz rechten 6 Bit)
  47.         // Den "Rest" (links) müssen wir maskieren
  48.         RC5Data=RC5Value&RC5DATAMASK;
  49.         // Ausgabe auf Display
  50.         LCD_Locate(1, 1);
  51.         LCD_WriteText("Tastencode: ");
  52.         LCD_WriteWord(RC5Data, 2); //
  53.  
  54.         LCD_Locate(2, 1);
  55.         switch(RC5Data)
  56.           {
  57.           case 32:    LCD_WriteText("Vorwaerts!!");
  58.                       MOTOR_DIR(1,1); //MOTOR DIRECTION
  59.                       DRIVE_ON(); //Motorspannung an
  60.                       MOTOR_POWER(SPEED2, SPEED1);
  61.                       break;
  62.           case 17:    LCD_WriteText("Links!!!!!!");
  63.                       MOTOR_DIR(1,1); //MOTOR DIRECTION
  64.                       DRIVE_ON(); //Motorspannung an
  65.                       MOTOR_POWER(0, SPEED1);
  66.                       break;
  67.           case 16:    LCD_WriteText("Rechts!!!!!");
  68.                       MOTOR_DIR(1,1); //MOTOR DIRECTION
  69.                       DRIVE_ON(); //Motorspannung an
  70.                       MOTOR_POWER(SPEED2, 0);
  71.                       break;
  72.           case 41:    LCD_WriteText("Stopp!!!!!!");
  73.                       DRIVE_OFF(); //Motorspannung aus
  74.                       break;
  75.           case 33:    LCD_WriteText("Rueckwaerts");
  76.  
  77.                       break;
  78.  
  79.  
  80.           }
  81.      }
  82.  
  83. }
');