Arduino – Datentypen und Variablen

Datentypen werden verwendet, um verschiedene Variablen oder Funktionen zu deklarieren. Der Variablentyp bestimmt, wie viel Speicherplatz im Speicher belegt ist und wie mit dieser Gruppe von Bits umgegangen wird.

Die Variablen werden gemäß der folgenden Syntax eingeführt.

type variableName = value;

int ledPin = 3;

Die im Arduino-Programm definierten Konstanten belegen keinen Programmspeicher auf dem Chip. Der Compiler ersetzt Verweise auf diese Konstanten durch den zum Zeitpunkt der Übersetzung angegebenen Wert. Diese Konstanten werden mit dem Schlüsselwort #define eingeführt.

#define constantName value

#define ledPin 3

const ist ein Schlüsselwort für die Variablenbewertung, das das Verhalten der Variablen so ändert, dass die Variable schreibgeschützt wird. Dies bedeutet, dass die Variable auf die gleiche Weise wie jeder andere Variablentyp verwendet werden kann, ihr Wert jedoch nicht geändert werden kann. Mit dem Schlüsselwort const definierte Konstanten folgen den Regeln des Gültigkeitsbereichs der Variablen. Daher ist es vorzuziehen, es als #define zu verwenden.

const char ledPin = 3;

In einer Funktion oder einem Codeblock deklarierte Variablen sind lokale Variablen. Es kann nur von Anweisungen verwendet werden, die sich im Funktions- oder Codeblock befinden und von außen nicht zugänglich sind.

Im folgenden Beispiel deklarieren wir eine Variable namens „myLocalVariable“ innerhalb der „sum“ -Funktion. Diese Variable kann nur innerhalb der „sum“ funktion verwendet werden. Diese werden als lokale oder lokale Variablen bezeichnet.

int sum(int num_1, int nun_2)
{
  int myLocalVariable = 0;

  myLocalVariable = num_1 + nun_2;
  return myLocalVariable;
}

Globale Variablen werden außerhalb aller Funktionen definiert, normalerweise oben im Programm. Auf die globale Variable kann mit jeder Funktion zugegriffen werden. Das heißt, eine globale Variable kann im gesamten Programm verwendet werden, nachdem sie deklariert wurde.

Im folgenden Beispiel wurde zu Beginn des Programms außerhalb der Funktionen eine Variable mit dem Namen „myGlobalVariable“ deklariert. Auf die auf diese Weise erstellte Variable kann von überall zugegriffen werden, weshalb sie als globale Variablen bezeichnet werden.

int myGlobalVariable = 1;

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  Serial.Print(myGlobalVariable);
}

So weit, so viel zum Erstellen von Variablen und deren Umfang. Sehen wir uns die Datentypen an.

void

Das Schlüsselwort void wird nur zum Deklarieren von Funktionen verwendet. Die void zeigt an, dass von der Funktion keine Informationen gibt zurück (kein Rückgabewert) für die Funktion erwartet werden, von der sie aufgerufen wurde. Sie können damit auch Ihre eigene Funktion schreiben, die wir nur an anderer Stelle im Code aufrufen. Eine der wichtigsten Funktionen unserer Skizze ist void:

void setup()
{

}

bool

Es kann zwei Werte haben: true oder false. Jede Bool-Variable belegt ein Byte im Speicher.

bool value = false;
bool buttonValue = true; 

boolean

Boolean ist kein Standardtyp. Verwenden Sie stattdessen den Datentyp bool.

char

Dieser Datentyp belegt ein Byte Speicher und kann einen Zeichenwert speichern, sodass ein Wert von 1 Zeichen gespeichert wird. Buchstaben werden in einfache Anführungszeichen ‚A‘ und Zeichenfolgen in doppelte Anführungszeichen „abc“ eingeschlossen. Es ist ein signierter Datentyp. Können Sie zwischen -128 und 127 data speichern.

char value = 'A';
char value = "abc";

Die Zeichen werden als Zahlen gespeichert, der Dezimalwert der Buchstaben kann im ASCII-Zeichenstandard abgerufen werden . Der Wert von ‚A‘ + 1 ist 66, da der ASCII-Wert des Großbuchstabens ‚A‘ 65 ist. Mit dem Befehl Serial.println() können Sie ihn in anderen Zahlensystemen auf dem seriellen Monitor ausgeben.

char value = 'A';

Serial.println(value);
Serial.println(value, DEC);
Serial.println(value, HEX);
Serial.println(value, OCT);
Serial.println(value, BIN);

unsigned char

Entspricht dem Byte-Datentyp. Es nimmt ein Byte Speicherplatz ein. Darin können Zahlen von 0 bis 255 gespeichert werden. Verwenden Sie nach Möglichkeit stattdessen das byte.

