Arduino LC-Display-Ansteuerung Seite 2

Größe: px
Ab Seite anzeigen:

Download "Arduino LC-Display-Ansteuerung Seite 2"

Transkript

1

2 Scope Die Erstellung einer eigenen LCD-Ansteuerung Version 1.0 Created Autor Erik Bartmann Internet Arduino LC-Display-Ansteuerung Seite 2

3 Das LCD vom Typ HD44780 Liebe Freunde, ich möchte in diesem Arduino-AddOn die Programmierung der Ansteuerung eines LC-Displays behandeln. Habt Ihr die Vorgehensweise verstanden, ist es mehr oder weniger einfach, jedes beliebige Display anderer Hersteller anzusteuern. Bevor wir uns an die Arbeit machen, ist es unabdingbar, dass jeweilige Datenblatt zu studieren. Andernfalls können wir die Sache vergessen, denn ohne detaillierte Informationen über das Display bzw. den Treiber, der das Display ansteuert, fehlen uns jegliche Grundlagen, wie der Hersteller die Ansteuerung realisiert hat. Mit Raten kommt man da nicht zum Ziel. Zum Glück haben wir das Internet, wo nahezu alle Informationen zu finden sind. Es kann zwar in manchen Fällen etwas Zeit in Anspruch nehmen und vielleicht ist es auch erforderlich, den jeweiligen Hersteller anzuschreiben mit der Hoffnung, er wird auch reagieren. Doch nun zum Objekt unserer Begierde. Für das LC-Display, welches ich in diesem AddOn verwende, existiert schon eine fertige Library, doch ich möchte euch zeigen, wie wir unabhängig davon ein Grundgerüst entwickeln, dass zwar nicht so ausgereift wie die mit der Arduino Entwicklungsumgebung gelieferte Library ist, doch einen guten Einstieg in die Analyse des Datenblattes bzw. der objektorientierten Programmierung bietet. Das Display ist vom Typ HD44780 des Herstellers Hitachi, das ich auch in einigen Buchkapiteln verwendet habe. Es wird weltweit sehr oft verwendet und hat sich deshalb zu einem Quasi-Standard gemausert. Auf dem folgenden Bild siehst Du ein angeschlossenes Display. Arduino LC-Display-Ansteuerung Seite 3

4 Das hier verwendete Modell hat 2 Zeilen mit je 16 Zeichen, die aus einer 5x7 Punktmatrix zusammengesetzt sind. Du erkennst zwar eine 5x8 Matrix, doch die untere Zeile wird nicht genutzt. Gleich zu Anfang möchte ich Dir schon einmal den Schaltplan präsentieren, damit Du einen Überblick über den sehr geringen Schaltungsaufwand bekommst und nicht in Panik ausbrichst. Außerdem können wir diesen Schaltplan als Ausgangspunkt nehmen, um bei meinen Erläuterungen immer einmal wieder darauf zurückzugreifen. Natürlich benötigt ein derartiges Bauteil eine Versorgungsspannung, die mit +5V bzw. GND (Masse) gekennzeichnet ist. Die beiden Pins mit den Bezeichnungen A (Anode) bzw. K (Kathode) stehen für die Hintergrundbeleuchtung. Kommen wir jetzt aber zu den richtig wichtigen Anschlüssen, die zur Ansteuerung des Displays benötigt werden. Arduino LC-Display-Ansteuerung Seite 4

5 Anschlussbelegung Hier siehst Du die einzelnen Anschlüsse mit ihren Bezeichnungen: Registerwahl (Register-Select) Read/Write Enabled Datenbus D0 bis D7 (8-Bit) Vielleicht ist Dir im Schaltplan aufgefallen, dass lediglich die Anschlüsse D4 bis D7 verwendet wurden. Da es sich um die Datenleitungen handelt und wir nur die Hälfte der zur Verfügung stehenden Pins nutzen, bedeutet das jedoch nicht, dass uns etwas von der Funktionalität verloren geht. Das Display kann sowohl im 8-Bit, als auch im 4-Bit Modus betrieben werden. Da in fast allen Schaltungen der 4-Bit-Modus verwendet wird, werden wir das auch hier tun. Um einen Bytewert auf eine 8-Bit Leitung zu schicken, ist eine einzige Operation von Nöten. Arduino LC-Display-Ansteuerung Seite 5

6 8-Bit-Modus LSB MSB Um die gezeigte Bitkombination an das LC-Display zu schicken, ist eine einzige Operation notwendig. Arduino LC-Display-Ansteuerung Seite 6

7 1. Schritt 2. Schritt 4-Bit-Modus LSB MSB Im 1. Schritt werden die obersten 4 Bits, im 2. Schritt, die untersten 4 Bits übertragen. Das bedeutet zwar ein wenig Mehraufwand, was sich sicherlich auf die Ausführungsgeschwindigkeit auswirkt, doch immer noch so schnell passiert, dass wir den Unterschied zum 8-Bit Modus nicht wahrnehmen würden. Wie aber können wir jetzt etwas auf das LC-Display schicken, um etwas zu sehen? Es hängt sicherlich in erster Linie davon ab, was wir auf die Datenleitungen (D4 bis D7) schicken, doch auch die Steuerleitungen R/W (ist auf 0: Masse gelegt, weil wir nur auf das Display schreiben), R/S und Enabled spielen sicherlich ebenfalls eine entscheidende Rolle. Das Zusammenspiel aller Leitungen macht in der Summe das aus, wie sich das Display verhält. Wenn Du Deinen Mikrocontroller programmierst, dann bedienst Du Dich einem vordefinierten Befehlssatz, damit das ausgeführt wird, was Du beabsichtigt hast. Ähnlich verhält es sich mit dem LC-Display. Alleine das LC-Display, was ja genau genommen nur eine Flüssigkeitskristallanzeige ist, besitzt ja keine Logik. Zu Ansteuerung wird ein sogenannter Treiber benötigt. Dieser Baustein enthält die Logik bzw. einen Befehlssatz, um die Anzeige zu steuern. Arduino LC-Display-Ansteuerung Seite 7

8 Wir unterscheiden bei der Ansteuerung des LC-Displays zwei Kategorien. Zum einen muss das Display konfiguriert werden, damit bestimmte Grundvoraussetzungen (z.b. Ansteuerungsmodus, Zeilenanzahl, etc.) erfüllt werden. Das hat nichts mit den sichtbaren Zeichen in der Anzeige zu tun. Zum anderen möchten wir natürlich etwas Sichtbares in Richtung Display schicken, denn das ist ja eigentlich die Aufgabe dieses Bauteils. Es wird also unterschieden zwischen: Senden eines Kommandos (zur Konfiguration) Senden von Zeichen (zur Anzeige) Starten wir jetzt jedoch mit den Kommandos zur Konfiguration, denn andersherum würde es wenig Sinn machen, denn zur Anzeige muss das Display vorkonfiguriert sein. Den schon angesprochenen Befehlssatz schauen wir uns jetzt ein wenig genauer an. Befehlssatz Befehl RS RW D7 D6 D5 D4 D3 D2 D1 D0 Displayinhalt löschen Cursor auf Startposition X Modus festlegen I/D S Display/Cursor D C B Display/Cursor schieben S/C R/L X X Funktionen DL N F X X CGRAM Adresse setzen CGRAM-Adresse DDRAM Adresse setzen DDRAM-Adresse Adresse/Status lesen 0 1 BF CG-/DDRAM-Adresse Daten in DDRAM/CGRAM schreiben 1 0 Daten Daten aus DDRAM/CGRAM lesen 1 1 Daten Auf den ersten Blick ist diese Tabelle sicherlich verwirrend und es ist nicht eindeutig klar, wie sie zu lesen ist. Doch das ist eigentlich ganz einfach. Als Beispiel nehme ich einfach einmal die Zeile, in der eine Funktion aufgerufen wird, um das Display zu konfigurieren. Befehl RS RW D7 D6 D5 D4 D3 D2 D1 D0 Funktionen DL N F X X Wir konzentrieren uns hierbei lediglich auf die Datenleitungen (D0 bis D7), dir in der Tabelle in umgekehrter Reihenfolge stehen. Die logische 1 an Datenleitung D5 ist eine feste Größe und teilt dem Treiber mit: Pass auf, jetzt komme eine Funktion mit bestimmten Argumenten!. Die Argumente werden durch die weiter rechts stehenden Steuerbits repräsentiert. Arduino LC-Display-Ansteuerung Seite 8

9 Da wären also: DL N F die natürlich eine bestimmte Aufgabe haben. Die X in den Spalten sagen uns, dass sie ignoriert werden, egal, was dort für ein Wert enthalten ist (Don t care bits). Steuerbit 0 1 DL 4-Bit Modus 8-Bit Modus N 1-zeiliges Display 2/4-zeiliges Display F 5x7 Font 5x10 Font Die komplette Tabelle kommt später noch. In der Programmierung werden die einzelnen Befehle ohne die Angabe der weiter rechts stehenden Bits erst einmal formuliert bzw. definiert. Das erfolgt entweder als Binär- oder als Hex-Wert. Die Definition der Funktion lautet z.b. wie folgt, wobei ich den Namen natürlich frei gewählt habe. #define LCD_FUNCTIONCALL 0b // 0x20 Diese Bitkombination (der Hex-Wert steht als Kommentar dahinter) entspricht genau der, aus der Tabelle. Jetzt werden die Steuerbits ebenfalls als Definitionen festgelegt: #define LCD_4BITMODE #define LCD_8BITMODE #define LCD_1LINE #define LCD_2LINE #define LCD_5x7FONT #define LCD_5x10FONT 0b // 0x00 0b // 0x10 0b // 0x00 0b // 0x08 0b // 0x00 0b // 0x04 Arduino LC-Display-Ansteuerung Seite 9

