Beispiel 05 angepasst

This commit is contained in:
Alexander Gabriel 2024-12-30 21:42:53 +01:00
parent 7961afba66
commit 0993aaeac0
10 changed files with 103 additions and 5594 deletions

View File

@ -1,6 +1,6 @@
TODO: Überarbeiten
# Z-Lab Arduino-Grundkurs Übung 3: Piepser
# Z-Lab Arduino-Grundkurs Übung 4: Piepser
In dieser Übung erzeugen wir Töne mit einem Piepser.

View File

Before

Width:  |  Height:  |  Size: 155 KiB

After

Width:  |  Height:  |  Size: 155 KiB

View File

Before

Width:  |  Height:  |  Size: 358 KiB

After

Width:  |  Height:  |  Size: 358 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 175 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 366 KiB

View File

@ -1,5 +1,14 @@
// Arduino Grundkurs des Z-Lab Bruchsal.
// Dies ist Übung 5: Ein Lichtsensor (analoger Sensor)
// Eine ausführliche Beschreibung mit Erklärungen findest du hier:
// https://git.digital-infinity.de/DigitalInfinity/Z-Lab/src/branch/main/Arduino_Grundlagen/05_Lichtsensor
// Dort findest du auch eine Skizze für die Verkabelung
// Hier legen wir fest, wo der Sensor angeschlossen werden soll, nämlich am Port A0
int sensorPin = A0;
// für die Anzeige verwenden wir wieder die LED auf dem Arduino
int ledPin = LED_BUILTIN;
// Und zum Speichern der Helligkeit brauchen wir eine Variable, die eine Zahl (int wie Integer, also eine Ganzzahl ohne Vorzeichen - wie eine natürliche Zahl) speichern kann
int sensorWert = 0;
void setup() {
@ -7,14 +16,16 @@ void setup() {
}
void loop() {
// analogRead liest die aktuelle Helligkeit vom Lichtsensor
// Der Lichtsensor gibt eine Zahl zwischen 0 (für ganz dunkel) und 1000 (für ganz hell) zurück
sensorWert = analogRead(sensorPin);
// jetzt schalten iwr die LED ein
digitalWrite(ledPin, HIGH);
// Dann warten wir...
// Wir warten so lange, wie der Lichtsensor gesagt hat, dass es hell ist
// Also wenn es heller ist warten wir länger, weil die Zahl, die der Lichtsensor zurückgegeben hat größer ist
// Wenn es dunkler ist warten wir kürzer, weil die Zahl, die zurückgegeben wurde kleiner ist
delay(sensorWert);
digitalWrite(ledPin, LOW);
delay(sensorWert);
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

View File

@ -0,0 +1,86 @@
TODO: Überarbeiten
# Z-Lab Arduino-Grundkurs Übung 5: Lichtsensor (analoger Sensor)
In dieser Übung lesen wir einen Lichtsensor, einen sog. analogen Sensor aus.
Zuerst öffnen wir das Projekt über den gewohnten Weg. Der Name ist "05_Lichtsensor"
![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="04_Lichtsensor.svg">
So und dann geht's wieder ans Programmieren.
In der Datei 05_Piepser.ino finden wir (ohne die ganzen Kommentare) folgenden Quellcode:
```c
int sensorPin = A0;
int ledPin = LED_BUILTIN;
int sensorWert = 0;
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop() {
sensorWert = analogRead(sensorPin);
digitalWrite(ledPin, HIGH);
delay(sensorWert);
digitalWrite(ledPin, LOW);
delay(sensorWert);
}
```
Eigentlich gibt es hier gar nicht viel Neues.
Das Eine das in dieser Übung neu ist ist, dass wir die Ausgabe von einer Funktion als Eingabe für eine andere Funktion verwenden.
Das ist super praktisch, weil wir dann mit Werten, die z.B. von einem Sensor kommen, etwas machen können.
Das Andere ist, dass wir einen analogen Sensor auswählen.
Der Sensor gibt uns eine Zahl zwischen 0 und 1000 zurück, die wir in unserem Programm verwenden können.
## Zuweisen von Werten
```c
sensorWert = analogRead(sensorPin);
```
In dieser Zeile nehmen wir den Wert, den der Lichtsensor zurückgibt und "packen" oder "speichern" ihn in der Variable "sensorWert".
```c
delay(sensorWert);
```
Die Funktion delay() kennen wir schon aus den anderen Übungen. Bisher haben wir immer eine Zahl wie 100 oder 1000 angegeben, um zu bestimmen, wie lange das Programm verzögert werden soll.
Jetzt nehmen wir den Wert, den uns der Lichtsensor gegeben hat und sagen der delay()-Funktion, dass sie zwischen 0 und 1000 Milisekunden warten soll... Je nachdem, ob heller oder dunkler ist.
## Und wie könnte es weiter gehen?
* hast du noch den Piepser zur Hand? Könntest du den Piepser heller oder dunkler piepsen lassen, je nachdem, wie hell oder dunkel es ist?
<details>
<summary>Hier klicken für Lösungsvorschläge - aber bitte erst selbst probieren! </summary>
```c
//TODO: Lösungsvorschlag anpassen
#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>