document.write('
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. /*******************************************************************************
  2.  Projektname:       ACS.cprj
  3.  Benötigte Libs´s:  IntFunc_lib.cc
  4.  Routinen:          lcd.cc, PRO-BOT128C_Lib_V2.cc
  5.  Autor:             Niels
  6.  Datum:             16. 04. 2013
  7.  
  8.  Funktion:          Hindernisse erkennen und ausweichen
  9. *******************************************************************************/
  10.  
  11. // Compiler-Direktiven
  12. #define MIDDLESPEED_LEFT 200
  13. #define MIDDLESPEED_RIGHT 180
  14. #define LOWSPEED 0
  15.  
  16.  
  17. void main(void)
  18. {
  19.  
  20. PRO_BOT128_INIT();    //PRO-BOT128 Setup
  21. ACS_INIT(1); // Geringste Empfindlichkeit = 1; höchste = 20
  22. AbsDelay(100);       //Wait 0,1 Sec.
  23. LCD_Init();
  24. LCD_ClearLCD();
  25.  
  26. Akkuspg(); // Ausgabe der Akkuspannung
  27.  
  28. DRIVE_ON(); //Motorspannung an
  29. MOTOR_DIR(1,1); //beide Motoren vorwärts   - MOTOR DIRECTION
  30. MOTOR_POWER(MIDDLESPEED_LEFT, MIDDLESPEED_RIGHT);
  31.  
  32. // Endlos-Schleife
  33.     do
  34.     {
  35.            if ((ACS_LEFT() == 0) && (ACS_RIGHT() == 1))
  36.            {
  37.                 // Hindernis links wurde erkannt
  38.                 // Nach RECHTS ausweichen
  39.                 // rechtes Rad rückwärts
  40.                 MOTOR_DIR(0,0); //beide Motoren rückwärts
  41.                 MOTOR_POWER(LOWSPEED,MIDDLESPEED_RIGHT);
  42.                 AbsDelay(100);       //Wait 0,1 Sec.
  43.                 DRIVE_ON(); //Motor an!
  44.            }
  45.             if ((ACS_LEFT() == 1) && (ACS_RIGHT() == 0))
  46.            {
  47.                 // Hindernis rechts wurde erkannt
  48.                 // Nach LINKS ausweichen
  49.                 // rechtes Rad rückwärts
  50.                 MOTOR_DIR(0,0); //beide Motoren rückwärts
  51.                 MOTOR_POWER(MIDDLESPEED_LEFT,  LOWSPEED);
  52.                 AbsDelay(100);       //Wait 0,1 Sec.
  53.                 DRIVE_ON(); //Motor an!
  54.            }
  55.             if ((ACS_LEFT() == 1) && (ACS_RIGHT() == 1))
  56.            {
  57.                 // Kein Hindernis
  58.                 // Geradeausfahrt
  59.                 MOTOR_DIR(1,1); //beide Motoren vorwärts
  60.                 MOTOR_POWER(MIDDLESPEED_LEFT,  MIDDLESPEED_RIGHT);
  61.                 AbsDelay(100);       //Wait 0,1 Sec.
  62.                 DRIVE_ON(); //Motor an!
  63.            }
  64.             if ((ACS_LEFT() == 0) && (ACS_RIGHT() == 0))
  65.            {
  66.                 // Hindernis links und rechts wurde erkannt
  67.                 // STOPP
  68.                 DRIVE_OFF();
  69.                 LCD_ClearLCD();
  70.                 //LCD auf Zeile 1 Position 1 setzen:
  71.                 LCD_Locate(1, 1);
  72.                 LCD_WriteText("Und wohin jetzt?"); //Begruessung
  73.                 AbsDelay(1000);
  74.                 LCD_ClearLCD();
  75.  
  76.            }
  77.     }
  78.     while(1);
  79. }
  80.  
  81. // Wir lagern Programmcode in eine (Unter-)Funktion aus
  82. int Akkuspg(void)
  83. {
  84.     LCD_ClearLCD();
  85.     //LCD auf Zeile 1 Position 1 setzen:
  86.     LCD_Locate(1, 1);
  87.     LCD_WriteText("Akkuspannung:"); //Begruessung
  88.     LCD_Locate(2, 1);
  89.     float Akkuspannung;
  90.     Akkuspannung=AKKU_SPG();
  91.     LCD_WriteFloat(Akkuspannung, 6);
  92.     AbsDelay(2000);       //Wait 2 Sec.
  93.     return 0;
  94. }
');