10 Ich kann also die Funktion mit dem genannten Namen aufrufen. Doch wie verknüpfe ich die Steuerbits mit der Funktion? Das ist mir schleierhaft. Die Informationen der Steuerbits müssen dem Funktionsaufruf hinzugefügt werden, um dann als Ganzes in Richtung Datenbus übertragen werden. Das Verknüpfen erfolgt über die bitweise ODER-Verknüpfung. Sehen wir uns das an einem Beispiel genauer an. Wir wollen folgende Grundeinstellungen des Displays vornehmen: 4-Bit Mode 2 Zeilen-Display 5x7 Font Folgende Befehlszeile würde die Konfiguration vornehmen, wobei cmd die Methode darstellt, die die Werte in Richtung Datenbus versendet. Darauf kommen wir natürlich später noch zu sprechen. Funktionsaufruf Argumente cmd(lcd_functioncall LCD_4BITMODE LCD_2LINE LCD_5x7FONT); Die bitweise ODER-Verknüpfung erfolgt über das Pipe-Zeichen. Im Endeffekt wird dann folgende Bitkombination an den Display-Treiber versendet: LCD_FUNCTIONCALL LCD_4BITMODE LCD_2LINE LCD_5x7FONT Ergebnis: Der cmd-aufruf erfolgt demnach mit der Bitkombination und konfiguriert das Display wie gewünscht. Arduino LC-Display-Ansteuerung Seite 10

11 Im Anschluss kommen wir zum Verhalten des Displays. Ich meine damit noch nicht die konkrete Darstellung von Zeichen, sondern folgende Punkte: Display an/aus Cursor an/aus Blinken an/aus Es handelt sich ebenfalls um eine Konfiguration, die jedoch von den Grundeinstellungen separat betrachtet wird. Dazu bedienen wir uns ebenfalls eines Kommandos. #define LCD_DISPLAYCONTROL 0b // 0x08 Diese Bitkombination (der Hex-Wert steht als Kommentar dahinter) entspricht genau der, aus der Tabelle. Jetzt werden die Steuerbits ebenfalls als Definitionen wie schon beim Funktionsaufruf - festgelegt: #define LCD_DISPON #define LCD_DISPOFF #define LCD_CURSORON #define LCD_CURSOROFF #define LCD_BLINKON #define LCD_BLINKOFF 0b // 0x04 0b // 0x00 0b // 0x02 0b // 0x00 0b // 0x01 0b // 0x00 Ein möglicher Aufruf könnte wie folgt aussehen: Funktionsaufruf Argumente cmd(lcd_displaycontrol LCD_DISPON LCD_BLINKON); Es wird das Display eingeschaltet (sonst sieht man nämlich bei der späteren Textausgabe nicht viel) und der blinkende Cursor angezeigt. Ich wollte Dir ja noch die komplette Tabelle mit den Bedeutungen der Steuerbits liefern. Hier ist sie: Arduino LC-Display-Ansteuerung Seite 11

12 Tabelle der Steuerbits Steuerbit 0 1 I/D Cursorposition dekrementieren Cursorposition inkrementieren S Displayinhalt fest Displayinhalt weiterschieben D Display aus Display an C Cursor aus Cursor an B Cursor fest Cursor blinkt S/C Cursor bewegen Displayinhalt verschieben R/L Nach links schieben Nach rechts schieben DL 4-Bit Modus 8-Bit Modus N 1-zeiliges Display 2/4-zeiliges Display F 5x7 Font 5x10 Font BF Annahme von Kommandos Beschäftigt Die letzte Zeile dient nur dem Lesen von Statusinformationen. Arduino LC-Display-Ansteuerung Seite 12

13 LCD-Timing Bevor wir jetzt in Kürze zur Darstellung von richtigen Textinhalten auf dem LC-Display kommen, müssen wir noch ein paar äußerst wichtige Dinge ansprechen. Ein Treiberbaustein empfängt Daten bzw. Steuersignale in zeitlicher Abfolge. Es existieren unterschiedliche zeitliche Aspekte, die ebenfalls im Datenblatt vermerkt sind und ohne die unbedingte Einhaltung läuft rein Garnichts! Initialisierung Die Initialisierung des Displays muss nach einem bestimmten Ritus erfolgen. Da wir unser Display nur im 4-Bit Modus betreiben, ist die Seite 46 / Figure 24 sicherlich einen Blick wert. Hier eine kurze Zusammenfassung: Power on Min. 40ms warten Warten, bis min. V CC = 4.5 V erreicht sind. Senden von 0x03 Min. 40ms warten 1. Durchlauf Senden von 0x03 Min. 150µs warten 2. Durchlauf Senden von 0x03 Min. 150µs warten Senden von 0x02 3. Durchlauf Von mir sicherheitshalber eingefügt Endgültiges Setzen auf 4-Bit Mode Die Abarbeitung eines einzelnen Befehls nimmt schon etwas Zeit in Anspruch und erfolgt nicht ohne Rechenzeit. Im Datenblatt auf Seite 24 / Tabelle 6 findest Du in der rechten Spalte Informationen über die Ausführungszeiten, die sich bis auf die ersten beiden so um ca. 37µs bewegen. Aus diesem Grund ist es notwendig, mindestens diese angegebene Zeit als Wartezeit Arduino LC-Display-Ansteuerung Seite 13

14 (Delay) im Sketch zu hinterlegen. Du musst dem Treiber die Möglichkeit geben, seinen Befehl auszuführen bzw. abzuarbeiten. Enable-Impuls Nach der Übertragung eines Befehls - sei es ein Kommando oder ein Zeichen - an den Treiber, muss ein sogenannter Enable-Impuls hinten angehängt werden. Er dient quasi als Abschlusskennung und muss in Form eines LOW-HIGH-LOW Impulses einer bestimmten Länge erfolgen. Details dazu stehen im Datenblatt auf Seite 49 / Figure 25. Dort wird eine Impulsdauer von mindesten 450ns vorgeschrieben. Den muss ich also hinten an die Datenübertragung anhängen, richtig!? Damit liegst Du richtig, doch das kann ja nicht auf dem Datenbus erfolgen, denn ein Impuls bezieht sich eigentlich immer nur auf eine einzelne Signalleitung. Zu diesem Zweck gibt es die Enable-Leitung, die mit E gekennzeichnet ist. Dort muss der besagte Impuls mit der angegebenen Dauer abgesetzt werden. min. 450ns Jetzt wird es langsam ernst, denn die Umsetzung des bisher angesprochenen steht ins Haus. Wir wollen eine Klasse programmieren, die es uns ermöglicht, alles das einzubauen, was wir gelernt haben. Arduino LC-Display-Ansteuerung Seite 14

15 Programmierung der LCD-Klasse Die Programmierung ist für denjenigen vielleicht schon etwas gewöhnungsbedürftig, der noch nie etwas mit objektorientierter Programmierung am Hut hatte. Doch ich werde wie immer Schritt für Schritt vorgehen, damit nach Möglichkeit niemand auf der Strecke bleibt. Die Grundlagen der objektorientierten Programmierung bzw. die Erstellung einer Klasse für eine Bibliothek (auch Library genannt), findest Du in meinem Buch erstmalig im Projekt 10 (Seite 315), wenn es um den elektronischen Würfel geht. Für dieses Tutorial fasse ich das jedoch noch einmal kurz zusammen. Um eine Klasse in C++ zu erstellen, werden in der Regel zwei programmtechnische Konstrukte benötigt: Header-Datei (Dateiendung.h) Klassen-Datei (Dateiendung.cpp) Die Header-Datei beinhaltet lediglich sogenannte Prototyp-Informationen und keinen ausformulierten Code. Salopp ausgedrückt, ist das quasi eine Vorankündigung an den Compiler, damit er weiß, was auf ihn zukommt. In die Klassen-Datei wird dann der komplette ausformulierte Code gepackt, der benötigt wird. Ziemlich weit hergeholt meinst Du!? Kann ich verstehen, denn das erste Mal ging es mir nicht anders! Aber keine Sorge, denn wir werden das schon schaffen hab ich ja auch Zuerst habe ich mir einmal Gedanken über den Namen der Klasse gemacht, der natürlich in irgendeiner Weise schon sprechend sein sollte, damit jeder sofort weiß, worum es denn geht. Die mit der Arduino-Entwicklungsumgebung mitgelieferte Library zur Ansteuerung des LCD nennt sich ja LiquidCrystal. Also habe ich mich für LCDisp entschieden. Du kannst natürlich jeden beliebigen Namen nehmen, solange er nicht mit schon vorhandenen kollidiert. Das dürfte aber nicht allzu schwierig sein. Meine beiden Dateien lauten demnach: LCDisp.h LCDisp.cpp Das wäre also schon mal geschafft. Um das Anschließen des LC-Displays ein wenig flexibel zu gestalten, verwenden wir innerhalb der Klasse Variablen, die in diesem Kontext Attribute bzw. Felder genannt werden, um die gewünschten Werte der Anschlusspins zu übergeben. Für dieses Tutorial beschreibe ich der Einfachheit halber ja den 4-Bit Modus und ein LC-Display mit 2 Zeilen. Das wird also intern Code mäßig fest verdrahtet. Hast Du das Prinzip dann verstanden und das ist meine Absicht kannst Du alles nach eigenen Wünschen anpassen bzw. erweitern. Die hier vorgestellte Programmierung legt den Grundstein zum Verständnis der LCD- Ansteuerung. Alles Weitere kommt dann von Dir. Arduino LC-Display-Ansteuerung Seite 15

