document.write('
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. /*******************************************************************************
  2.  Projektname:       lcdtest
  3.  Benötigte Libs´s:  IntFunc_lib.cc
  4.  Routinen:          lcd.cc, PRO-BOT128C_Lib_V2.cc
  5.  Autor:             Niels
  6.  Datum:             22. 05. 2013
  7.  Funktion:          Anzeigen der Akkuspannung
  8.                     Test der LEDs
  9. *******************************************************************************/
  10.  
  11. // Compiler-Direktiven
  12. // Hier wollen wir "Symbolische Konstanten" definieren (GROSSBUCHSTABEN)
  13. #define ZAHL1 10
  14. #define ZAHL2 5
  15. #define ZAHL3 -5
  16. #define PI 3.14159265359
  17.  
  18. int Zaehler; // Globale Variable
  19.  
  20. void main(void)
  21. {
  22.     PRO_BOT128_INIT(); // Initialisierung des PRO-BOT128
  23.     LCD_Init();  // LCD.cc nicht vergessen!
  24.     // Akkuspg(); // Ausgabe der Akkuspannung
  25.  
  26.     /* Mehrzeilige Kommentare
  27.     müssen nicht aqm Beginn jeder Zeile gekennzeichnet werden. */
  28.  
  29.     // Datentypen und Arithmetik
  30.     // 1. Integer-Variable (32 Bit mit Vorzeichen) deklarieren
  31.     // Lokale Variable, da nur in Main() zugreifbar!
  32.     int Ausgabe; // -32768 bis +32767
  33.     Ausgabe = 120 + 32; // Konstante Ausdrücke addieren und in Variable speichern
  34.     // LCD-Ausgabe:
  35.     LCD_ClearLCD();
  36.     //LCD auf Zeile 1 Position 1 setzen:
  37.     LCD_Locate(1, 1);
  38.     LCD_WriteText("120 + 32 = ");
  39.     LCD_WriteWord(Ausgabe, 4); // Gleich dahinter ausgeben
  40.     AbsDelay(2000);       //Wait 2 Sec.
  41.  
  42.     // 2. Float-Variable deklarieren
  43.     // Für "Zahlen mit Komma"
  44.     float Akkuspannung;
  45.     Akkuspannung=PI; // 13 Stellen
  46.     // Akkuspannung=AKKU_SPG();
  47.     LCD_ClearLCD();
  48.     LCD_Locate(1, 1);
  49.     LCD_WriteText("Akkuspannung:");
  50.     LCD_Locate(2, 1);
  51.     LCD_WriteFloat(Akkuspannung, 13); // Wird auf 7 Stellen gerundet???
  52.     AbsDelay(2000);       //Wait 2 Sec.
  53.  
  54.     // 3. Byte-Variable deklarieren
  55.     // 0 bis 255 (8 Bit) - braucht weniger Speicher als Integer
  56.     byte Zaehler; // Globale Variable "Zaehler" wird verdeckt!
  57.     Zaehler = 254;
  58.     LCD_ClearLCD();
  59.     //LCD auf Zeile 1 Position 1 setzen:
  60.     LCD_Locate(1, 1);
  61.     LCD_WriteText("8-Bit-Wert: ");
  62.     LCD_WriteWord(Zaehler, 3); // Gleich dahinter ausgeben (max. 3-stellig)
  63.     AbsDelay(2000);       //Wait 2 Sec.
  64.  
  65.     // 4. Rechnen
  66.     int Ergebnis;
  67.     // float Ergebnis;
  68.     Ergebnis = 2 + 3 - 4; // Konstante Ausdrücke verwenden
  69.     Ergebnis = ZAHL1; // 10
  70.     Ergebnis = Ergebnis + 3;
  71.     Ergebnis++; // Um EINS erhöhen
  72.     Ergebnis--; // UM EINS verringern
  73.     Ergebnis = Ergebnis<<1; // Multiplikation mit 2
  74.     Ergebnis = Ergebnis>>2; // Division durch 4
  75.     // Ergebnis = ZAHL1 + ZAHL2 + ZAHL3;
  76.     // Ergebnis = sqrt(16);
  77.     // Ergebnis = sqrt(16.7); // Ergebnis muss FLOAT sein!
  78.     LCD_ClearLCD();
  79.     //LCD auf Zeile 1 Position 1 setzen:
  80.     LCD_Locate(1, 1);
  81.     LCD_WriteText("Ergebnis = ");
  82.     LCD_WriteWord(Ergebnis, 3); // Gleich dahinter ausgeben (max. 3-stellig)
  83.     LCD_Locate(2, 1);
  84.     LCD_WriteText("Ergebnis = ");
  85.     LCD_WriteFloat(Ergebnis, 7);
  86.     AbsDelay(2000);       //Wait 2 Sec.
  87.  
  88.     // 5. Mischen von Datentypen
  89.     int a;
  90.     a = 2;
  91.     a + 5; // vereinfachend statt a = a + 5
  92.     // Das Ergebnis wird nun FLOAT und kann nicht in a gespeichert werden!
  93.     float b;
  94.     b = a + 5.5;
  95.      LCD_ClearLCD();
  96.     //LCD auf Zeile 1 Position 1 setzen:
  97.     LCD_Locate(1, 1);
  98.     LCD_WriteText("INT=");
  99.     LCD_WriteFloat(a, 7);
  100.     LCD_Locate(2, 1);
  101.     LCD_WriteText("FLOAT=");
  102.     LCD_WriteFloat(b, 7);
  103.     AbsDelay(2000);       //Wait 2 Sec.
  104.  
  105.  
  106.  
  107.     // Testen der LEDs
  108.     // 5x blinken = for-Konstrukt (Kontrollstruktur)
  109.     int i;
  110.     for(i=0; i<5; i++)
  111.     {
  112.         BLL_ON(); // Backward
  113.         BLR_ON();
  114.         FLL_ON(); // Forward
  115.         FLR_ON();
  116.         DELAY_MS(500);
  117.         BLL_OFF(); // Backward
  118.         BLR_OFF();
  119.         FLL_OFF(); // Forward
  120.         FLR_OFF();
  121.         DELAY_MS(500);
  122.     }
  123.  
  124.     // Endlos-Schleife
  125.     while(true)
  126.     {
  127.         // Ab hier endlos wiederholen
  128.     }
  129.  
  130. }
  131.  
  132. // Wir lagern Programmcode in eine (Unter-)Funktion aus
  133. int Akkuspg(void)
  134. {
  135.     LCD_ClearLCD();
  136.     //LCD auf Zeile 1 Position 1 setzen:
  137.     LCD_Locate(1, 1);
  138.     LCD_WriteText("Akkuspannung:");
  139.     LCD_Locate(2, 1);
  140.     float Akkuspannung;
  141.     Akkuspannung=AKKU_SPG();
  142.     LCD_WriteFloat(Akkuspannung, 6);
  143.     AbsDelay(2000);       //Wait 2 Sec.
  144.     return 0;
  145. }
');