Satz­ma­schi­ne

Lese­zeit: 5 Minu­ten
Navi­ga­ti­on

Bis­her kennst du Arrays, die eine bestimm­te Anzahl von Ele­men­te in einer Rei­he haben (➨ein­di­men­sio­na­le Arrays).

String Eigenschaft[3] = {"schnell ", "langsam ", "im Schritttempo "};
int LED[5] = {3, 4, 5, 6, 7};

Außer­dem gibt es noch mehr­di­men­sio­na­le Arrays, sie sind in Rei­hen und Spal­ten orga­ni­siert.

Bei­spiel für ein zwei­di­men­sio­na­les Array:

// 4 Reihen, 4 Spalten
int Zahlen[4] [4] =
{
  {1, 2, 3, 4},
  {11, 12, 13, 14},
  {21, 22, 23, 24},
  {31, 32, 33, 34}
};

Das Bei­spiel­pro­gramm zeigt das Array an:

// 4 Reihen, 4 Spalten
int Zahlen[4] [4] =
{
  {1, 2, 3, 4},
  {11, 12, 13, 14},
  {21, 22, 23, 24},
  {31, 32, 33, 34}
};

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

  /*
    Elemente des Arrays anzeigen
    for-Schleife durch die Reihen
  */
  for (ist Zeile = 0; Zeile < 4; Zeile ++)
  {
    Serial.print("Zeile " + String(Zeile) + ": ");

    // for-Schleife durch die Spalten
    for (int Spalte = 0; Spalte < 4; Spalte ++)
    {
      Serial.print(String(Zahlen[Zeile] [Spalte]) + " ");
    }
    Serial.println();
  }
}

void loop()
{
  // bleibt leer, das Programm läuft nur einmal
}

Wei­te­res Bei­spiel:
Das Pro­gramm bil­det aus dem Array vier Sät­ze und zeigt sie an.

// 2 Reihen, 4 Spalten
String Wortliste[2] [4] =
{
  {"Der Bus ", "Das Auto ", "Die U-Bahn ", "Das Motorrad "},
  {"h\u00e4lt an der Haltestelle.", "f\u00e4hrt in  die Garage.", "stoppt im Bahnhof.", "flitzt \u00fcber die Autobahn."}
}; 

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

  // alle Sätze anzeigen
  for (int i = 0; i < 4; i++)
  {
    Serial.print(Wortliste[0] [i]);          
    Serial.println(Wortliste[1] [i]); 
  }
}

 void loop() 
 {  
   // bleibt leer, das Programm läuft nur einmal 
 }  

Benö­tig­te Bau­tei­le:

  • einen Tas­ter
  • Lei­tungs­dräh­te

Baue die Schal­tung auf.
(Fah­re mit der Maus über das Bild, um die Bezeich­nun­gen der Bau­tei­le zu sehen)

So sieht es aus (Bei­spiel):

Das „Prel­len“ des Tas­ters soll mit der Biblio­thek Bounce2 ver­hin­dert wer­den.

Bin­de die Biblio­thek Bounce2 ein und defi­nie­re die Arrays für die Satz­tei­le.

Beach­te die Kom­men­ta­re.

# include <Bounce2.h>

int TASTER = 8;

String Artikel_Substantiv [5] [5] =
{
  {"Der ", "Das ", "Die ", "Das ", "Das "},
  {"Bus ", "Auto ", "U-Bahn ", "Fahrrad ", "Motorrad "},
};

// eindimensionales Array für die Adverbien
String Eigenschaft [5] = {"im Zeitlupentempo ", "schnell ", "langsam ", "z\u00fcgig ", "im Schritttempo "};

String Verb_Objekt [5] [5] =
{
  {"saust ", "rast ", "schleicht ", "f\u00e4hrt ", "bummelt "},
  {"ans Ende der Welt.", "um die Ecke.", "zum Bahnhof.", "zur Haltestelle.", 
  "in die Garage."}
};

int Minimum = 0;
int Maximum = 5;

// Bibliothek Bounce2
// "Prellverhinderer" für die Taste starten
Bounce Satz = Bounce();

Der setup-Teil. Beach­te die Kom­men­ta­re.

void setup()
{
  Serial.begin(9600);
  pinMode(TASTER, INPUT_PULLUP);

  // Zufallsgenerator starten
  randomSeed(analogRead(0));
  
  // Instanzen des Objekts Bounce für die Taste zuordnen
  // Zeitintervall einstellen
  Satz.attach(TASTER);
  Satz.interval(20);
}

Der loop-Teil. Beach­te die Kom­men­ta­re.

void loop()
{
  if (Satz.update())
  {
    if (Satz.read() == LOW)
    {
      int Position =  random(Minimum, Maximum);

      // Artikel sollen zum Substantiv passen
      // es wird die gleiche Spalte gewählt
      Serial.print(Artikel_Substantiv[0] [Position]);
      Serial.print(Artikel_Substantiv[1] [Position]);

      // Bestimmung des Verbs
      Position =  random(Minimum, Maximum);
      Serial.print(Verb_Objekt[0] [Position]);

      // Festlegung der Eigenschaft
      Position =  random(Minimum, Maximum);
      Serial.print(Eigenschaft[Position]);

      // Objekt auswählen
      Position =  random(Minimum, Maximum);
      Serial.println(Verb_Objekt[1] [Position]);
    }
  }
}


Ver­wand­te Auf­ga­ben:


Letzte Aktualisierung: 6. Jul 2020 @ 9:04