16 Die Klasse, die wir gleich programmieren dient als Schablone zur Erstellung eines LCD-Objektes, was durch die Instanziierung erfolgt (Siehe Buch Seite 335, 2. Abschnitt). Durch die Instanziierung wird aus der Klasse ein Objekt, wobei implizit der sogenannte Konstruktor aufgerufen wird, um das Objekt erstmalig zu initialisieren (Siehe Buch Seite 325). Hier siehst Du den Konstruktor: Zu 1: Übergabe der Konstruktorparameter an die internen Felder. Zu 2: Die Pins rs und en als Ausgänge programmieren. Zu 3: Die Pins des Datenbusses D4 bis D7 werden ebenfalls als Ausgänge programmiert. Zu 4: Hier wird die LCDInit-Methode aufgerufen, um das Display zu initialisieren. Darauf kommen wir gleich noch zu sprechen. Arduino LC-Display-Ansteuerung Seite 16

17 Ich habe da schon noch so meine Zweifel!? Was bedeutet der Datentyp uint8_t und wo wurden die Feldvariablen deklariert? Ok, Ardus! Der Datentyp uint8_t hat in irgendeiner Weise mit dem Datentyp int zu tun, denn das int kommt ja irgendwie darin vor. Ich muss zugeben, dass die Namenskonvention schon kryptisch anmutet, doch nehmen wir diesen Datentyp einmal auseinander. Ich habe blaue Markierungen über bzw. unter der zu erläuternden Stelle im Namen gesetzt. u : unsigned 8 : Datenbreite = 8 Bits uint8_t int : Integer _t : Typ-Extension Der ANSI-Standard für die C-Programmierung hat einige neue Datentypen aufgenommen, damit die Portabilität zu anderen Plattformen erhöht wird. Dazu gehört auch der genannte Datentyp uint8_t. Nähere Informationen findest Du unter Natürlich hätten wir auch den reinen Datentyp int verwenden können, doch dieser erstreckt sich ebenfalls in den negativen Bereich und hat zusätzlich einen viel größeren Wertebereich, der an dieser Stelle etwas oversized ist. Arduino LC-Display-Ansteuerung Seite 17

18 Kommen wir jetzt zur schon erwähnten Initialisierungsmethode LCDInit. Im Abschnitt über das LCD-Timing habe ich diese Prozedur schon angesprochen. Falls noch etwas unklar sein sollte, dann schaue dort noch einmal nach. Die beiden markierten Punkte 1 und 2 möchte ich dennoch kurz ansprechen, obwohl ich sie schon erwähnt hatte. Zu 1: An dieser Stelle wird die LCD-Funktion LCD_FUNCTIONCALL aufgerufen. Die einzelnen Argumente habe ich in einem separaten Feld functionmode ausgelagert, das dann in der darauffolgenden Zeile zusammen mit dem Funktionsaufruf der cmd-methode übergeben wird. Zu 2: Auch hier werden, wie unter zu 1, die Argumente für den LCD_DISPLAYCONTROL-Aufruf in dem Feld displaymode ausgelagert und in der darauffolgenden Zeile zusammengefügt. Arduino LC-Display-Ansteuerung Seite 18

19 Kommen wir jetzt zu zwei Methoden, die für das Versenden der Daten an das Display verantwortlich sind. cmd send2lcd Die cmd-methode sorgt dafür, dass die ankommenden 8-Bit Daten in 2x4-Bit Daten gesplittet werden. Wir haben uns ja wie schon mehrfach erwähnt für den 4-Bit Modus entschieden. Wie machen wir aber auf 8-Bit die erforderlichen 2x4-Bit Daten? Wir bedienen uns dazu der umfangreichen Möglichkeiten der Bitmanipulation. Schiebeoperator >> Bitweise UND-Verknüpfung Da zuerst die 4 höherwertigen Bits übertragen werden müssen, wenden wir die Schiebeoperation >> (Schieben nach rechts) an. Wir nehmen als Beispiel wieder die Bitkombination, die ich schon eingangs gezeigt habe. Arduino LC-Display-Ansteuerung Seite 19

20 Diese Operation wird durch den Befehl send2lcd(c >> 4, LOW); // Zuerst die obersten 4 Bits ermöglicht. Der in c enthaltene Wert wird um 4 Binärstellen nach rechts verschoben und dann der send2lcd-methode übergeben. Lasse Dich nicht durch den 2. Parameter verunsichern, der hier mit LOW angegeben ist. Es teilt der Methode lediglich mit, dass jetzt ein Kommando zu versenden ist und kein sichtbares Zeichen zur Anzeige kommen soll. Schaue Dir dazu noch einmal die Steuerleitung RS an. Sie benötigt einen LOW-Pegel, damit die Daten als Kommando interpretiert werden. Du siehst es gleich besser, wenn wir die send2lcd-methode genauer unter die Lupe nehmen. Jetzt sind also die untersten 4-Bits an der Reihe, um auf die Reise zu gehen. Dazu wird der bitweise UND-Operator verwendet. Diese Operation wird durch den Befehl send2lcd(c & 0x0f, LOW); // Danach die untersten 4 Bits ermöglicht. Arduino LC-Display-Ansteuerung Seite 20

21 Kommen wir jetzt zur send2lcd-methode. Dort erfolgt ja das eigentlich versenden an den LCD- Treiber. Hier werden die von der cmd-methode geschickten Werte an die digitalen Pins D4 bis D7 versendet. Zuvor muss jedoch der digitale Pin RS mit LOW-Pegel versehen werde. Das erfolgte ja durch die Übergabe des 2. Argumentes der cmd-methode. Nun muss jedes einzelne Bit separiert und dem entsprechenden Pin zugeführt werden. Das geschieht wieder mittels binärer Bitoperatoren. Diesmal arbeiten Schiebeoperator >> und binärer UND-Operator Hand in Hand. Sehen wir uns dazu einfach das Versenden der untersten 4-Bits an. Diese Bitkombination lautet ja: Wir müssen das an Position 0 stehende Bit an den digitalen Pin 4 versenden. Dazu wird eine Technik verwendet, bei der das an der LSB-Position stehende Bit ausgewertet wird. LSB bedeutet Least Significant Bit und steht für das niederwertigste Bit. Es werden nach der Reihe alle benötigten Bits über die Schiebeoperation an die LSB-Position verschoben und dort mit dem bitweisen UND-Operator 0x01 abgefragt, der als eine Art Maske arbeitet. Das erste Bit steht natürlich schon an der richtigen LSB-Position und braucht nicht erst dorthin verschoben werden. Deshalb steht auch die Ziffer 0 hinter dem Schiebeoperator. Arduino LC-Display-Ansteuerung Seite 21

22 Das Bit an Position 1 muss jetzt um eine Position nach rechts manövriert werden. Das erfolgt über die Befehlszeile So geht das Spiel weiter, bis alle 4 Bits versendet wurden. Abschließend erfolgt noch der notwendige Aufruf der Enable-Methode, über die wir auch schon ein paar Worte verloren haben: Eigene Methoden zur Steuerung erstellen LCD-Inhalt löschen Bevor Du etwas in Deinem LC-Display anzeigen möchtest, macht es manchmal Sinn, das vorherige zu löschen, um Platz für Neues zu schaffen. Wie aber löschen wir den Inhalt? Nun, es handelt sich sicherlich um ein Kommando und nicht um eine Textausgabe. Wenn Du einen Blick in die Befehlssatztabelle riskierst, dann findest Du direkt in der ersten Zeile die Lösung. Dort steht nämlich Displayinhalt löschen. Der dazu notwendige Code lautet 0x01. Damit dies aber alles ein wenig sprechender wird, legen wir uns wieder eine Definition an. #define LCD_CLEAR 0b // 0x01 Den Aufruf verpacken wir das recht komfortabel in eine eigens dafür erstellte Methode. Abschließend warten wir 2ms, da diese Operation lt. Datenblatt ziemlich lange dauert. Es werden mindestens 1.52ms dafür veranschlagt. Wir sind also mit dem verwendeten Wert auf der sicheren Seite. Arduino LC-Display-Ansteuerung Seite 22

23 Cursor in Home-Position Du kannst den Cursor ohne den Inhalt zu löschen in die HOME-Position bringen. Der Code dazu lautet: #define LCD_HOME 0b // 0x02 Die Methode dazu lautet: Auch hier muss nach dem Absetzen des Kommandos lt. Datenblatt die Zeit von mindestens 1.52ms verstrichen sein, bevor es weiter gehen kann. Auf diese Weise kannst Du Dir alle erdenklichen Funktionalitäten selbst zusammenstellen. Das war eigentlich schon fast alles. Stimmt, denn wir haben ja noch gar keinen Text an das LC-Display verschickt. Wie funktioniert das denn? Du musst in Deinem Haupt-Sketch lediglich die Klasse LCDisp bekannt machen, ein Display- Objekt erstellen und die print-methode zur Ausgabe aufrufen. Ich zeige Dir, was ich meine: Arduino LC-Display-Ansteuerung Seite 23

24 Hier ist doch etwas faul!? Soweit ich mich entsinne, haben wir die print-methode nicht in der LCDisp-Klasse implementiert! Wie können wir sie dann zur Ausgabe eines Textes nutzen??? Ok, Ardus! Das habe ich mir für den Schluss aufgehoben, denn jetzt wird s noch mal richtig gut. Dazu müssen wir ein wenig mehr über die objektorientierte Programmierung in Erfahrung bringen. Wir machen uns den Umstand zu Nutze, dass wir Funktionalitäten einer bestehenden Klasse in unsere Klasse einbinden können. Das Stichwort hierzu lautet Vererbung. Doch ich zeige Dir hier zuerst einmal die Header-Datei LCDisp.h, denn dann kann ich dort mit meinen Erläuterungen einhaken. Zuerst der Bereich, der die Definitionen beinhaltet: Arduino LC-Display-Ansteuerung Seite 24

