TODO: Überarbeiten

# Z-Lab Arduino-Grundkurs Übung 4: Piepser

In dieser Übung erzeugen wir Töne mit einem Piepser.

Zuerst öffnen wir das Projekt über den gewohnten Weg. Der Name ist "04_Piepser"

![Projekt öffnen](projekt_oeffnen.png)

## Verkabeln wir den Piepser mit dem Arduino mit dem Arduino

So muss da aussehen, wenn wir fertig sind:

<img src="Piepser.svg">

So und dann geht's wieder ans Programmieren.

In der Datei 04_Piepser.ino finden wir (ohne die ganzen Kommentare) folgenden Quellcode:

```c
#define PIEPSER 12

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

void loop() {
  tone(PIEPSER, 1000);
  delay(1000);
  noTone(PIEPSER);
  delay(1000);
}
```

Neu ist hier, dass wir schon vor der Setup-Funktion "etwas machen".  
Dinge, die außerhalb der Funktionen gemacht werden stehen allen Funktionen zur Verfügung.  

## define

```c
#define PIEPSER 12
```

Mit "#define" erstellen (definieren, wie define) wir eine sogenanntes Makro mit dem Namen "PIEPSER", das die 12 enthält.
Überall später im Quellcode wird "PIEPSER" mit 12 ersetzt.
Das macht es uns ein bisschen einfacher, denn: 
* Wir müssen uns die 12 nicht merken, an der der Piepser hängt sondern können einfach immer "PIEPSER" schreiben, wenn wir mit dem Piepser etwas machen wollen
* Wir können den Anschluss, an dem der Piepser hängt ganz einfach ändern, in dem wir einfach nur die 12 durch etwas anderes ersetzen und müssen nicht im ganzen Code nach der 12 suchen

## tone() und noTone()

Wie der Name schon sagt ;)
Mit "tone()" erzeugen ir einen Ton.  
Dabei ist der erste Parameter der Funktion der PIN (Anschluss), an dem der Piepser angeschlossen ist
der zweite Parameter ist die Frequenz, die der ton haben soll. In unserem Beispiel sin das 1000 Hz.

Und mit noTone() hört der Piepser wieder auf.

```c
  tone(PIEPSER, 1000);
  noTone(PIEPSER);
```

## Und wie könnte es weiter gehen?
* Kannst du auch eine Melodie abspielen?

<details>
  <summary>Hier klicken für Lösungsvorschläge - aber bitte erst selbst probieren! </summary>

  ```c
#define PIEPSER 12

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

void loop() {
  tone(PIEPSER, 1000);
  delay(1000);
  tone(PIEPSER, 500);
  delay(1000);
  tone(PIEPSER, 1000);
  delay(1000);
  tone(PIEPSER, 500);
  delay(1000);
  ```
</details>
