Übung 4 fertig gemacht, Sketches von 5 und 6 umbeannnt
This commit is contained in:
parent
6e9d78b1d4
commit
7961afba66
@ -1,18 +0,0 @@
|
||||
#define PIEPSER 12
|
||||
|
||||
void setup() {
|
||||
pinMode(PIEPSER, OUTPUT);
|
||||
}
|
||||
|
||||
void loop() {
|
||||
digitalWrite(PIEPSER, HIGH);
|
||||
delay(100);
|
||||
digitalWrite(PIEPSER, LOW);
|
||||
delay(100);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
27
Arduino_Grundlagen/04_Piepser/04_Piepser.ino
Normal file
27
Arduino_Grundlagen/04_Piepser/04_Piepser.ino
Normal file
@ -0,0 +1,27 @@
|
||||
// Arduino Grundkurs des Z-Lab Bruchsal.
|
||||
// Dies ist Übung 4: Ein Piepser
|
||||
// Eine ausführliche Beschreibung mit Erklärungen findest du hier:
|
||||
// https://git.digital-infinity.de/DigitalInfinity/Z-Lab/src/branch/main/Arduino_Grundlagen/04_Piepser
|
||||
// Dort findest du auch eine Skizze für die Verkabelung
|
||||
|
||||
// Den Piepser schließen wir an PIN 12 an
|
||||
// Damit wir es leichter haben, wenn sich das mal ändert speichern wir die 12 in einer
|
||||
// sogenannten Konstante, die "PIEPSER" heißt.
|
||||
// Das ist so wie bei LED_BUILTIN in der zweiten Übung
|
||||
#define PIEPSER 12
|
||||
|
||||
void setup() {
|
||||
pinMode(PIEPSER, OUTPUT);
|
||||
}
|
||||
|
||||
void loop() {
|
||||
// mit tone() lassen wir den Piepser Töne machen. Hier lassen wir ihn einen Ton mit einer Frequenz von 1KHz erzeugen
|
||||
tone(PIEPSER, 1000);
|
||||
delay(1000);
|
||||
// und hiermit geht der Piepser wieder aus
|
||||
noTone(PIEPSER);
|
||||
delay(1000);
|
||||
}
|
||||
|
||||
|
||||
// Kannst du auch eine Melodie mit dem Arduino erzeugen?
|
Binary file not shown.
Before Width: | Height: | Size: 112 KiB |
Binary file not shown.
Before Width: | Height: | Size: 22 KiB |
BIN
Arduino_Grundlagen/04_Piepser/projekt_oeffnen.png
Normal file
BIN
Arduino_Grundlagen/04_Piepser/projekt_oeffnen.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 60 KiB |
@ -1,110 +1,88 @@
|
||||
TODO: Überarbeiten
|
||||
|
||||
# Z-Lab Arduino-Grundkurs Projekt 3: Externe LED und mehrere LEDs
|
||||
# Z-Lab Arduino-Grundkurs Übung 3: Piepser
|
||||
|
||||
In diesem Projekt lassen wir wieder LEDs blinken.
|
||||
Allerdings dieses Mal eine externe.
|
||||
In dieser Übung erzeugen wir Töne mit einem Piepser.
|
||||
|
||||
Zuerst öffnen wir das Projekt über den gewohnten Weg. Der Name ist "03_Externe_LED"
|
||||
Zuerst öffnen wir das Projekt über den gewohnten Weg. Der Name ist "04_Piepser"
|
||||
|
||||
![Projekt öffnen](image.png)
|
||||
![Projekt öffnen](projekt_oeffnen.png)
|
||||
|
||||
Wenn du dieses Projekt öffnest wunderst du dich bestimmt. Das sieht ja genau so aus wie beim letzten Mal.
|
||||
|
||||
Genau! Um mehrere LEDs und auch externe LEDs anzusteuern reicht unser C-Wissen aus den letzten beiden Projekten 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:
|
||||
|
||||
//TODO: BILD
|
||||
|
||||
Wenn wir nun einen Stromkreis brauchen, der eine LED, einen Widerstand und den Arduino miteinander verbindet dann müssten wir ohne das Breadboard einen Stromkreis basteln, der so aussieht:
|
||||
|
||||
//TODO: BILD
|
||||
|
||||
Oder wir löten auf einer normalen Platine einen Stromkreis wie diesen hier:
|
||||
|
||||
//TODO: BILD
|
||||
|
||||
Wenn wir nun aber ein paar Sachen hintereinander ausprobieren möchten müssten wir ja immer wieder umbasteln oder 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
|
||||
## Verkabeln wir den Piepser mit dem Arduino 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 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.
|
||||
<img src="Piepser.svg">
|
||||
|
||||
So und dann geht's wieder ans Programmieren.
|
||||
|
||||
* Wie müssen wir den Code anpassen, damit die externe LED blinkt?
|
||||
In der Datei 04_Piepser.ino finden wir (ohne die ganzen Kommentare) folgenden Quellcode:
|
||||
|
||||
<details>
|
||||
<summary>hier klicken für (zwei mögliche) Lösungen</summary>
|
||||
```c
|
||||
#define PIEPSER 12
|
||||
|
||||
### Lösung mit "hart-Kodierter" Nummer
|
||||
```c
|
||||
void setup() {
|
||||
pinMode(12, OUTPUT);
|
||||
}
|
||||
void setup() {
|
||||
pinMode(PIEPSER, OUTPUT);
|
||||
}
|
||||
|
||||
void loop() {
|
||||
digitalWrite(12, HIGH);
|
||||
delay(1000);
|
||||
digitalWrite(12, LOW);
|
||||
delay(1000);
|
||||
}
|
||||
```
|
||||
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.
|
||||
|
||||
### Lösung mit #define
|
||||
```c
|
||||
#define LED1 12
|
||||
## define
|
||||
|
||||
void setup() {
|
||||
pinMode(LED1, OUTPUT);
|
||||
}
|
||||
```c
|
||||
#define PIEPSER 12
|
||||
```
|
||||
|
||||
void loop() {
|
||||
digitalWrite(LED1, HIGH);
|
||||
delay(1000);
|
||||
digitalWrite(LED1, LOW);
|
||||
delay(1000);
|
||||
}
|
||||
```
|
||||
</details>
|
||||
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?
|
||||
* 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?
|
||||
* Kannst du auch eine Melodie abspielen?
|
||||
|
||||
<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 PIEPSER 12
|
||||
|
||||
TODO: hier Lösungsvorschläge
|
||||
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>
|
||||
</details>
|
Loading…
Reference in New Issue
Block a user