25 Jetzt die eigentliche Code-Implementierung: Na, höre ich da schon Dein Stöhnen!? Da gibt es mindestens 2 Stellen, die Dir den Schlaf rauben könnten richtig? Ich habe sie sicherheitshalber schon einmal farblich hervorgehoben und nummeriert. Zu 1: Hier wenden wir die Technik bzw. das Paradigma mit der Bezeichnung Vererbung an. Unsere LCDisp-Klasse beerbt die Funktionalität der Print-Klasse. Oder anders herum vererbt die Print- Klasse ihre Funktionalität der LCDisp-Klasse. Print Basisklasse (Elternklasse) LCDisp abgeleitete Klasse (Kindklasse) Arduino LC-Display-Ansteuerung Seite 25

26 Kindklassen erben die Attribute (Felder) bzw. Methoden ihrer Elternklasse. Sie können weitere Attribute bzw. Methoden hinzufügen oder bestehende Methoden modifizieren. Aber warum machen wir das Ganze? Nun, die Print-Klasse enthält ein paar nützliche Methoden, derer wir uns bedienen können. Du hast gesehen, dass wir die print-methode aufgerufen haben, ohne, dass sie ein Mitglied unserer LCDisp-Klasse ist. Der Verdacht liegt nahe, dass sie ein Mitglied der Print-Klasse ist. Und so ist es auch. Die print-methode wird immer dazu verwendet, Daten auszugeben. Sie hat aber die Besonderheit, dass sie ihrerseits die write-methode aufruft, die für die eigentliche Datenausgabe verantwortlich ist. print-methode Aufruf write-methode Die write-methode wird zur einfachen Zeichenausgabe (8-Bit) verwendet. Du siehst hier den impliziten Aufruf der write-methode, wenn die print-methode von außen explizit aufgerufen wird. Print-Klasse print("hallo") print-methode write-methode Arduino LC-Display-Ansteuerung Seite 26

27 Jetzt erbt unsere LCDisp-Klasse jedoch von der Print-Klasse und übernimmt wie schon angesprochen alle Mitglieder (Attribute + Methoden) dieser Klasse. Dazu gehören natürlich auch u.a. die print- bzw. write-methode. Zu 2: Was würde aber passieren, wenn wir in unserer LCDisp-Klasse ebenfalls eine write-methode implementierten? Sie würde die eigentliche write-methode überschreiben und quasi ersetzen. Das machen wir mit der folgenden Zeile in der Header-Datei: Das Schlüsselwort virtual ist hier nicht unbedingt notwendig, macht die Sache aber ggf. etwas übersichtlicher. Ich zeige Dir gleich die eigentliche write-methode der Print-Klasse, die aber zwingend mit virtual deklariert sein muss. Auf diese Weise können wir jetzt unsere eigene write-methode schreiben, die durch die print- Methode aufgerufen wird. Klingt irgendwie noch ein bisschen verwirrend oder!? Schaue Dir dazu am besten die folgende Grafik an. abgeleitete Klasse (Kindklasse) LCDisp-Klasse Basisklasse (Elternklasse) Print-Klasse mylcd.print("hallo") print-methode write-methode write-methode Die print-methode bleibt unverändert und steht der LCDisp-Klasse durch Vererbung zur Verfügung. Durch das Überschreiben der write-methode (muss die gleiche Signatur vorweisen), wird diese jetzt durch die print-methode implizit aufgerufen. Arduino LC-Display-Ansteuerung Seite 27

28 Wenn wir uns die Header-Datei der Print-Klasse unter: arduino- 1.0\hardware\arduino\cores\arduino\Print.h einmal anschauen, dann sehen wir die Definition von drei write-methoden: In der korrespondierenden Print.cpp Datei finden wir jedoch nur eine einzige Kodierung der write-methode. Der entsprechende Kommentar gibt uns die Bestätigung, dass diese Methode überschrieben werden kann. Verantwortlich dafür ist das Schlüsselwort virtual, das Du in der Headerdatei findest. Wir verwenden übrigens bei der Vererbung das Schlüsselwort public, damit die erbende Klasse (LCDisp) die gleichen Rechte besitzt, wie die vererbende Klasse (Print). Abschließende Worte Ich habe absichtlich nicht den kompletten Funktionsumfang der bestehenden LiquidCrystal- Library umgesetzt. Versuche Dich selbst einmal daran, denn nur auf diese Weise kannst Du etwas lernen. Natürlich kannst Du Dich ggf. an der vorhandenen Library orientieren, aber nicht, um dort Code 1:1 zu übernehmen. Das würde zwar funktionieren, doch Du betrügst Dich und andere. Finde Deinen eigenen Weg. Viel Spaß dabei... Arduino LC-Display-Ansteuerung Seite 28

29 Kompletter Sketch-Code Abschließend möchte ich Dir noch den kompletten Sketch-Code präsentieren. Header-Datei #ifndef LCDisp_h #define LCDisp_h #include <Arduino.h> // LCD-Kommandos definieren #define LCD_CLEAR #define LCD_HOME #define LCD_FUNCTIONCALL 0b // 0x01 0b // 0x02 0b // 0x20 #define LCD_DISPLAYCONTROL 0b // 0x08 // LCD-Funktionen (Argumente für LCD_FUNCTIONCALL) #define LCD_4BITMODE #define LCD_8BITMODE #define LCD_1LINE #define LCD_2LINE #define LCD_5x7FONT #define LCD_5x10FONT 0b // 0x00 0b // 0x10 0b // 0x00 0b // 0x08 0b // 0x00 0b // 0x04 // LCD-Displaycontrol (Argumente für LCD_DISPLAYCONTROL) #define LCD_DISPON #define LCD_DISPOFF #define LCD_CURSORON #define LCD_CURSOROFF #define LCD_BLINKON #define LCD_BLINKOFF 0b // 0x04 0b // 0x00 0b // 0x02 0b // 0x00 0b // 0x01 0b // 0x00 class LCDisp : public Print{ public: // Konstructor für den 4-Bit Modus // Reihenfolge: R/S, E, DB4, DB5, DB6, DB7 LCDisp(uint8_t rs, uint8_t en, Arduino LC-Display-Ansteuerung Seite 29

30 uint8_t db4, uint8_t db5, uint8_t db6, uint8_t db7); void cls(); // LCD-Anzeige löschen void home(); // Cursor nach HOME virtual size_t write(uint8_t); // Wird von print der Print-Klasse aufgerufen private: uint8_t rspin; uint8_t enpin; // RS-Anschluss-Pin // Enable-Anschluss-Pn uint8_t datapin4; // Datenbus D4 uint8_t datapin5; // Datenbus D5 uint8_t datapin6; // Datenbus D6 uint8_t datapin7; // Datenbus D7 uint8_t displaymode; // Argumente für LCD_DISPLAYCONTROL uint8_t functionmode; // Argumante für LCD_FUNCTIONCALL void send2lcd(uint8_t, uint8_t); // Sendet daten zum Display void sendenable(); void LCDInit(); void cmd(uint8_t); // Sendet Enable-Signal // Initialisiert LC-Display // Kommando-Methode }; #endif Klassen-Datei #include "LCDisp.h" // Konstruktor LCDisp::LCDisp(uint8_t rs, uint8_t en, uint8_t db4, uint8_t db5, uint8_t db6, uint8_t db7){ rspin = rs; enpin = en; datapin4 = db4; datapin5 = db5; datapin6 = db6; datapin7 = db7; pinmode(rspin, OUTPUT); // Registerauswahl: 0 = Befehlsregister, 1 = Datenregister pinmode(enpin, OUTPUT); // Enable Arduino LC-Display-Ansteuerung Seite 30

31 pinmode(datapin4, OUTPUT); pinmode(datapin5, OUTPUT); pinmode(datapin6, OUTPUT); pinmode(datapin7, OUTPUT); LCDInit(); // LC-Display initialisieren } void LCDisp::cmd(uint8_t c){ send2lcd(c >> 4, LOW); // Zuerst die obersten 4 Bits send2lcd(c & 0x0f, LOW); // Danach die untersten 4 Bits delaymicroseconds(2000); } void LCDisp::send2LCD(uint8_t s, uint8_t mode){ digitalwrite(rspin, mode); // Bei einem Kommando muss R/S-Register auf LOW gesetzt werden digitalwrite(datapin4, (s >> 0) & 0x01); digitalwrite(datapin5, (s >> 1) & 0x01); digitalwrite(datapin6, (s >> 2) & 0x01); digitalwrite(datapin7, (s >> 3) & 0x01); sendenable(); } // Überschreibt die write-methode der Print-Klasse size_t LCDisp::write(uint8_t text){ send2lcd(text >> 4, HIGH); // Zuerst die obersten 4 Bits send2lcd(text & 0x0f, HIGH); // Danach die untersten 4 Bits delaymicroseconds(2000); } void LCDisp::sendEnable(){ // Generierung eines LOW-HIGH-LOW Impulses digitalwrite(enpin, LOW); delaymicroseconds(1); Arduino LC-Display-Ansteuerung Seite 31

32 digitalwrite(enpin, HIGH); delaymicroseconds(1); Seite 49) // Hier 1000ns: Der Enable-Impuls muss > 450ns betragen (Datenblatt digitalwrite(enpin, LOW); delaymicroseconds(100); (Datenblatt Seite 24) // Hier 100us: Ein Kommando benötigt 37us für die Abarbeitung } void LCDisp::LCDInit(){ digitalwrite(rspin, LOW); // Auf LOW setzen, damit Kommandos entegegen genommen werden können digitalwrite(enpin, LOW); // Auf LOW setzen, damit Kommandos entegegen genommen werden können delaymicroseconds(50000); // 50 Millisekunden warten, bevor Kommandos gesendet werden können // Siehe HD44780 Datenblatt Seite 46, Abbildung 24 // Mehrfacher Aufruf der Funktion ist notwendig (komisch, nicht!?) // 1. Versuch send2lcd(0x03, LOW); delaymicroseconds(4500); // Länger wie 4.1ms warten // 2. Versuch send2lcd(0x03, LOW); delaymicroseconds(150); // Länger wie 150us warten // 3. Versuch send2lcd(0x03, LOW); delaymicroseconds(150); // Sicherheitshalber kurz warten. Steht nicht im Datenblatt!!! // Endgültiges Setzen auf 4-Bit send2lcd(0x02, LOW); // Initialer Functionmode functionmode = LCD_4BITMODE LCD_2LINE LCD_5x7FONT; cmd(lcd_functioncall functionmode); // Initialer Displaymode displaymode = LCD_DISPON LCD_BLINKON; Arduino LC-Display-Ansteuerung Seite 32

33 cmd(lcd_displaycontrol displaymode ); } void LCDisp::cls(){ cmd(lcd_clear); delaymicroseconds(2000); } void LCDisp::home(){ } cmd(lcd_home); delaymicroseconds(2000); Sketch-Code #include "LCDisp.h" void setup(){ LCDisp mylcd(12, 11, 5, 4, 3, 2); // Initialisierung mylcd.cls(); mylcd.print("arduino..."); // LCD Inhalt löschen // Anzeige } void loop(){/* leer */ } Arduino LC-Display-Ansteuerung Seite 33

Starten Sie die Arduino IDE und geben Sie den folgenden Programmcode ein:

Starten Sie die Arduino IDE und geben Sie den folgenden Programmcode ein: Blinken Starten Sie die Arduino IDE und geben Sie den folgenden Programmcode ein: // Projekt 1 - LED Blinker int ledpin = 13; void setup() pinmode(ledpin, OUTPUT); void loop() digitalwrite(ledpin, HIGH);

Mehr

4 Vererbung, Polymorphie

4 Vererbung, Polymorphie 4 Vererbung, Polymorphie Jörn Loviscach Versionsstand: 21. März 2014, 22:57 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen beim Ansehen der Videos: http://www.j3l7h.de/videos.html This work

Mehr

Repetitorium Informatik (Java)

Repetitorium Informatik (Java) Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen

Mehr

Projekt Nr. 15: Einen elektronischen Würfel erstellen

Projekt Nr. 15: Einen elektronischen Würfel erstellen Nun wissen Sie, wie Sie Zufallszahlen erzeugen können. Als Nächstes wollen wir diese neuen Kenntnisse gleich in die Tat umsetzen, indem wir einen elektronischen Würfel konstruieren. Projekt Nr. 15: Einen

Mehr

Erste Schritte. Das Arduino-Board. Ihr Fundino-Board. Programmieren für Ingenieure Sommer 2015. Andreas Zeller, Universität des Saarlandes

Erste Schritte. Das Arduino-Board. Ihr Fundino-Board. Programmieren für Ingenieure Sommer 2015. Andreas Zeller, Universität des Saarlandes Erste Schritte Programmieren für Ingenieure Sommer 2015 Andreas Zeller, Universität des Saarlandes Das Arduino-Board Ihr Fundino-Board Anschluss über USB Anschluss über USB Programmierumgebung Download

Mehr

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden Kapitel 8 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Methoden Überladen von Methoden Der this-zeiger Konstruktoren Vererbung WS 07/08

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

Mehr

Objektorientierte Programmierung mit C++ Zusammenfassung der wichtigsten Topics rund um die objektorientierte Programmierung mit C++11

Objektorientierte Programmierung mit C++ Zusammenfassung der wichtigsten Topics rund um die objektorientierte Programmierung mit C++11 Objektorientierte Programmierung mit C++ Zusammenfassung der wichtigsten Topics rund um die objektorientierte Programmierung mit C++11 Wozu objektorientiertes Programmieren? Die Welt besteht für den Menschen

Mehr

Der I²C-Bus. Vorstellung des Inter-Integrated Circuit -Bus. Aufbau und Funktionsweise. Beispiel PortExpander am Arduino

Der I²C-Bus. Vorstellung des Inter-Integrated Circuit -Bus. Aufbau und Funktionsweise. Beispiel PortExpander am Arduino Der I²C-Bus Vorstellung des Inter-Integrated Circuit -Bus Aufbau und Funktionsweise Beispiel PortExpander am Arduino Weitere Anwendungsmöglichkeiten Was ist der I²C-Bus entwickelt von Philips Anfang der

Mehr

Grundlagen. Kapitel 1

Grundlagen. Kapitel 1 Grundlagen Dieses Kapitel umfasst grundlegende Fragen und Aufgaben zur Erstellung von C++-Programmen. Hierzu zählen auch das Inkludieren von Header-Dateien Eine Header-Datei beinhaltet Informationen, die

Mehr

Die Programmiersprache C

Die Programmiersprache C Die Programmiersprache C höhere Programmiersprache (mit einigen Assembler-ähnlichen Konstrukten) gut verständliche Kommandos muss von Compiler in maschinenlesbaren Code (Binärdatei) übersetzt werden universell,

Mehr

ARDUINO Übung. Inhalt:

ARDUINO Übung. Inhalt: ARDUINO Übung Diese Übung ermöglicht einen kurzen Einblick in die Welt der Mikrokontrollerprogrammierung. Es sollen im Folgenden die Anleitungen befolgt werden und die entsprechenden elektrotechnischen

Mehr

Überschreiben von Methoden

Überschreiben von Methoden Vergleich der DoME Realisierungen: Methode ausgeben Version 1 (ohne Vererbung): Anzeigen aller Informationen CD: A Swingin Affair (64 Min)* Frank Sinatra Titelanzahl: 16 Mein Lieblingsalbum von Sinatra

Mehr

DOTMATRIXDISPLAYS 2x16

DOTMATRIXDISPLAYS 2x16 2.98 DOTMATRIXDISPLAYS 2x16 LCD DOTMATRIXDISPLAYS TECHNISCHE DATEN * INTEGRIERTER KONTROLLER HD44780 ODER KOMPATIBEL * EINGANG 4- ODER 8-BIT DATENBUS, 3 STEUERLEITUNGEN (R/W, E, RS) * ASCII-ZEICHENSATZ

Mehr

Folge 18 - Vererbung

Folge 18 - Vererbung Workshop Folge 18 - Vererbung 18.1 Ein einfacher Fall der Vererbung Schritt 1 - Vorbereitungen Besorgen Sie sich - vielleicht aus einer der Übungen der Folge 17 - ein fertiges und lauffähiges Listenprojekt,

Mehr

Java, OO und UML Fortsetzung

Java, OO und UML Fortsetzung Java, OO und UML Fortsetzung Das Objektorientierte Paradigma OO bildet keine geschlossene theoretisch abgegrenzte Basis (wie z.b. das Relationsmodell relationaler Datenbanken) OO ist eine Sammlung und

Mehr

Prof. W. Henrich Seite 1

Prof. W. Henrich Seite 1 Klasse - ist ein benutzerdefinierter Datentyp (Referenztyp) - hat Datenelemente - hat Methoden - Konstruktor ist spezielle Methode zum Erstellen eines Objektes vom Typ der Klasse (Instanz) - jede Klasse

Mehr

Objektorientierung: Klassen und Objekte

Objektorientierung: Klassen und Objekte Objektorientierung: Klassen und Objekte Klasse: Beschreibung für eine Menge von Objekten Schablone, Bauplan abstrakte Form Objekt: Instanz einer Klasse konkreter Inhalt (Werte) Klassen bestehen aus Attributen

Mehr

GetName(), GetName(), GetGeschlecht() und AelterWerden().

GetName(), GetName(), GetGeschlecht() und AelterWerden(). 11. Vererbung Vererbung ist eine der mächtigsten Funktionalitäten der objektorientierten Programmiersprachen. Man versteht unter Vererbung die Tatsache, dass eine Klasse alle Methoden und Variablen einer

Mehr

Einstieg in die Programmierung mit Visual Basic.NET

Einstieg in die Programmierung mit Visual Basic.NET Einstieg in die Programmierung mit Visual Basic.NET Agenda - Methoden mit Argumenten - Überladen von Methoden - Eigenschaftenprozeduren - Eigenschaftenprozeduren automatisch generieren - Konstruktoren

Mehr

Einen eigenen Arduino-Bootloader brennen Version 1.0 Created 19.03.2012 Erik Bartmann Internet

Einen eigenen Arduino-Bootloader brennen Version 1.0 Created 19.03.2012 Erik Bartmann Internet Scope Einen eigenen Arduino-Bootloader brennen Version 1.0 Created 19.03.2012 Autor Erik Bartmann Internet http://www.erik-bartmann.de Email arduino@erik-bartmann.de Einen eigenen Arduino-Bootloader brennen

Mehr

Objektorientiertes Programmieren für Ingenieure

Objektorientiertes Programmieren für Ingenieure Uwe Probst Objektorientiertes Programmieren für Ingenieure Anwendungen und Beispiele in C++ 18 2 Von C zu C++ 2.2.2 Referenzen und Funktionen Referenzen als Funktionsparameter Liefert eine Funktion einen

Mehr

Haftkünstler auf dem Prüfstand. Online Ergänzung HOLGER FLORIAN BOHN OLGA SPECK THOMAS SPECK

Haftkünstler auf dem Prüfstand. Online Ergänzung HOLGER FLORIAN BOHN OLGA SPECK THOMAS SPECK Haftkünstler auf dem Prüfstand HOLGER FLORIAN BOHN OLGA SPECK THOMAS SPECK Online Ergänzung Bohn et al., 2011 Haftkünstler auf dem Prüfstand Zusatzmaterial 3 1/6 Bauanleitung Insektenzentrifuge Erweiterung:

Mehr

RN-Control ARDUINO Bibliothek ATMEL 32 Version 0.2

RN-Control ARDUINO Bibliothek ATMEL 32 Version 0.2 RN-Control ARDUINO Bibliothek ATMEL 32 Version 0.2 Bernd Klein 23. Mai 2011 Inhaltsverzeichnis 1 ARDUINO - RN-Control Library 3 1.1 Bibliothek RNControl...................... 3 1.2 Einführung............................

Mehr

Grundlagen von Python

Grundlagen von Python Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015 Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können

Mehr

Programmierung mit C Zeiger

Programmierung mit C Zeiger Programmierung mit C Zeiger Zeiger (Pointer)... ist eine Variable, die die Adresse eines Speicherbereichs enthält. Der Speicherbereich kann... kann den Wert einer Variablen enthalten oder... dynamisch

Mehr

Vererbung & Schnittstellen in C#

Vererbung & Schnittstellen in C# Vererbung & Schnittstellen in C# Inhaltsübersicht - Vorüberlegung - Vererbung - Schnittstellenklassen - Zusammenfassung 1 Vorüberlegung Wozu benötigt man Vererbung überhaubt? 1.Um Zeit zu sparen! Verwendung

Mehr

Qt-Projekte mit Visual Studio 2005

Qt-Projekte mit Visual Studio 2005 Qt-Projekte mit Visual Studio 2005 Benötigte Programme: Visual Studio 2005 Vollversion, Microsoft Qt 4 Open Source s. Qt 4-Installationsanleitung Tabelle 1: Benötigte Programme für die Qt-Programmierung

Mehr

MySQL-Befehle. In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben.

MySQL-Befehle. In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben. MySQL-Befehle 1. Einleitung In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben. 2. Arbeiten mit Datenbanken 2.1 Datenbank anlegen Eine Datenbank kann man wie folgt

Mehr

5.4 Klassen und Objekte

5.4 Klassen und Objekte 5.4 Klassen und Objekte Zusammenfassung: Projekt Figuren und Zeichner Figuren stellt Basisklassen für geometrische Figuren zur Verfügung Zeichner bietet eine übergeordnete Klasse Zeichner, welche die Dienstleistungen

Mehr

einfache PIC-Übungsprogramme

einfache PIC-Übungsprogramme einfache PIC-Übungsprogramme Schreibe in MPLAB für das PIC-Übungsboard 01 mit dem PIC16F88 folgendes Programm, assembliere und dokumentiere dieses, schreibe es anschließend mittels dem Programmiergerät

Mehr

Handbuch Groupware - Mailserver

Handbuch Groupware - Mailserver Handbuch Inhaltsverzeichnis 1. Einführung...3 2. Ordnerliste...3 2.1 E-Mail...3 2.2 Kalender...3 2.3 Kontakte...3 2.4 Dokumente...3 2.5 Aufgaben...3 2.6 Notizen...3 2.7 Gelöschte Objekte...3 3. Menüleiste...4

Mehr

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 4

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 4 Fakultät Verkehrswissenschaften Friedrich List, Professur für Verkehrsbetriebslehre und Logistik Modul Entscheidungsunterstützung in der Logistik Einführung in die Programmierung mit C++ Übung 4 SS 2016

Mehr

Übungsaufgaben: 1. Objektorientierte Programmierung - Teil 1

Übungsaufgaben: 1. Objektorientierte Programmierung - Teil 1 Übungsaufgaben: 1. Objektorientierte Programmierung - Teil 1 1. Das Objekt Bruch mit einem Standardkonstruktor (initialisieren mit 0), einem allgemeinen Konstruktor (Zähler und Nenner können beliebig vorgegeben

Mehr

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Java Kurs für Anfänger Einheit 4 Klassen und Objekte Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse

Mehr

Deklarationen in C. Prof. Dr. Margarita Esponda

Deklarationen in C. Prof. Dr. Margarita Esponda Deklarationen in C 1 Deklarationen Deklarationen spielen eine zentrale Rolle in der C-Programmiersprache. Deklarationen Variablen Funktionen Die Deklarationen von Variablen und Funktionen haben viele Gemeinsamkeiten.

Mehr

Palm conduit Konfigurations-Guide

Palm conduit Konfigurations-Guide Palm conduit Konfigurations-Guide Die Conduits für Termine, Kontakte und Aufgaben werden im Menü Benutzerdefiniert des HotSync-Managers konfiguriert. Bitte wählen Sie eins der drei SLOX Conduits aus und

Mehr

Software-Projekt: Mensch ärgere Dich nicht. Dokumentation Softwareprojekt: Mensch ärgere Dich nicht

Software-Projekt: Mensch ärgere Dich nicht. Dokumentation Softwareprojekt: Mensch ärgere Dich nicht Dokumentation Softwareprojekt: Mensch ärgere Dich nicht Das Programm Mensch ärgere Dich nicht ermöglicht das Spielen des gleichnamigen Spieles über Netzwerke. Jeder Spieler verfügt dabei über einen Clienten,

Mehr

Eine Einführung in C-Funktionen

Eine Einführung in C-Funktionen Eine Einführung in C-Funktionen CGK-Proseminar 2014 Philip Gawehn 04.07.2014, Hamburg Inhaltsverzeichnis 1 Einleitung 2 2 Grundlagen 2 2.1 Der Aufbau einer Funktion....................... 2 2.2 Schlüsselwörter.............................

Mehr

Einrichten eines News-Systems in Typo3

Einrichten eines News-Systems in Typo3 Einrichten eines News-Systems in Typo3 Generelles: tt_news ist eine der beliebtesten Erweiterungen für Typo3 und wir bereits auf vielen Sites Vorarlberger Schulen verwendet: Beispiele: http://www.vobs.at/hsl

Mehr

Objektorientierte Programmierung mit Python Polymorphismus und Vererbung. Eltern

Objektorientierte Programmierung mit Python Polymorphismus und Vererbung. Eltern Objektorientierte Programmierung mit Python Polymorphismus und Vererbung Eltern Kind Kind Kind Kind Prinzipien der objektorientierten Programmierung Vererbung Strukturierung von Klassen. Oberbegriffe beschreiben

Mehr

Kommunikation HOST TMC420 Controller

Kommunikation HOST TMC420 Controller Kommunikation HOST TMC420 Controller Sofern möglich, sollte zusätzlich neben der seriellen Kommunikation (RS232 bzw. RS485) ein Signalaustausch tels digitaler E/A erfolgen (24 VDC). Dieses ermöglicht eine

Mehr

Zusatzinformation zum USB-Flashdrive mit ARM und RS232

Zusatzinformation zum USB-Flashdrive mit ARM und RS232 Zusatzinformation zum USB-Flashdrive mit ARM und RS232 1. Belegung der LCD-Schnittstelle an JP3: REGISTER_SELECT READ_WRITE ENABLE DISPLAY_D0 DISPLAY_D1 DISPLAY_D2 DISPLAY_D3 DISPLAY_D4 DISPLAY_D5 DISPLAY_D6

Mehr

DL100 Technisches Datenblatt - RS232 zu LCD-Konverter, Anzeigebaustein via RS232 (Nachfolger des LCDChipRS232)

DL100 Technisches Datenblatt - RS232 zu LCD-Konverter, Anzeigebaustein via RS232 (Nachfolger des LCDChipRS232) DL100 Technisches Datenblatt - RS232 zu LCD-Konverter, Anzeigebaustein via RS232 (Nachfolger des LCDChipRS232) Kurzspezifikationen: * Extrem einfache Ansteuerung von alphanumerischen LCDs mittels eines

Mehr

SimpleOOP Opensource OOP Plugin

SimpleOOP Opensource OOP Plugin SimpleOOP Opensource OOP Plugin Einführung SimpleOOP bringt PureBasic eine einfache OOP Unterstützung ohne komplizierten Syntax, mit besonderem Wert auf einen sauberen und simplen Code. SimpleOOP ist Opensource

Mehr

Ziel, Inhalt. Programmieren in C++ Wir lernen wie man Funktionen oder Klassen einmal schreibt, so dass sie für verschiedene Datentypen verwendbar sind

Ziel, Inhalt. Programmieren in C++ Wir lernen wie man Funktionen oder Klassen einmal schreibt, so dass sie für verschiedene Datentypen verwendbar sind Templates und Containerklassen Ziel, Inhalt Wir lernen wie man Funktionen oder Klassen einmal schreibt, so dass sie für verschiedene Datentypen verwendbar sind Templates und Containerklassen 1 Ziel, Inhalt

Mehr

C++ - Operatoren. Eigene Klassen mit neuen Funktionen

C++ - Operatoren. Eigene Klassen mit neuen Funktionen C++ - Operatoren Eigene Klassen mit neuen Funktionen Übersicht Klassen bisher Eigene Operatoren definieren 2 Bisher Durch Kapselung, Vererbung und Polymorphy können nun eigene Klassen definiert werden,

Mehr

Methoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only

Methoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only Methoden Wie Konstruktoren und Destruktoren zum Auf- und Abbau von Objekten definiert werden, Wie inline-methoden Methoden,, Zugriffsmethoden und Read-Only Only- Methoden einzusetzen sind, Der this-pointer

Mehr

13 OOP MIT DELPHI. Records und Klassen Ein Vergleich

13 OOP MIT DELPHI. Records und Klassen Ein Vergleich 13 OOP MIT DELPHI Delphi war früher "Object Pascal". Dieser Name impliziert eine Funktionalität, welche in der Welt der Programmierung nicht mehr wegzudenken ist: die objektorientierte Programmierung,

Mehr

Erstellung von Bibliotheken in CoDeSys V3

Erstellung von Bibliotheken in CoDeSys V3 Dokument Version 2.0 3S - Smart Software Solutions GmbH Seite 1 von 10 INHALT 1 EINFÜHRUNG 3 2 BIBLIOTHEKSKONZEPT IM DETAIL 4 2.1 Kategorien von Bibliotheken 4 2.1.1 System 4 2.1.2 Internal 4 2.1.3 Application

Mehr

Qt Programmierung Teil 1 Fenster erstellen by NBBN (http://nbbn.wordpress.com) CrashKurs-Artig. Was brauche ich? -Einige C++ Kenntnisse

Qt Programmierung Teil 1 Fenster erstellen by NBBN (http://nbbn.wordpress.com) CrashKurs-Artig. Was brauche ich? -Einige C++ Kenntnisse Qt Programmierung Teil 1 Fenster erstellen by NBBN (http://nbbn.wordpress.com) CrashKurs-Artig. Was brauche ich? -Einige C++ Kenntnisse Wie man in C++ mit Hilfe von Qt GUI-Anwendungen programmieren kann.

Mehr

Ringlicht-v3 - Frei konfigurierbares Ringlicht mit RS232 Anbindung. Kurzbeschreibung

Ringlicht-v3 - Frei konfigurierbares Ringlicht mit RS232 Anbindung. Kurzbeschreibung Ringlicht-v3 - Frei konfigurierbares Ringlicht mit RS232 Anbindung Kurzbeschreibung Das frei konfigurierbare Ringlicht kann jede beliebige Abfolge an Lichtmustern erzeugen und über einen Triggereingang

Mehr

01. Grundprinzipien der Vererbung

01. Grundprinzipien der Vererbung 01. Grundprinzipien der Vererbung 1.1 Grundidee der Vererbung Bei der Analyse eines Problems (z.b. Baukasten) stellt man beispielsweise fest, dass 67 % an Daten/Funktionen immer vorkommen 25 % an Daten/Funktionen

Mehr

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:

Mehr

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure 7. Objektorientierte Softwareentwicklung/3 Informatik II für Verkehrsingenieure Überblick FOLGENDE BEGRIFFE/PRINZIPIEN SOLLTEN BEKANNT SEIN Objekte Klasse Attribute Fähigkeiten ZIEL DER HEUTIGEN LEHRVERANSTALTUNG

Mehr

Grundlagen der Informatik - 6. Praktikum

Grundlagen der Informatik - 6. Praktikum Grundlagen der Informatik - 6. Praktikum In diesem Praktikum soll es neben der Anwendung von Funktionsdefinitionen auch um einfache Prinzipien der verteilten Quelltext-Strukturierung gehen. Diese spielt

Mehr

Anwendung und Programmierung von Mikrocontrollern. Anwendung und Programmierung von Mikrocontrollern

Anwendung und Programmierung von Mikrocontrollern. Anwendung und Programmierung von Mikrocontrollern Anwendung und Programmierung von Mikrocontrollern Sommersemester 2013 Dr.-Ing. Hubert Zitt Kontakt: hubert.zitt@fh-kl.de www.fh-kl.de/~zitt Dr.-Ing. Hubert Zitt Seite 1 von 24 S65 Shield (von oben) Komponenten

Mehr

Computernetzwerke. Von den Grundlagen zur Funktion und Anwendung. von Rüdiger Schreiner. 2., überarbeitete Auflage. Hanser München 2007

Computernetzwerke. Von den Grundlagen zur Funktion und Anwendung. von Rüdiger Schreiner. 2., überarbeitete Auflage. Hanser München 2007 Computernetzwerke Von den Grundlagen zur Funktion und Anwendung von Rüdiger Schreiner 2, überarbeitete Auflage Hanser München 2007 Verlag CH Beck im Internet: wwwbeckde ISBN 978 3 446 41030 5 Zu Inhaltsverzeichnis

Mehr

Access [basics] Aktionsabfragen per VBA ausführen. Beispieldatenbank. Aktionsabfragen. Die Execute-Methode. Datenzugriff per VBA

Access [basics] Aktionsabfragen per VBA ausführen. Beispieldatenbank. Aktionsabfragen. Die Execute-Methode. Datenzugriff per VBA Aktionsabfragen lassen sich bequem mit der Entwurfsansicht für Abfragen zusammenstellen. Sie können damit Daten an Tabellen anfügen, bestehende Daten ändern oder löschen und sogar gleich die passende Tabelle

Mehr

IT- Handbuch für Fachinformatiker, 7. Auflage: Text- Lösungen Sascha Kersken

IT- Handbuch für Fachinformatiker, 7. Auflage: Text- Lösungen Sascha Kersken IT- Handbuch für Fachinformatiker, 7. Auflage: Text- Lösungen Sascha Kersken Im Folgenden finden Sie jeweils die korrekte Antwort zu den im Buch abgedruckten Prüfungsfragen, soweit die Antworten in Textform

Mehr

Inhaltsüberblick. I. Grundbegriffe - Objekte und Klassen. Organisatorisches. I. Grundbegriffe - Objektorientierte Konzepte

Inhaltsüberblick. I. Grundbegriffe - Objekte und Klassen. Organisatorisches. I. Grundbegriffe - Objektorientierte Konzepte Grundkonzepte Objektorientierter Programmierung Nicole Himmerlich FSU Jena mit Java, Oberon-2, Object-Pascal und Python Inhaltsüberblick I. Grundbegriffe 1) Kopplung 2) Datenkaspelung 3) Konstruktor 4)

Mehr

Die Programmiersprache C99: Zusammenfassung

Die Programmiersprache C99: Zusammenfassung Die Programmiersprache C99: Zusammenfassung Jörn Loviscach Versionsstand: 7. Dezember 2010, 19:30 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen in der Vorlesung. Videos dazu: http://www.youtube.com/joernloviscach

Mehr

Java: Vererbung. Teil 3: super() www.informatikzentrale.de

Java: Vererbung. Teil 3: super() www.informatikzentrale.de Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und

Mehr

Microcontroller Kurs Programmieren. 09.10.11 Microcontroller Kurs/Johannes Fuchs 1

Microcontroller Kurs Programmieren. 09.10.11 Microcontroller Kurs/Johannes Fuchs 1 Microcontroller Kurs Programmieren 9.1.11 Microcontroller Kurs/Johannes Fuchs 1 General Purpose Input Output (GPIO) Jeder der Pins der vier I/O Ports kann als Eingabe- oder Ausgabe-leitung benutzt werden.

Mehr

Klassenbeziehungen & Vererbung

Klassenbeziehungen & Vererbung Klassenbeziehungen & Vererbung VL Objektorientierte Programmierung Raimund Kirner teilweise nach Folien von Franz Puntigam, TU Wien Überblick Arten von Klassenbeziehungen Untertypen versus Vererbung in

Mehr

Programmierung eines NewsTickers in Java

Programmierung eines NewsTickers in Java Programmierung eines NewsTickers in Java ( & ) Projektarbeit Programmiertechnik:Java NTA FH Isny 12. Info David Mayr / Andreas Krug Seite 1 von 7 ::: David Mayr / Andreas Krug [ 12. Info NTA FH Isny ]

Mehr

Programmierung Nibo 2 Teil 3 Display. * by nicaisystems

Programmierung Nibo 2 Teil 3 Display. * by nicaisystems by HJS Programmierung Nibo 2 Teil 3 Display * by nicaisystems Nibo 2 Programmierung Teil 3 Display Notwendige Programme: AVR Studio 4 ( mit den aktuellen Versionen und Updates ) WinAVR ( in der aktuellen

Mehr

Dokumentation zum Projekt Mail-Adapter in SAP PI. 17.01.2011 Sinkwitz, Sven 519707 Theel, Thomas 519696

Dokumentation zum Projekt Mail-Adapter in SAP PI. 17.01.2011 Sinkwitz, Sven 519707 Theel, Thomas 519696 Dokumentation zum Projekt Mail-Adapter in SAP PI 17.01.2011 Sinkwitz, Sven 519707 Theel, Thomas 519696 Inhalt 1. Einleitung... 2 2. Vorgehen... 3 1. Datentyp für die Mail einrichten... 3 2. Message Typen

Mehr

Diplomvorprüfung in Datenverarbeitung EBS Sommersemester 2002

Diplomvorprüfung in Datenverarbeitung EBS Sommersemester 2002 Diplomvorprüfung in Datenverarbeitung EBS Sommersemester 2002 Prüfungsaufgaben zu den Vorlesungen Datenverarbeitung im ersten und im zweiten Semester Aufgabensteller: Gleißner Die Lösungen sind auf das

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Konstruktor, Statische Methoden Packages Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Initialisierung von Datenstrukturen

Mehr

PHP Einsteiger Tutorial Kapitel 4: Ein Email Kontaktformular in PHP Version 1.0 letzte Änderung: 2005-02-03

PHP Einsteiger Tutorial Kapitel 4: Ein Email Kontaktformular in PHP Version 1.0 letzte Änderung: 2005-02-03 PHP Einsteiger Tutorial Kapitel 4: Ein Email Kontaktformular in PHP Version 1.0 letzte Änderung: 2005-02-03 Bei dem vierten Teil geht es um etwas praktisches: ein Emailformular, dass man auf der eigenen

Mehr

Microsoft PowerPoint 2013 Folienübergänge

Microsoft PowerPoint 2013 Folienübergänge Hochschulrechenzentrum Justus-Liebig-Universität Gießen Microsoft PowerPoint 2013 Folienübergänge Folienübergänge in PowerPoint 2013 Seite 1 von 8 Inhaltsverzeichnis Einleitung... 2 Einer Folie einen

Mehr

Es ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen.

Es ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen. Ziele sind das Arbeiten mit Funktionen und dem Aufzählungstyp (enum), sowie - einfache Verzweigung (if else) - Alternativen switch case - einfache Schleifen (while oder do while) Aufgabe 3: Diese Aufgabe

Mehr

Microsoft Outlook Express 5.x (S/MIME-Standard)

Microsoft Outlook Express 5.x (S/MIME-Standard) Microsoft Outlook Express 5.x (S/MIME-Standard) Das E-Mail-Programm Outlook Express von Microsoft bietet Ihnen durch die Standard- Integration des E-Mail-Verschlüsselungsprotokolls S/MIME (Secure/MIME)

Mehr

Zahlendarstellung Logikfunktionen Register Eingänge Infrarot senden TSOP-Effekte Weiterführendes U23 2008. Abend 3:

Zahlendarstellung Logikfunktionen Register Eingänge Infrarot senden TSOP-Effekte Weiterführendes U23 2008. Abend 3: #2 Abend 3: Alexander Neumann e.v. http://koeln.ccc.de Köln, 3.11.2008 Gliederung 1 Zahlendarstellung n-adische Darstellung natürlicher Zahlen negative Zahlen 2 Logikfunktionen 3 Register

Mehr

Einführung in Automation Studio

Einführung in Automation Studio Einführung in Automation Studio Übungsziel: Der links abgebildete Stromlaufplan soll mit einer SPS realisiert werden und mit Automation Studio programmiert werden. Es soll ein Softwareobjekt Logik_1 in

Mehr

Inhaltsverzeichnis. Grundbegriffe der C-Programmierung Für den HI-TECH C-Compiler

Inhaltsverzeichnis. Grundbegriffe der C-Programmierung Für den HI-TECH C-Compiler Inhaltsverzeichnis Grundbegriffe der C-Programmierung 1. Grundsätzliches... 2 1.1 Darstellung von Werten... 2 1.1.1 Dezimale Zahlendarstellung... 2 1.1.2 Binäre Zahlendarstellung... 3 1.1.3 Hexadezimale

Mehr

C++-Zusammenfassung. H. Schaudt. August 18, 2005

C++-Zusammenfassung. H. Schaudt. August 18, 2005 C++-Zusammenfassung H. Schaudt August 18, 2005 1 Datentypen 1.1 Grunddatentypen int (-32xxx bis +32xxx, implementerungs-abhängig) char -128 bis +128 float double bool (C++) int und char sind austauschbar:

Mehr

telemail 2.5 Benutzerhandbuch

telemail 2.5 Benutzerhandbuch telemail 2.5 Benutzerhandbuch Seite 1 von 26 1. telemail-navigation 1.1 Datei 1.1.1 Beenden telemail wird beendet. 1.2 Bearbeiten 1.2.1 Alles markieren Alle E-Mails in dem aktuellen Ordner werden markiert.

Mehr

C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung. Eltern

C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung. Eltern C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung Eltern Kind Kind Vererbung Definition von Klassen auf Basis von bestehenden Klassen. Implementierung von ist ein. bildet ein hierarchisches

Mehr

3.0 8051 Assembler und Hochsprachen

3.0 8051 Assembler und Hochsprachen 3.0 8051 Assembler und Hochsprachen Eine kurze Übersicht zum Ablauf einer Programmierung eines 8051 Mikrocontrollers. 3.1 Der 8051 Maschinencode Grundsätzlich akzeptiert ein 8051 Mikrocontroller als Befehle

Mehr

A n l e i t u n g. Beamer- Treiber- Download (FBI EB/ 19 )

A n l e i t u n g. Beamer- Treiber- Download (FBI EB/ 19 ) A n l e i t u n g Beamer- Treiber- Download (FBI EB/ 19 ) Kapitel 1: Vorbereitende Schritte......................................... Seite 1 bis 5 Kapitel 2: Auswechseln des Beamertreibers mittels........................

Mehr

CCS Compiler Tutorial mit Beispielen

CCS Compiler Tutorial mit Beispielen CCS Compiler Tutorial mit Beispielen Mit diesem Tutorial werden Sie den CCS Compiler kennenlernen, um mit ihm Projekte selbstständig erstellen zu können. Es werden zugleich die Programmierung und die Grundlagen

Mehr

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java Willkommen zur Vorlesung Objektorientierte Programmierung Vertiefung - Java Zum Dozenten Mein Name: Andreas Berndt Diplom-Informatiker (TU Darmstadt) Derzeit Software-Entwickler für Web- Applikationen

Mehr

Teile und Herrsche. Themen heute. Eigene Funktionen Parameter Fallunterscheidungen Fehlersuche. Programmieren für Ingenieure Sommer 2015

Teile und Herrsche. Themen heute. Eigene Funktionen Parameter Fallunterscheidungen Fehlersuche. Programmieren für Ingenieure Sommer 2015 Teile und Herrsche Programmieren für Ingenieure Sommer 2015 Andreas Zeller, Universität des Saarlandes C-Programm Vom Programm zum Prozessor Prüfen und Übersetzen Maschinen- Programm Hochladen über USB

Mehr

8.1 Grundsätzlicher Aufbau der Beispiele

8.1 Grundsätzlicher Aufbau der Beispiele 107 8 Beispiele Nachdem nun viele theoretische Grundlagen gelegt wurden, kann man mit dem Programmieren eines Mikrocontrollers beginnen. In den folgenden Kapiteln werden verschiedene Möglichkeiten der

Mehr

Java Kurs für Anfänger Einheit 5 Methoden

Java Kurs für Anfänger Einheit 5 Methoden Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden

Mehr

VB.net Programmierung und Beispielprogramm für GSV

VB.net Programmierung und Beispielprogramm für GSV VB.net Programmierung und Beispielprogramm für GSV Dokumentation Stand vom 26.05.2011 Tel +49 (0)3302 78620 60, Fax +49 (0)3302 78620 69, info@me-systeme.de, www.me-systeme.de 1 Inhaltsverzeichnis Vorwort...2

Mehr

Numerische Datentypen. Simon Weidmann

Numerische Datentypen. Simon Weidmann Numerische Datentypen Simon Weidmann 08.05.2014 1 Ganzzahlige Typen 1.1 Generelles Bei Datentypen muss man immer zwei elementare Eigenschaften unterscheiden: Zuerst gibt es den Wertebereich, zweitens die

Mehr

Vererbung. Was versteht man unter dem Begriff Vererbung?

Vererbung. Was versteht man unter dem Begriff Vererbung? Was versteht man unter dem Begriff Vererbung? Elternkonstrukt - Datenelemente - Methoden o Deklaration o Definition Kindkonstrukt... Main... Elternkonstrukt b = new Kindkonstrukt() b.fn() Komponenten &

Mehr

LCD-Verwaltungssoftware LCD-VSW

LCD-Verwaltungssoftware LCD-VSW Mit der LCD Verwaltungssoftware können die Textinformationen für die verschiedenen Anzeigen z. B. LCD UP, Tableaubaustein EB, Busch-triton erstellt Innerhalb eines Projektes können mehrere LCDs verwendet

Mehr

SCAN OPERATOR 12. Bedienungsanleitung. Ab Version 1.0. email: service@glp.de Internet: http://www.glp.de

SCAN OPERATOR 12. Bedienungsanleitung. Ab Version 1.0. email: service@glp.de Internet: http://www.glp.de Bedienungsanleitung Ab Version 1.0 email: service@glp.de Internet: http://www.glp.de 2 (V2.0) GLP German Light Production Inhalt 1 Übersicht...5 1.1 Frontansicht...5 1.2 Rückansicht...7 2 Bedienung...7

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22 Kapitel 19 Vererbung, UML Seite 1 von 22 Vererbung - Neben der Datenabstraktion und der Datenkapselung ist die Vererbung ein weiteres Merkmal der OOP. - Durch Vererbung werden die Methoden und die Eigenschaften

Mehr

BLUE LINE BLAU NEGATIV MIT WEISSER LED

BLUE LINE BLAU NEGATIV MIT WEISSER LED 12.00 BLUE LINE BLAU NEGATIV MIT WEISSER LED DOTMATRIX LCD-SERIE 1x16..4x40 nur 15..90mA EA E402-NLW für LED-Beleuchtung EA E202-NLW EA E162-BNLW EA E404-NLW TECHNISCHE DATEN * SUPERTWIST BLAU NEGATIV

Mehr

Ausbildungsziel: Die Nutzung der Zwischenablage -Kopieren und Einfügen-

Ausbildungsziel: Die Nutzung der Zwischenablage -Kopieren und Einfügen- Ausbildungsziel: Die Nutzung der Zwischenablage -Kopieren und Einfügen- Die Möglichkeit am Computer einmal erledigte Arbeiten beliebig oft zu duplizieren bzw wieder zu verwenden, ist wohl der größte Fortschritt

Mehr

Zeiterfassungsanlage Handbuch

Zeiterfassungsanlage Handbuch Zeiterfassungsanlage Handbuch Inhalt In diesem Handbuch werden Sie die Zeiterfassungsanlage kennen sowie verstehen lernen. Es wird beschrieben wie Sie die Anlage einstellen können und wie das Überwachungsprogramm

Mehr

Software Engineering Klassendiagramme Einführung

Software Engineering Klassendiagramme Einführung Software Engineering Klassendiagramme Einführung Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Aufgabe Erstellen Sie eine Klasse Person in Java. Jede Person verfügt

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine

Mehr