unsigned char myChar = 160;

byte

Speichert vorzeichenlose Zahlen in 1 Byte, 0 bis 255. 

byte myByte = 25;

int

Primärer Datentyp zum Speichern von Zahlen. In ATmega-basierten Tabellen (z. B. Arduino Uno) speichert die Ganzzahl 16 Bits (2 Bytes) zwischen -32.768 und 32.767. Sie arbeiten auf herkömmliche Weise mit arithmetischen Operatoren, Sie können jedoch auch bitweise Operatoren verwenden.

int myInt = 26;

int a = 5;        // binary: 0000000000000101
int b = a << 14;  // binary: 0100000000000000

unsigned int

Geeignet zum Speichern von vorzeichenlose Ganzzahlen . Da es mit denselben 2 Bytes wie int arbeitet, kann es einen größeren positiven Wert speichern: zwischen 0 und 65.535 für ATMega-basierte Arduinos.

unsigned int var = 23;

Wort

Gleich wie unsigned int. Speichert vorzeichenlose Zahlen in 16 Bit von 0 bis 65535.

word myWord = 25000;

long

Speichert einen vorzeichenbehafteten numerischen Wert zwischen -2.147.483.648 und 2.147.483.647 in 32 Bit (4 Byte). Wenn Sie mit Ganzzahlen zählen, muss mindestens einer der Werte long sein oder eine Ganzzahlkonstante, gefolgt von einem L, oder ein langer Variablentyp, der die Länge erzwingt.

long speedOfLight_km_s = 300000L;

unsigned long

unsigned long Variablen sind Variablen mit erweiterter Größe zum Speichern von Zahlen und zum Speichern von 32 Bit (4 Byte). Im Gegensatz zu Standard Long speichert Long ohne Vorzeichen keine negativen Zahlen, sodass sie im Bereich von 0 bis 4.294.967.295 (2 ^ 32 – 1) liegen.

unsigned long time = millis();

short

16-Bit-Datentyp für ATMega- und ARM-basierte Arduinos. Gespeicherter Wert zwischen -32.768 und 32.767.

short myShort = 10;

float

Float verfolgt Zahlen mit einem Dezimalpunkt. Gleitkommazahlen können bis zu 3.4028235E + 38 und bis zu -3.408235E + 38 sein. Sie werden als 32 Bit (4 Byte) an Informationen gespeichert. Der Float-Datentyp hat nur 6-7 Dezimalstellen. Dies gilt für alle Ziffern und nicht für Dezimalstellen.

Gleitkommazahlen sind nicht genau und können im Vergleich zu seltsamen Ergebnissen führen. Zum Beispiel ist 6.0 / 3.0 nicht gleich 2.0. Stattdessen müssen Sie überprüfen, ob der absolute Wert der Differenz zwischen den Zahlen kleiner als eine kleine Zahl ist. Das Konvertieren von einem Gleitkomma in eine Ganzzahl führt zum Abschneiden:

float x = 2.9;
int y = x;

Das Ergebnis der Variablen y ist zwei. Verwenden Sie zum Runden die Funktion round ():

float x = 2.9;
int y = round(x);

Das Ergebnis ist also 3.

double

Gleitkommazahl mit doppelter Genauigkeit. Bei Uno und anderen ATMEGA-basierten Tabellen belegt dies 4 Byte.

double myDouble = 68.665;

string – char array

Sie können mit String einem Zeichenfolgenarray erstellen. Diese können anhand der folgenden Beispiele deklariert werden. Die alle gültig sind. Das letzte Element der Zeichenarrays ist 0 (Null), daher erkennt der Compiler das Ende der Zeichenfolge. Mehr zu den Arrays hier .

char Str1[15];
char Str2[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o'};
char Str3[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o', '
char Str1[15];
char Str2[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o'};
char Str3[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o', '\0'};
char Str4[ ] = "arduino";
char Str5[8] = "arduino";
char Str6[15] = "arduino";
'}; char Str4[ ] = "arduino"; char Str5[8] = "arduino"; char Str6[15] = "arduino";

String – Objekt

Sie können damit textbasierte Zeichenfolgen bearbeiten. Lesen Sie hier mehr darüber .

Array

Ein Array ist ein Speicherplatz, in dem derselbe Elementtyp gespeichert ist. Geben Sie als Referenz auf eine bestimmte Position oder ein bestimmtes Element im Array den Namen des Arrays und die Positionsnummer dieses Elements im Array ein. Mehr zu den Arrays hier .

Das nächste Kapitel befasst sich mit Operatoren.