Arduino Analog Input – Sensoren auslesen

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:


Sieh dir jetzt meinen neuen Arduino-Videokurs an: Jetzt ansehen!


  • Analoge Sensoren am Arduino anschließen
  • Sensorwerte mit analogRead() auslesen
  • LED-Verhalten dynamisch steuern

Was du für dieses Projekt brauchst

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)

Arduino Analog Input Schaltplan mit Fotowiderstand LDR zur Steuerung einer LED

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)

Arduino Analog Input Schaltplan mit Force Sensitive Resistor FSR zur Drucksteuerung

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 aus
  • ledPin = 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 aus
  • delay(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 und Serial.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.

0 0 votes
Article Rating
33 Comments
Newest
Oldest Most Voted
Inline Feedbacks
Alle Kommentare anzeigen
Klaus
8 Jahre zuvor

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

Gerhard
8 Jahre zuvor

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/

Felix
9 Jahre zuvor

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.

Sebi
10 Jahre zuvor

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

11 Jahre zuvor

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“

matrixxx
11 Jahre zuvor

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.

joe
11 Jahre zuvor

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…!?

Bensch
11 Jahre zuvor

Ich hoffe dir ist bewusst dass du ein verdammtes Genie bist

Bensch
11 Jahre zuvor

Ich hoffe dir ist b

Phil
12 Jahre zuvor

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