Sonntag, 28. Juni 2015

Datentypen des Arduino

In diesem Post geht es um die verschiedenen Datentypen, die man zum Programmieren des Arduino verwenden kann. Außerdem, wie man die verschiedenen Datentypen in einander umwandeln kann.


Die einzelnen Datentypen

Boolean

Ein Boolean ist ein Wahrheitswert. Das bedeutet er kann den Wert TRUE oder den Wert FLASE beinhalten. Da das im Arduino mit Strom oder kein Strom gespeichert wird benötigt er nur einen Bit des Speichers.

Definition in der Arduino IDE:

boolean Name_der_Variable = FALSE;

Byte

Ein Byte besteht aus 8 Bit. Das bedeutet er speichert 8 mal Strom an oder aus. Dadurch ergeben sich 256 Kombinationen, weshalb ein Byte eine Zahl zwischen 0 und 255 speichern kann.

Definition in der Arduino IDE:

byte Name_der_Variable = 233;

Integer

Integer, kurz int, ist wahrscheinlich der meist verwendete Datentyp für Zahlen. Ein Intger enthält nur Ganzzahlen, also keine Kommazahlen. Es können Zahlen zwischen -32768 und +32767 gespeichert werden. Wenn man 32767 +1 rechnet erhält man die Zahl -32768. Wenn man -32768 - 1 rechnet erhält man die Zahl 32767. Das wird als Roll Over bezeichnet. Ein Integer benötigt 2 ^ 16 Bits oder 2 Bytes dadurch ergeben sich 65536 Kombinationen, die gleichmäßig auf positive und negative Zahlen aufgeteilt wurden.

Definition in der Arduino IDE:

int Name_der_Variable = 2956;

Long

Eine Variable vom Typ Long enthält auch Ganzzahlen, wie ein Integer, nur ist ein größerer Zahlenbereich verfügbar: von -2147483648 bis +2147483648. Ein Long benötigt 32 Bits/4 Bytes Speicherplatz

Definition in der Arduino IDE:

long Name_der_Variable = 29438;

Float

Variablen vom Datentyp Float sind Zahlen mit 6-7 möglichen Nachkommastellen. Dadurch kann man auch kleine Werte exakt berechnen. Der Zahlenbereich ist von -34028235 * 10^38 bis 34028235 * 10^38. Wichtig ist, dass man kein Komma, sondern einen Punkt stattdessen macht.

Definition in der Arduino IDE:

float Name_der_Variable = 34438.24;

Hinweis:

Viele Zahlenvariablen sind auch unsigned möglich. Das bedeutet, dass der mögliche Zahlenraum nicht auf positive und negative Zahlen aufgeteilt wird, sondern, dass alle Werte positiv sind. Dadurch können die Werte größer werden. Zusätzlich spart man sich ein Bit, das besagt ob die Zahl negativ oder positiv ist, was den Zahlenraum zusätzlich erweitert.

Char

Char ist ein Variablentyp, für Variabeln, die genau einen Buchstaben besitzen. So kann ein char den Buchstaben 'A' beinhalten. Hierbei wird zwischen einem 'a' und einem 'A' unterschieden. Der Buchstabe wird als eine Zahl gespeichert. Die Übersetzung erfolgt automatisch gemäß dieser Übersetzungstabelle. Ein Char benötigt bis zu 1 Byte Speicherplatz.

Definition in der Arduino IDE:

char Name_der_Variable = 'A';

String

Ein String ist nicht anderes als eine Zeichenkette. Hier kann man so viele Zeichen speichern wie man will, weshalb auch der Speicherbedarf variiert. 

Definition in der Arduino IDE:

String Name_der_Variable = "Hallo";

Wichtig ist hierbei zwischen zwei Arten von Strings zu unterscheiden. Dem String mit großem S, wie oben, und dem string mit kleinem s. Der string ist in der Arduino IDE einfach nur ein Array vom Datentyp char, bei dem jedes Element ein Zeichen enthält. Zusammen ergibt das dann die Zeichenkette. Der String, mit großem S, ist eine wirkliche Zeichenkette. Dieser benötigt zwar mehr Speicherplatz, dafür sind mit ihm aber auch mehr Operationen möglich, beispielsweise Suchen und Ersetzen.

Umwandeln von Datentypen

Manchmal ist es sinnvoll den Datentyp zu ändern. Beispielsweise, um eine Funktion mit einer Variable zu verwenden, wobei die Funktion den aktuellen Datentyp nicht akzeptiert. Dann muss man den Datentyp ändern. Das geht natürlich nur mit Datentypen, bei denen das sinnvoll ist. Beispielsweise kann man "Hallo" nicht in einen Integer umwandeln. Zusätzlich muss man die maximalen Größen einer Variable beachten. Wenn das Alles zutrifft kann man über diese Funktionen den Datentyp ändern:
  • char()
  • byte()
  • int()
  • long()
  • float()
Wenn ich, beispielsweise eine Zahl vom Typ Integer mit dem Wert 22 habe und sie in ein Byte umwandeln will, schreibt man:

byte Name_der_Variable = byte(Name_der_alten_Variable_mit_Typ_int);

Nun ist der Datentyp geändert. 

Keine Kommentare:

Kommentar veröffentlichen