Arduino analoge Eingaben

Arduino analoge Eingaben Titelbild

Folgende Teile braucht ihr für die Anleitung

Arduino Mini Starterkit Produktbild

Arduino Mini Starterkit | 21.95€

Arduino Starterkit Produktbild

Arduino Starterkit | 49.95€

5.6 Analoge Sensoren

Mit den digitalen Pins (I/O-Pins) haben wir jetzt schon erfolgreich gearbeitet. Mit der digitalWrite()-Funktion können wir LEDs zum Leuchten bringen, mit digitalRead() können wir dann nachmessen, ob ein Button gedrückt wurde oder nicht und mit analogRead() können wir die Leuchtintensität einer LED bestimmen. So weit, so gut. Was uns jetzt fehlt, ist das Auslesen der analogen Anschlüsse.

Die Analog-In-Pins dann findest du gegenüber der digitalen I/O-Pins. Insgesamt gibt es sechs Stück, auch hier fängt die Nummerierung bei A0 an. Das A steht dabei für "Analog Input". Bisher haben wir immer nur ausgelesen, ob es einen Stromfluss gab HIGH oder halt nicht LOW. Mit den analogen Pins lässt sich das noch viel genauer machen. Nämlich circa 1023 mal genauer. Dass die bei dem Pin ankommende Stromspannung von 0V bis 5V reicht, ist in 1023 Schritten messbar. Dafür gibt es im Arduino einen so genannten A/D-Umwandler, also einen analog-zu-digital-Umwandler. Dieser nimmt die analogen Informationen und macht diese für uns benutzbar. Doch für welche Anwendungen müssen wir analoge Werte auslesen? Das ist unterschiedlich, aber vor allem einfache Komponenten kommen nur mit einer analogen Ausgaben zurecht so wie der Photowiderstand.



show
Anschlüsse am Arduino Anschlüsse Breadboard
~11 Langes Bein LED
GND Kurzes Bein LED
5V LDR eine Seite
A0 LDR andere Seite
GND+10kΩ LDR andere Seite
int ldr= A0;
int helligkeit = 0;
int led = 9;

void setup(){
  Serial.begin(9600);
  pinMode(led, OUTPUT);
}

void loop(){
  helligkeit =analogRead(ldr);

  Serial.print("Sensorwert = " );
  Serial.println(helligkeit);

  if (helligkeit < 512 ){
    digitalWrite(led, HIGH);
  }
  else{
    digitalWrite(led, LOW);
  }
  delay (100);
}

Wenn du das Programm ausführst, sollte die LED erstmal leuchten (außer natürlich, du sitzt bei dir im dunklen Keller) und wieder aufhören, zu leuchten, wenn du deinen Finger über den LDR bewegst. Über den seriellen Monitor kannst du dir genau ansehen, welche Werte geraden gemessen werden. Der LDR ist ein wenig "träge", was bedeutet, es kann ein paar Millisekunden dauern, bis eine Helligkeitsabnahme/-zunahme gemessen werden kann.

Schritt für Schritt erklärt: In den ersten drei Zeilen werden erst einmal die Variablen für die einzelnen Sensoren definiert. In Zeile 6 und 7 wird zuerst die serielle Kommunikation gestartet und dann noch der pinMode() für die LED definiert. Für den analogen Input müssen wir nichts aktivieren. In Zeile 11 wird dann der analoge Sensor ausgelesen. Diese Funktion heißt analogRead() und es muss als einziger Wert der analoge Pin übergeben werden. In Zeile 13 und 14 werden diese Messwerte dann ausgegeben. Neben der Serial.println()-Funktion gibt es auch noch die Möglichkeit, mit Serial.print() etwas auszugeben, ohne danach direkt eine neue Zeile zu erzeugen. ln steht dabei für line also engl. für neue Zeile. In Zeile 15 gibt es dann eine if-Bedingung, die die LED anschaltet, wenn der gemessene Wert unter 512 liegt. Den Wert haben wir recht willkürlich gelegt, aber es ergibt ja Sinn, dass die LED angeht, wenn es zu dunkel wird.

Noch Fragen oder Feedback?

Bevor du eine Frage stellen kannst musst du dich zuerst Anmelden oder Regestrieren!