
Video
Schaltplan

Quellcode
1int ledPins[] = {2, 3, 4, 5, 6, 7};
2int potValue;
3
4void setup() {
5 for(int i = 0; i < 6; i++) {
6 pinMode(ledPins[i], OUTPUT);
7 }
8}
9
10void loop() {
11 for(int i = 0; i < 6; i++) {
12 potValue = analogRead(A0);
13 digitalWrite(ledPins[i], HIGH);
14 delay(potValue);
15 digitalWrite(ledPins[i], LOW);
16 }
17
18 for(int i = 4; i > 0; i--) {
19 potValue = analogRead(A0);
20 digitalWrite(ledPins[i], HIGH);
21 delay(potValue);
22 digitalWrite(ledPins[i], LOW);
23 }
24}FAQ
Was unterscheidet dieses Projekt von den vorherigen?▾
Der analoge Eingang (Potentiometer) wird mit einer bidirektionalen Schleife verbunden: Während das Licht hin und her läuft, wird der Potentiometerwert bei jedem Schritt ausgelesen und im Moment der Verzögerung aktualisiert. Dies bildet die Grundlage für die Anpassung des Verhaltens an den Sensorwert.
Der angezeigte Wert flackert – wie kann ich das beheben?▾
Bei analogen Messwerten sind geringe Schwankungen normal. Durch die Bildung des Durchschnitts aus mehreren Messwerten oder die Aufteilung des Wertes in gröbere Schritte mit der Funktion `map()` (z. B. in 10-ms-Schritten) lassen sich diese Schwankungen ausgleichen.
Kann ich anstelle des Potentiometers einen anderen Sensor verwenden?▾
Ja. Jeder Sensor, der einen analogen Ausgang wie ein LDR liefert, kann an denselben A0-Eingang angeschlossen werden; so kann beispielsweise die Lichtempfindlichkeit zunehmen, je dunkler die Umgebung wird. Du musst lediglich den Messbereich mit map() neu einstellen.
Welchen Analog-Pin soll ich verwenden?▾
Bei Uno können alle Pins zwischen A0 und A5 analoge Messwerte erfassen. Stelle sicher, dass der im Code verwendete Pin mit dem Anschluss in der Schaltung übereinstimmt; da A4 und A5 auch für I2C verwendet werden, solltest du A0 bevorzugen, falls du später ein Display anschließen möchtest.
