Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*******************************************************************************
- Projektname: lcdtest
- Benötigte Libs´s: IntFunc_lib.cc
- Routinen: lcd.cc, PRO-BOT128C_Lib_V2.cc
- Autor: Niels
- Datum: 22. 05. 2013
- Funktion: Anzeigen der Akkuspannung
- Test der LEDs
- *******************************************************************************/
- // Compiler-Direktiven
- // Hier wollen wir "Symbolische Konstanten" definieren (GROSSBUCHSTABEN)
- #define ZAHL1 10
- #define ZAHL2 5
- #define ZAHL3 -5
- #define PI 3.14159265359
- int Zaehler; // Globale Variable
- void main(void)
- {
- PRO_BOT128_INIT(); // Initialisierung des PRO-BOT128
- LCD_Init(); // LCD.cc nicht vergessen!
- // Akkuspg(); // Ausgabe der Akkuspannung
- /* Mehrzeilige Kommentare
- müssen nicht aqm Beginn jeder Zeile gekennzeichnet werden. */
- // Datentypen und Arithmetik
- // 1. Integer-Variable (32 Bit mit Vorzeichen) deklarieren
- // Lokale Variable, da nur in Main() zugreifbar!
- int Ausgabe; // -32768 bis +32767
- Ausgabe = 120 + 32; // Konstante Ausdrücke addieren und in Variable speichern
- // LCD-Ausgabe:
- LCD_ClearLCD();
- //LCD auf Zeile 1 Position 1 setzen:
- LCD_Locate(1, 1);
- LCD_WriteText("120 + 32 = ");
- LCD_WriteWord(Ausgabe, 4); // Gleich dahinter ausgeben
- AbsDelay(2000); //Wait 2 Sec.
- // 2. Float-Variable deklarieren
- // Für "Zahlen mit Komma"
- float Akkuspannung;
- Akkuspannung=PI; // 13 Stellen
- // Akkuspannung=AKKU_SPG();
- LCD_ClearLCD();
- LCD_Locate(1, 1);
- LCD_WriteText("Akkuspannung:");
- LCD_Locate(2, 1);
- LCD_WriteFloat(Akkuspannung, 13); // Wird auf 7 Stellen gerundet???
- AbsDelay(2000); //Wait 2 Sec.
- // 3. Byte-Variable deklarieren
- // 0 bis 255 (8 Bit) - braucht weniger Speicher als Integer
- byte Zaehler; // Globale Variable "Zaehler" wird verdeckt!
- Zaehler = 254;
- LCD_ClearLCD();
- //LCD auf Zeile 1 Position 1 setzen:
- LCD_Locate(1, 1);
- LCD_WriteText("8-Bit-Wert: ");
- LCD_WriteWord(Zaehler, 3); // Gleich dahinter ausgeben (max. 3-stellig)
- AbsDelay(2000); //Wait 2 Sec.
- // 4. Rechnen
- int Ergebnis;
- // float Ergebnis;
- Ergebnis = 2 + 3 - 4; // Konstante Ausdrücke verwenden
- Ergebnis = ZAHL1; // 10
- Ergebnis = Ergebnis + 3;
- Ergebnis++; // Um EINS erhöhen
- Ergebnis--; // UM EINS verringern
- Ergebnis = Ergebnis<<1; // Multiplikation mit 2
- Ergebnis = Ergebnis>>2; // Division durch 4
- // Ergebnis = ZAHL1 + ZAHL2 + ZAHL3;
- // Ergebnis = sqrt(16);
- // Ergebnis = sqrt(16.7); // Ergebnis muss FLOAT sein!
- LCD_ClearLCD();
- //LCD auf Zeile 1 Position 1 setzen:
- LCD_Locate(1, 1);
- LCD_WriteText("Ergebnis = ");
- LCD_WriteWord(Ergebnis, 3); // Gleich dahinter ausgeben (max. 3-stellig)
- LCD_Locate(2, 1);
- LCD_WriteText("Ergebnis = ");
- LCD_WriteFloat(Ergebnis, 7);
- AbsDelay(2000); //Wait 2 Sec.
- // 5. Mischen von Datentypen
- int a;
- a = 2;
- a + 5; // vereinfachend statt a = a + 5
- // Das Ergebnis wird nun FLOAT und kann nicht in a gespeichert werden!
- float b;
- b = a + 5.5;
- LCD_ClearLCD();
- //LCD auf Zeile 1 Position 1 setzen:
- LCD_Locate(1, 1);
- LCD_WriteText("INT=");
- LCD_WriteFloat(a, 7);
- LCD_Locate(2, 1);
- LCD_WriteText("FLOAT=");
- LCD_WriteFloat(b, 7);
- AbsDelay(2000); //Wait 2 Sec.
- // Testen der LEDs
- // 5x blinken = for-Konstrukt (Kontrollstruktur)
- int i;
- for(i=0; i<5; i++)
- {
- BLL_ON(); // Backward
- BLR_ON();
- FLL_ON(); // Forward
- FLR_ON();
- DELAY_MS(500);
- BLL_OFF(); // Backward
- BLR_OFF();
- FLL_OFF(); // Forward
- FLR_OFF();
- DELAY_MS(500);
- }
- // Endlos-Schleife
- while(true)
- {
- // Ab hier endlos wiederholen
- }
- }
- // Wir lagern Programmcode in eine (Unter-)Funktion aus
- int Akkuspg(void)
- {
- LCD_ClearLCD();
- //LCD auf Zeile 1 Position 1 setzen:
- LCD_Locate(1, 1);
- LCD_WriteText("Akkuspannung:");
- LCD_Locate(2, 1);
- float Akkuspannung;
- Akkuspannung=AKKU_SPG();
- LCD_WriteFloat(Akkuspannung, 6);
- AbsDelay(2000); //Wait 2 Sec.
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement