Potentiometer: Einen analogen Sensor lesen: Unterschied zwischen den Versionen
(8 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 15: | Zeile 15: | ||
=== Reallife === | |||
=== Schaltplan, Steckplan und Reallife === | |||
[[Datei:Analog Read Steckplan1.png|400px|thumb|left|Steckplan mit Poti]] | |||
[[Datei:Analog Read Schaltplan1.png|300px|thumb|center|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 === | === Code === | ||
<pre> | |||
// 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); | |||
</pre> |
Aktuelle Version vom 23. Juli 2021, 15:31 Uhr
Potentiometer
Aufbau
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
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);