# Z-Lab Arduino-Grundkurs Übung 3: Externe LED

In dieser Übung lassen wir wieder eine LED blinken.  
Allerdings dieses Mal eine externe.

Zuerst öffnen wir die Übung über den gewohnten Weg. Der Name ist "03_Externe_LED"

![Übung öffnen](oeffnen.png)

Wenn du diese Übung öffnest wunderst du dich bestimmt. Das sieht ja genau so aus wie beim letzten Mal.

Genau! Um die externe (vorsicht, Spoiler) sogar beide LEDs anzusteuern reicht unser C-Wissen aus den letzten beiden Übungen völlig aus. Wir müssen nur das gelernte neu kombinieren und schon können wir externe LEDs und auch mehrere LEDs anschließen und unterschiedlich blinken lassen.

Und wir müssen lernen, was ein Breadboard ist :)

## Das Breadboard

Ein Breadboard ist eine Steckplatine, die es uns erstpart alles, was wir mal testen wollen, löten zu müssen.  
Dabei sind die Löcher an der Außenseite der Platine längs miteinander verbunden und die Löcher im Inneren der Platine sind quer miteinander verbunden:  

![Breadboard](breadboard.png)

Wenn wir nun aber ein paar Sachen hintereinander ausprobieren möchten müssten wir ja immer wieder neu umlöten. Das macht auf Dauer keinen Spaß. Deshalb gibt es die Breadboards. Damit lässt sich ein Stromkreis oder eine Schaltung leicht und ohne Werkzeug bauen und wieder verändern.

## Verkabeln wir also die LED mit dem Widerstand mit dem Arduino

So muss da aussehen, wenn wir fertig sind:

<img src="Blinken_bb.svg">

Für den Aufbau gehen wir wie folgt vor:
* Die LED kommt in ein Breadboard  
  Die beiden Beinchen in zwei verschiedene Spalten stecken
* an die längere Seite der LED schließen wir den 220 Ohm Widerstand an.  
  Dazu stecken wir den Widerstand in die gleiche Spalte wie die LED
* Das andere Ende des Widerstands verbinden wir mit dem Ausgang 12 des Arduino  
  Dazu stecken wir ein rotes Kabel in die Spalte dem Widerstand und mit dem anderen Ende auf den Pin 12 des Arduino.
* Jetzt fehlt noch der Rückweg des Stroms zum Arduino  
  Dazu stecken wir eine Seite eines schwarzen Kabels an einen der GND-Eingänge des Arduino.  
  Die andere Seite stecken wir in die Spalte, in der das kurze Beinchen der LED noch alleine Steck.

Wenn alles fertig ist sieht das in etwa so aus:

![Externe LED Breadboard](externe_led_breadboard.png)

So und dann geht's wieder ans Programmieren.  
Und damit es ein bisschen spannender wird gibt es hier keinen fertigen Code.  
Genaugenommen weißt du schon alles, was du wissen musst, damit die externe LED, die an PIN 12 angeschlossen ist, blinkt.  

Wenn du gar nicht weiter kommst kannst du hier drücken, um Lösungsvorschläge zu sehen:  

<details>
  <summary>hier klicken für (zwei mögliche) Lösungen</summary>

  ### Lösung mit "hart-Kodierter" Nummer
  ```c
    void setup() {
        pinMode(12, OUTPUT);
    }

    void loop() {
        digitalWrite(12, HIGH);
        delay(1000);
        digitalWrite(12, LOW);
        delay(1000);
    }
  ```


  ### Lösung mit #define
  ```c
    #define LED1 12

    void setup() {
        pinMode(LED1, OUTPUT);
    }

    void loop() {
        digitalWrite(LED1, HIGH);
        delay(1000);
        digitalWrite(LED1, LOW);
        delay(1000);
    }
  ```
</details>

## Und wie könnte es weiter gehen?
* Was müssten wir denn tun, wenn wir beide LEDs (die interne und die externe) abwechselnd blinken lassen wollten?
* Und wir müssten wir vorgehen, wenn wir 3 LEDs nacheinander blinken lassen wollen?

<details>
  <summary>Hier klicken für Lösungsvorschläge - aber bitte erst selbst probieren! </summary>
<details>
  <summary>Ja wirklich. Bitte erst selbst probieren. Nicht gleich nach der Lösung schauen.</summary>

  ### Lösung mit #define

  ```c
    #define LED1 12
    #define LED2 13

    void setup() {
        pinMode(LED1, OUTPUT);
        pinMode(LED2, OUTPUT);
    }

    void loop() {
        digitalWrite(LED1, HIGH);
        digitalWrite(LED2, LOW);
        delay(1000);
        digitalWrite(LED1, LOW);
        digitalWrite(LED2, HIGH);
        delay(1000);
    }
  ```

  </details>
</details>

Hier gehts [weiter zur nächsten Übung](../04_Piepser/)
