LEDs mit einem 4-Tasten Berüh­rungs­sen­sor schalten

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

Bei die­ser Auf­ga­be lernst du die Ver­wen­dung von Arrays ken­nen. Du kannst dir ein Array wie einen Schrank mit Schub­la­den vor­stel­len.

Bei­spiel:
Defi­ni­ti­on eines Arrays mit 5 Ele­men­ten vom Typ int. Mit den ecki­gen Klam­mern wird die Anzahl der Ele­men­te festgelegt.

int LED[5] = {3, 4, 5, 6, 7};

In jeder Schub­la­de befin­det sich ein Ele­ment. Jede Schub­la­de ist num­me­riert, besitzt einen Index Mit Hil­fe von Arrays kön­nen Daten eines ein­heit­li­chen Typs (z. B. int) im Spei­cher abge­legt und jeder­zeit wie­der her­vor geholt wer­den.

Inhalt von Schub­la­de Num­mer 0 → Schublade[0] = 3
Inhalt von Schub­la­de Num­mer 1 → Schublade[1] = 4

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

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

  // for-Schleife vom ersten (0) bis zum letzten (4) Element des Arrays
  for (int i = 0; i < 4; i++)
  {
    Serial.println(LED[i]);
  }
}

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

Wei­te­re Infor­ma­tio­nen zu Arrays

Benö­tig­te Bauteile:

  • 3 LEDs
  • 3 Wider­stän­de > 100 Ω
  • 4-Tasten Berüh­rungs­sen­sor
  • 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)

Die Tas­ten 1 bis 3 sol­len die bei der ers­ten Berüh­rung die LEDs ein­schal­ten, bei einer erneu­ten Berüh­rung wird die jewei­li­ge LED wie­der aus­ge­schal­tet.
Tas­te 4 schal­tet alle LEDs aus.

Der 4-Tasten-Sensor ver­fügt über vier berüh­rungs­emp­find­li­che Tas­ten. Wird eine Tas­te betä­tigt, leuch­tet die dazu­ge­hö­ri­ge LED zur Kontrolle.

Die Tas­ten, die Pins der LEDs und der Zustand der LEDs (HIGH/LOW) wer­den jeweils als Array definiert:

// Definition der Tasten mit den dazugehörigen Pins
int TASTE[4] = {4, 5, 6, 7};

// Definition der LEDs mit den dzugehörigen Pins
int LED[3] = {8, 9, 10};

// Status der LEDs, beim Start alle aus
bool Status[3] = {false, false, false};

Im setup-Teil kannst du mit einer for-Schleife allen LEDs als OUTPUT zuord­nen und in einer wei­te­ren for-Schleife die Tas­ten als INPUT definieren.

void setup()
{
  // LEDs als OUTPUT definieren
  for (int i = 0; i <= 2; i ++)
  {
    pinMode(LED[i], OUTPUT);
  }

  // Tasten als INPUT definieren
  for (int i = 0; i <= 3; i ++)
  {
    pinMode(TASTE[i], INPUT);
  }
}

Im loop-Teil wird zunächst geprüft, wel­che Tas­te gedrückt wird und dann wird die ent­spre­chen­de LED ein­ge­schal­tet. Tas­te 4 schal­tet die LEDs aus.

void loop() 
{
  /* 
    prüfen, welche Taste gedrückt wurde
    Status der jeweiligen LED wird umgedreht
    HIGH → LOW LOW → HIGH
    die Tasten reagieren empfindlich auf Berührung
    -> kurzes delay einfügen
  */
  for (int i = 0; i < sizeof(TASTE) - 1; i++)
  {
    if (digitalRead(TASTE[i]) == HIGH)      
    {
      delay(200);
      Status[i] = !Status[i];
      digitalWrite(LED[i], Status[i]);
    }
  }

  // Taste 4 schaltet alle LEDs aus
  if (digitalRead(7) == HIGH)
  {
    for (int i = 0; i <= 2; i ++)
    {
      digitalWrite(LED[i], LOW);
    }
  }
}


Ver­wand­te Aufgaben:


Letzte Aktualisierung: 21. Nov 2020 @ 19:52