
Im Seriellen Monitor sollen verschiedene Information zu Städten angezeigt werden.
Bei dieser Aufgabe 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\u00fcnchen", "M", 1.47, "089", 519}
};
Eine Methode 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);
}
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.
Für diese Aufgabe brauchst du nur den Arduino.
Ergänze die Daten mit den jeweiligen Bundesländer und erstelle die Daten für Köln.
{4, "K\u00f6ln", "K", 1.04, "0221", 53, "NRW"}
Du musst auch die Größe des Arrays (MAX) ändern.
So soll es aussehen:

Die ➨ Umlaute musst du als Unicode darstellen:
\u00e4d = ä
\u00df = ß
\u00fc = ü
\u00f6 = ö
Im setup-Teil wird der Serielle Monitor gestartet und über den Ablauf des Programms informiert. Mit Hilfe des Tabulators (\t} wird die Ausgabe formatiert.
void setup()
{
Serial.begin(9600);
// 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\u00fcnchen");
Serial.println("4 = K\u00f6ln");
Serial.println("----------------------------------------------------------");
Serial.println("Platz\tStadt\t\t\KFZ\tEinw. in Mio.\tH\u00f6he\tVorwahl\t\t\
Bundesland");
}
Der loop-Teil. Beachte die Kommentare.
void loop()
{
// auf serielle Eingabe warten
while (Serial.available() > 0)
{
// Eingabe im Seriellen Monitor lesen
String Eingabe = Serial.readStringUntil("\n");
// String Eingabe nach int umwandeln
// die Methode ZeigeDaten kann dann direkt aufgerufen werden
int Auswahl = Eingabe.toInt();
// wenn Auswahl > 0 und < 5
// verhindern dass größere/kleinere Zahlen eingegeben werden
// weil das Array mit 0 beginnt, 1 abziehen
if (Auswahl > 0 && Auswahl < 5) ZeigeDaten(Auswahl - 1);
}
}
Die Methode ZeigeDaten:
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 Aufgaben:
- Einmaleinsreihen anzeigen
- Geldautomat
- Lottozahlen - Anzeige im Seriellen Monitor
- Primzahlen ermitteln
- Satzmaschine
- Schneckenrennen
- Taschenrechner Grundrechenarten
- Teiler bestimmen
- Vokale zählen
- Vollkommene Zahlen
Letzte Aktualisierung: