Du möchtest lernen, wie du analoge Sensoren mit dem Arduino ausliest und damit eine LED steuerst? In diesem Tutorial zeige ich dir Schritt für Schritt, wie du mit einem Arduino Analog Input arbeitest und verschiedene Sensortypen einsetzt.
Während digitale Eingänge nur zwei Zustände kennen (HIGH/LOW), ermöglichen analoge Eingänge das Erfassen von Werten zwischen 0 und 1023. Ich erkläre dir, wie du mit einem Potentiometer, einem Fotowiderstand (LDR) oder einem drucksensitiven Sensor (FSR) die Blinkgeschwindigkeit einer LED steuerst.
Das lernst du in diesem Tutorial:
- Analoge Sensoren am Arduino anschließen
- Sensorwerte mit
analogRead()auslesen - LED-Verhalten dynamisch steuern
Was du für dieses Projekt brauchst
- Arduino-Board (Uno, Nano oder kompatibel) – Auf Amazon ansehen
- LED (beliebige Farbe) – Auf Amazon ansehen
- Widerstand 220 Ohm – Auf Amazon ansehen
- Potentiometer 10kΩ – Auf Amazon ansehen
- Fotowiderstand LDR – Auf Amazon ansehen
- Referenzwiderstand 100kΩ – Auf Amazon ansehen
- Drucksensor FSR – Auf Amazon ansehen
- Referenzwiderstand für FSR (10kΩ) – Auf Amazon ansehen
- Jumperkabel Set – Auf Amazon ansehen
- Breadboard – Auf Amazon ansehen
Technische Grundlagen zum Arduino Analog Input
Wie funktionieren analoge Eingänge?
Dein Arduino verfügt über mehrere analoge Eingangspins (A0-A5 beim Uno). Diese nutzen einen 10-Bit-Analog-Digital-Wandler (ADC), der Spannungen zwischen 0V und 5V in digitale Werte von 0 bis 1023 umwandelt. So kannst du stufenlose Messungen durchführen – perfekt für Sensoren!
Die drei Sensoren, die ich dir zeige
Potentiometer:
- Funktioniert als variabler Spannungsteiler
- Du stellst den Wert manuell durch Drehen ein
- Hat drei Anschlüsse: VCC, Signal, GND
Fotowiderstand (LDR):
- Sein Widerstand ändert sich mit der Lichtstärke
- Du brauchst einen Referenzwiderstand für den Spannungsteiler
- Je heller es ist, desto niedriger wird der Widerstand
Force Sensitive Resistor (FSR):
- Sein Widerstand ändert sich bei Druck oder Berührung
- Auch hier benötigst du einen Referenzwiderstand
- Je stärker du drückst, desto niedriger wird der Widerstand
So verkabelst du die Schaltung
Variante 1: Mit Potentiometer
Die einfachste Variante für den Einstieg:
- Linker Pin des Potis: 5V
- Mittlerer Pin (Schleifer): A0 (Analog Pin 0)
- Rechter Pin: GND
- LED Anode (+, längeres Bein): Pin 13 (über 220Ω Widerstand)
- LED Kathode (-, kürzeres Bein): GND
Variante 2: Mit Fotowiderstand (LDR)

Hier baust du einen Spannungsteiler auf:
- LDR: Zwischen 5V und A0
- 100kΩ Widerstand: Zwischen A0 und GND
- LED Anode (+): Pin 13 (über 220Ω Widerstand)
- LED Kathode (-): GND
So funktioniert’s: Je mehr Licht auf den LDR fällt, desto niedriger wird sein Widerstand. Dadurch steigt die Spannung an Pin A0, und dein Arduino misst einen höheren Wert.
Variante 3: Mit Force Sensitive Resistor (FSR)

Auch hier nutzt du einen Spannungsteiler:
- FSR: Zwischen 5V und A0
- Referenzwiderstand (10kΩ): Zwischen A0 und GND
- LED Anode (+): Pin 13 (über 220Ω Widerstand)
- LED Kathode (-): GND
Wichtig: Bei LDR und FSR entsteht durch den Spannungsteiler eine variable Spannung an A0. Diese Spannung misst dein Arduino und wandelt sie in einen digitalen Wert um.
Der Arduino-Code
Jetzt kommt der spannende Teil – der Code ist für alle drei Sensoren identisch:
// von David Cuartielles und Tom Igoe
int sensorPin = 0;
int ledPin = 13;
int sensorValue = 0;
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop() {
sensorValue = analogRead(sensorPin);
digitalWrite(ledPin, HIGH);
delay(sensorValue);
digitalWrite(ledPin, LOW);
delay(sensorValue);
}
Was passiert hier genau?
Lass mich dir den Code Zeile für Zeile erklären:
sensorPin = 0: Ich lese den analogen Eingang A0 ausledPin = 13: Die LED hängt an Pin 13 (beim Uno ist dort auch die Onboard-LED)analogRead(sensorPin): Diese Funktion liest den Sensorwert zwischen 0 und 1023 ausdelay(sensorValue): Die Wartezeit in Millisekunden steuert die Blinkgeschwindigkeit- Die LED blinkt schneller bei niedrigen Werten und langsamer bei hohen Werten
Praxis-Tipp: Bei einem Wert von 500 blinkt die LED alle halbe Sekunde, bei 1000 jede Sekunde.
Mein Fazit und deine nächsten Schritte
Glückwunsch! Du hast erfolgreich gelernt, wie du analoge Sensoren mit dem Arduino ausliest. Das Schöne dabei: Die drei vorgestellten Sensoren (Potentiometer, LDR, FSR) funktionieren alle nach dem gleichen Prinzip und können mit identischem Code betrieben werden – nur die Verkabelung unterscheidet sich leicht.
So geht’s weiter
Ich empfehle dir, folgende Experimente auszuprobieren:
- Geschwindigkeit anpassen: Teile den Sensorwert durch 4 (
sensorValue / 4), um schnelleres Blinken zu erreichen - Werte anzeigen: Füge
Serial.begin(9600)im Setup undSerial.println(sensorValue)im Loop hinzu, um die Werte im Serial Monitor zu sehen - Mehrere Sensoren: Schließe verschiedene Sensoren an A0, A1, A2 usw. an und vergleiche die Werte
- Andere Ausgänge: Steuere statt einer LED einen Servo-Motor oder einen Piezo-Lautsprecher
Mein Geheimtipp: Die Onboard-LED an Pin 13 eignet sich perfekt zum Testen – du sparst dir sogar den externen Widerstand und kannst sofort loslegen!
Probiere ruhig verschiedene Sensorwerte aus und beobachte, wie sich das Verhalten der LED ändert. Je mehr du experimentierst, desto besser verstehst du das Zusammenspiel von analogem Input und digitalem Output.

Hallo, bin neu und suche gerade nach meinem Problem im netz – aber ich finde nichts :-(
Kann mir jemand helfen?
int pot=analogRead(poti); //read the analogvalue
if(analogRead(poti)==HIGH) {spd=map(pot, 0,1023, 1,1000);} //map 0-1023 to 1-1000
else {spd=150;}
Ich möchte, wenn ich den mittelstift des Potis rauszihe aus A0, das dann sofort spd=150 aus ELSE übernommen wird, das geht aber nicht :-(
Danke
Kann man mit den Analogeingang auch einen erdfeuchtesensor auslesen?
Diesen da z.Bsp.?
https://www.ramser-elektro.at/shop/bausaetze-und-platinen/giess-o-mat-sensor-bausatz/
Hallo, bin ein absoluter Neuling. Mir ist nicht ganz klar woher der Arduino weiß ob er einen digitalen PWM Pin ansteuern soll oder einen der analogen A0-A5 Pins.
beides mal würde doch der Befehl
analogWrite(Pin, X); heißen?
Genauso ist mir nicht klar, wenn ich definiere
pinMode(3, INPUT); woher der Arduino nun weiß ob der den analogen Pin A3 als Input definieren soll oder den digitalen PWM Pin 3?
Vielen Dank schon einmal falls mir da jemand weiterhelfen kann.
Hallo Stefan,
kurze Frage und zwar möchte ich über ein Labor-Netzgerät Werte zwischen 0…5 V in den Analogen Input werfen und damit dann eine Motordrehzahl steuern. Ist das nur mit dem Arduino Realisierbar ? Zum Betreiben des Motors würde ich dann noch einen Transistor zwischen schieben damit der auch genung Spannung hat.
Vielen Danke
Sebi
Hi Matrixxx,
das weiß ich auch nicht genau, aber ich glaube, dafür ist der aref-Pin da. Vielleicht hilft Dir dieses Tutorial weiter.
Liebe Grüße
Stefan“
super tutorial, vielen dank. aber ich hätte da noch einen fall:
ich möchte spannungen z.b. zwischen 2-3.5 volt messen – ebenfalls mit 10bit genauigkeit. wie realisiert man sowas?
danke dir :)
michael.
hallo, bin neueinsteiger und deine tutorials sind extrem hilfreich! ;-)
mal ne frage am rande: hat das eigentlich einen bestimmten grund, warum die variablen zu anfang des programms gleich initialisiert werden? Etwa die integer variable „sensorvalue“? würde das auch gehen, wenn man sie nur deklariert, also:
int sensorvalue;
im verlauf des programmes erhält sie ja eh einen anderen wert…!?
Ich hoffe dir ist bewusst dass du ein verdammtes Genie bist
Ich hoffe dir ist b
Hallo Stefan.
Danke für den Tipp. Funktioniert hat es leider nicht. Ich kann es mir nicht erklären, wieso dass es bei einem delay(500) geht und bei einem delay(1000) nicht. die Spannung ist wie gesagt konstant. Aber ich werde den Sketch halt nun so nutzen. ;) danke