
Im Seriellen Monitor sollen verschiedene Information zu Städten angezeigt werden.
Bei dieser Anleitung lernst du einen neuen Datentyp kennen. In ⇒Arrays lassen sich nur Daten vom gleichen Typ definieren.
Strukturen (struct) sind eine Sammlung und Beschreibung verschiedener Daten. Sie können beliebige Datentypen verwenden. Die Struktur ist die Vorlage für die Definition der konkreten Daten.
In den Beispielen werden verschiedene Informationen zu den einzelnen Städten mithilfe unterschiedlicher Datentypen zusammengefasst.
Zunächst wird eine Schablone definiert:
struct Stadt
{
int Platz;
String Name;
String KFZ_Kennzeichen;
float Einwohner;
String Vorwahl;
int Hoehe;
};
Definition der Daten:
const int MAX = 3;
struct Stadt Namen[MAX] =
{
{1, “Berlin”, “B”, 3.64, “030”, 30},
{2, “Hamburg”, “HH”, 1.84, “040”, 6},
{3, “München”, “M”, 1.47, “089”, 519}
};
Eine for-Schleife zeigt die Daten an:
for (int i = 0; i < MAX; i++ )
{
Serial.print(String(Namen[i].Platz) + “\t”);
Serial.print(Namen[i].Name + “\t\t”);
Serial.print(Namen[i].KFZ_Kennzeichen + “\t\t”);
Serial.print(String(Namen[i].Einwohner) + “\t\t”);
Serial.print(String(Namen[i].Hoehe) + “\t\t”);
Serial.println(Namen[i].Vorwahl);
}
Das vollständige Programm:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | struct Stadt { int Platz; String Name; String KFZ_Kennzeichen; float Einwohner; String Vorwahl; int Hoehe; }; const int MAX = 3; struct Stadt Namen[MAX] = { { 1, “Berlin”, “B”, 3.64, “030”, 30 }, { 2, “Hamburg”, “HH”, 1.84, “040”, 6 }, { 3, “München”, “M”, 1.47, “089”, 519 } }; void setup() { Serial.begin(9600); // auf serielle Verbindung warten while (!Serial); delay(1000); for (int i = 0; i < MAX; i++) { Serial.print(String(Namen[i].Platz) + “\t”); Serial.print(Namen[i].Name + “\t\t”); Serial.print(Namen[i].KFZ_Kennzeichen + “\t\t”); Serial.print(String(Namen[i].Einwohner) + “\t\t”); Serial.print(String(Namen[i].Hoehe) + “\t\t”); Serial.println(Namen[i].Vorwahl); } } void loop() { // bleibt leer, Programm läuft nur einmal } |

So sieht es aus:

Nach Eingabe einer Zahl zwischen 1 und 4 im Seriellen Monitor soll die Information zur entsprechenden Stadt des Arrays angezeigt werden.
Mit Eingabe der Zahl 5 wird eine zufällige Auswahl getroffen.
Ergänze die Daten mit den jeweiligen Bundesländer und erstelle die Daten für Köln.
{4, “Köln”, “K”, 1.04, “0221”, 53, “NRW”}
So soll es aussehen:

Die ergänzte Definition der Variablen.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | struct Stadt { int Platz; String Name; String KFZ_Kennzeichen; float Einwohner; String Vorwahl; int Hoehe; String Land; }; const int MAX = 4; // Array definieren Stadt Namen[MAX] = { {1, “Berlin”, “B”, 3.64, “030”, 30, “Berlin”}, {2, “Hamburg”, “HH”, 1.84, “040”, 6, “Hamburg”}, {3, “München”, “M”, 1.47, “089”, 519, “Bayern”}, {4, “Köln”, “K”, 1.04, “0221”, 53, “NRW”} }; |
Im setup-Teil wird der Serielle Monitor gestartet und über den Ablauf des Programms informiert. Mit Hilfe des Tabulators (\t} wird die Ausgabe formatiert.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | void setup() { Serial.begin(9600); // auf serielle Verbindung warten while (!Serial) {;} // Info Serial.println(“Liste der Gro\u00dfst\u00e4dte mit mehr als 1 Mio Einwohner”); Serial.println(“———————————————————-”); Serial.println(“1 = Berlin”); Serial.println(“2 = Hamburg”); Serial.println(“3 = München”); Serial.println(“4 = Köln”); Serial.println(“———————————————————-”); Serial.println(“Platz\tStadt\t\tKFZ\tEinw. in Mio.\tHöhe\tVorwahl\t\tBundesland”); } |
Der loop-Teil:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | void loop() { // auf serielle Eingabe warten while (Serial.available() > 0) { // Eingabe im Seriellen Monitor lesen String Eingabe = Serial.readStringUntil(char(13)); // String Eingabe nach int umwandeln // die Funktion ZeigeDaten kann dann direkt aufgerufen werden int Auswahl = Eingabe.toInt(); // wenn Auswahl > 0 und < 5 // weil das Array mit 0 beginnt, 1 abziehen if (Auswahl > 0 && Auswahl < 5) ZeigeDaten(Auswahl - 1); // zufällige Auswahl if (Auswahl == 5) { int Minimum = 0; int Maximum = 4; int Zahl = random(Minimum, Maximum); ZeigeDaten(Zahl); } } } |
Die Funktion ZeigeDaten:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | void ZeigeDaten(int i) { // bei der Einwohnerzahl . durch , ersetzen String Einwohner = String(Namen[i].Einwohner); Einwohner.replace(“.”, “,”); // Daten anzeigen, mit Tabulator (\t) formatieren Serial.print(String(Namen[i].Platz) + “\t”); Serial.print(Namen[i].Name + “\t\t”); Serial.print(Namen[i].KFZ_Kennzeichen + “\t\t”); Serial.print(Einwohner + “\t”); Serial.print(String(Namen[i].Hoehe) + “\t”); Serial.print(Namen[i].Vorwahl + “\t\t”); Serial.println(Namen[i].Land); } |
Verwandte Anleitungen:
- Einmaleinsreihen anzeigen
- Einmaleinsreihen — Anzeige mit Keyes-Fernbedienung
- Fußballtipp
- Geldautomat
- Kniffel — EEPROM verwenden
- Lottozahlen — Anzeige im Seriellen Monitor
- Primzahlen ermitteln
- Satzmaschine
- Teiler bestimmen
- Vokale zählen
Letzte Aktualisierung:






