Potentiometer: Einen analogen Sensor lesen

Aus hyperdramatik
Zur Navigation springen Zur Suche springen

Potentiometer

Aufbau

Aufbau Potentiometer
Aufbau Potentiometer

Der Aufbau eines Potentiometers ist im Groben immer der gleiche: An zwei Pins (E/A) werden Ground und Grundspannung angelegt. Am Pin S wird der sich verändernde Widerstand angeschlossen. Dreht man am Poti, wird der Schleifer über den Widerstandsring bewegt und verändert dadurch den Widerstandswert, indem er die Länge des mit Strom durchflossenen leitenden Materials mechanisch verändert. Nach den Prinzipien einer spannungsteilenden Schaltung (siehe Widerstände) wird die an die Pin S anliegende Spannung dadurch proportional zum Widerstand verändert. Der sich verändernde Wert der Spannung wird als analoger Wert des Potis gemessen und vom Arduino als Wert auf einer Skala von 0 bis 1023 eingeordnet.







Schaltplan, Steckplan und Reallife

Steckplan mit Poti
Schaltplan mit Poti

Das Potentiometer wird an den zwei äußeren Pins (unterschiedlich je Bauteil) and Ground und +5V an geschlossen. Der mittlere Pin, wird an A0 angeschlossen. Die INPUT Werte des Potentiometers werden an A0 abgelesen und verändern in unserem Aufbau im Anschluss die analogen OUTPUT Werte der eingebauten LED an Pin 13.

Code

 
// Diese Konstanten werden sich nicht verändern: 
int analogInPin = A0;  // Analoger Input, an den das Poti angeschlossen ist
int analogOutPin = 13; // Analoger Output (PWD Pin) der eingebauten LED

int sensorValue = 0;        // Wert, der vom Poti abgelesen wird
int outputValue = 0;        // Wert, der an den PWM Pin ausgegeben wird (analoger Output)

void setup() {
  // Beginn der seriellen Kommunikation
  Serial.begin(9600);
}

void loop() {
  // Analogen Wert ablesen lesen
  sensorValue = analogRead(analogInPin);
  // Skaliere den Input Wert auf den Output Wert des analogen Output Pins
  outputValue = map(sensorValue, 0, 1023, 0, 255);
  // Verändere den Output Wert entsprechend dem gemappten (skalierten) Input Wert
  analogWrite(analogOutPin, outputValue);

  // printe die Ergebnisse im Serial Monitor zur Kontrolle:
  Serial.print("sensor = ");
  Serial.print(sensorValue);
  Serial.print("\t output = ");
  Serial.println(outputValue); // println wechselt die Zeile

  // warte 32 Millisekunden, bevor der nächste Loop beginnt, um Bugs zu vermeiden:
  delay(2);