Arrays

Ein Array ist eine Datenstruktur, die aus einer geordneten Sammlung von Elementen besteht, die alle denselben Datentyp haben. Die Elemente in einem Array werden über einen sogenannten Index angesprochen, der die Position des Elements innerhalb des Arrays angibt.

In C++ wird ein Array durch die Angabe eines Datentyps und einer Größe deklariert, die sich später nicht mehr ändern lässt. Ein Array kann dann entweder direkt mit Werten initialisiert werden oder die Elemente können später gesetzt und geändert werden. Der Zugriff auf die Elemente erfolgt über den Index, der in eckigen Klammern hinter dem Array-Namen angegeben wird.

Arrays sind sehr nützlich, um große Mengen von Daten effizient zu speichern und zu verarbeiten. Sie werden häufig verwendet, um Listen von Elementen zu speichern, wie z.B. eine Liste von Zahlen, Namen oder anderen Daten. Durch die Verwendung von Arrays kann der Programmcode vereinfacht werden, da der Code nicht für jedes Element in der Liste wiederholt werden muss.

 

Beispiel

#include <U8g2lib.h>
#include <SPI.h>

U8G2_SH1106_128X64_NONAME_F_4W_HW_SPI u8g2(U8G2_R0, 10, 8, 9);
void setup(void) {
  const char* words[] = {"Wir fahr'n", "fahr'n", "fahr'n", "auf", "der", "Autobahn"};
  u8g2.begin();
  u8g2.setFont(u8g2_font_smart_patrol_nbp_tr);
  for (int i = 0; i < 6; i++) {
    u8g2.clearBuffer();
    u8g2.drawStr(0, (i * 10)+10, words[i]);
    u8g2.sendBuffer();
    delay(500);
  }
}

void loop() {}

Zweidimensionale Arrays

#include <U8g2lib.h>
#include <SPI.h>

U8G2_SH1106_128X64_NONAME_F_4W_HW_SPI u8g2(U8G2_R0, 10, 8, 9);
void setup(void) {
  int spielfeld[10][5];

  for (int xCoord = 0; xCoord < 10; xCoord++) {
    for (int yCoord = 0; yCoord < 5; yCoord++) {
      spielfeld[xCoord][yCoord] = 0;
    }
  }

  spielfeld[3][0] = 1;
  spielfeld[4][0] = 1;
  spielfeld[5][0] = 2;
  spielfeld[6][0] = 2;
  spielfeld[4][1] = 2;
  spielfeld[5][1] = 1;

  u8g2.begin();
  u8g2.setDisplayRotation(U8G2_R2);
  u8g2.clearBuffer();
  u8g2.drawFrame(0,0,101,51);

  for (int xCoord = 0; xCoord < 10; xCoord++) {
    for (int yCoord = 0; yCoord < 5; yCoord++) {
      if(spielfeld[xCoord][yCoord] == 1){
        u8g2.drawDisc((xCoord*10)+5,(yCoord*10)+5,4);
      }
      if(spielfeld[xCoord][yCoord] == 2){
        u8g2.drawCircle((xCoord*10)+5,(yCoord*10)+5,4);
      }
    }
  }
  u8g2.sendBuffer();
}

void loop() {}

Hier geht es weiter.