Beispiel 05 angepasst
@ -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.
|
||||
|
||||
|
Before Width: | Height: | Size: 155 KiB After Width: | Height: | Size: 155 KiB |
Before Width: | Height: | Size: 358 KiB After Width: | Height: | Size: 358 KiB |
Before Width: | Height: | Size: 175 KiB |
Before Width: | Height: | Size: 366 KiB |
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
BIN
Arduino_Grundlagen/05_Lichtsensor/projekt_oeffnen.png
Normal file
After Width: | Height: | Size: 65 KiB |
86
Arduino_Grundlagen/05_Lichtsensor/readme.md
Normal 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>
|