Mit Sensoren können physikalische Phänomene für ein Arduino erfassbar gemacht werden. Hier findest du einige der am häufigsten eingesetzten Sensoren.
Mit Sensoren können physikalische Phänomene für ein Arduino erfassbar gemacht werden. Hier findest du einige der am häufigsten eingesetzten Sensoren.
Ein Touch-Sensor erkennt Berührungen auf seiner Oberfläche, ohne dass eine mechanische Bewegung erforderlich ist. Er kann zum Beispiel verwendet werden, um eine LED einzuschalten.
VCC (Touch-Sensor) → 5V (Arduino)
GND (Touch-Sensor) → GND (Arduino)
OUT (Touch-Sensor) → Digitaler Pin 7 (Arduino)
Zusätzlich für das Beispiel:
Anode (langes Beinchen) der LED → Digitaler Pin 13 (Arduino)
Kathode (kurzes Beinchen) der LED → GND (Arduino)
void setup() {
pinMode(7, INPUT); // Setze den Pin 7 als Eingang für den Touch-Sensor
pinMode(13, OUTPUT); // Setze den Pin 13 als Ausgang für die LED
}
void loop() {
if (digitalRead(7) == HIGH) { // Wenn der Sensor berührt wird
digitalWrite(13, HIGH); // Schalte die LED ein
} else {
digitalWrite(13, LOW); // Schalte die LED aus
}
delay(100); // Warte 100ms vor der nächsten Messung
}
In diesem Beispiel wird die LED eingeschaltet, wenn der Touch-Sensor berührt wird. Sobald der Sensor nicht mehr berührt wird, geht die LED wieder aus.
Ein Lichtsensor oder Lichtabhängiger Widerstand (LDR, Light Dependent Resistor) ist ein Widerstand, dessen Widerstandswert sich mit der Lichtintensität ändert. Er kann zum Beispiel verwendet werden, um eine LED einzuschalten, wenn es dunkel wird.
Einen Anschluss des LDR → 5V (Arduino)
Der andere Anschluss des LDR → Analog-Pin A0 (Arduino) und einen 10kΩ Widerstand
Der andere Anschluss des 10kΩ Widerstands → GND (Arduino)
Zusätzlich für das Beispiel:
Anode (langes Beinchen) der LED → Digitaler Pin 13 (Arduino)
Kathode (kurzes Beinchen) der LED → GND (Arduino)
void setup() {
pinMode(A0, INPUT); // Setze den Pin A0 als Eingang für den LDR
pinMode(13, OUTPUT); // Setze den Pin 13 als Ausgang für die LED
Serial.begin(9600); // Starte die serielle Kommunikation mit 9600 Baud
}
void loop() {
int sensorValue = analogRead(A0); // Lese den Wert des LDR
Serial.println(sensorValue); // Sende den Wert des LDR über die serielle Schnittstelle
if (sensorValue < 500) { // Wenn es dunkel ist (Wert unter 500)
digitalWrite(13, HIGH); // Schalte die LED ein
} else {
digitalWrite(13, LOW); // Schalte die LED aus
}
delay(100); // Warte 100ms vor der nächsten Messung
}
Der lichtabhängige Widerstand (LDR) bildet zusammen mit einem 10kΩ Widerstand einen Spannungsteiler. Der Punkt zwischen dem LDR und dem Widerstand wird an den analogen Eingang (A0) des Arduino angeschlossen. Abhängig von der Lichtintensität ändert sich der Widerstand des LDR, was eine Änderung der Spannung am analogen Pin bewirkt.
Wenn es dunkel ist, steigt der Widerstand des LDR, wodurch die Spannung am analogen Eingang niedriger wird. Der Code überprüft diesen Wert, und wenn er unter einem bestimmten Schwellenwert liegt (z. B. 500), schaltet er die LED ein.
In diesem Beispiel wird die LED eingeschaltet, wenn der LDR eine geringe Lichtintensität erkennt, also wenn es dunkel wird. Sobald es wieder heller wird, geht die LED aus.
Ein Joystick ist ein Eingabegerät, das üblicherweise zwei Achsen (X und Y) hat, mit denen die Position in zwei Dimensionen erfasst wird. Er kann zum Beispiel verwendet werden, um die Helligkeit von zwei LEDs zu steuern.
VCC (Joystick) → 5V (Arduino)
GND (Joystick) → GND (Arduino)
VRx (X-Achse des Joysticks) → Analog-Pin A0 (Arduino)
VRy (Y-Achse des Joysticks) → Analog-Pin A1 (Arduino)
Zusätzlich für das Beispiel:
Anode (langes Beinchen) der LED 1 → Digitaler Pin 9 (Arduino) (PWM-Pin)
Kathode (kurzes Beinchen) der LED 1 → GND (Arduino)
Anode (langes Beinchen) der LED 2 → Digitaler Pin 10 (Arduino) (PWM-Pin)
Kathode (kurzes Beinchen) der LED 2 → GND (Arduino)
void setup() {
pinMode(A0, INPUT); // Setze den Pin A0 als Eingang für die X-Achse des Joysticks
pinMode(A1, INPUT); // Setze den Pin A1 als Eingang für die Y-Achse des Joysticks
pinMode(9, OUTPUT); // Setze den Pin 9 als Ausgang für die erste LED
pinMode(10, OUTPUT); // Setze den Pin 10 als Ausgang für die zweite LED
}
void loop() {
int xValue = analogRead(A0); // Lese den Wert der X-Achse des Joysticks
int yValue = analogRead(A1); // Lese den Wert der Y-Achse des Joysticks
// Konvertiere die Joystick-Werte (0-1023) in PWM-Werte (0-255)
int led1Brightness = map(xValue, 0, 1023, 0, 255);
int led2Brightness = map(yValue, 0, 1023, 0, 255);
// Steuere die LEDs entsprechend der Joystick-Position
analogWrite(9, led1Brightness);
analogWrite(10, led2Brightness);
delay(15); // Warte kurz, um eine sanfte Änderung der Helligkeit zu ermöglichen
}
Der Joystick hat zwei Potentiometer für die X- und Y-Achse, die als analoge Spannungen an den analogen Eingängen A0 und A1 des Arduino eingelesen werden. Diese Spannungen werden in PWM-Werte (eine Spannung zwischen 0 und 5 V) umgerechnet, die zur Steuerung der Helligkeit von zwei LEDs verwendet werden. Die LEDs sind an die PWM-fähigen digitalen Pins 9 und 10 des Arduino angeschlossen.
Wenn der Joystick bewegt wird, ändern sich die Spannungen an den Achsen. Der Code liest diese Werte und steuert die LEDs entsprechend. Zum Beispiel wird die Helligkeit der ersten LED durch die X-Achse des Joysticks und die der zweiten LED durch die Y-Achse gesteuert. Dies ermöglicht eine einfache Steuerung der Helligkeit zweier LEDs durch den Joystick.
Ein Ultraschall-Distanzsensor misst Entfernungen, indem er Ultraschallwellen aussendet und die Zeit misst, die diese benötigen, um von einem Objekt zurückreflektiert zu werden. Er kann zum Beispiel verwendet werden, um die Helligkeit einer LED basierend auf der gemessenen Distanz zu steuern.
VCC (Ultraschall-Distanzsensor) → 5V (Arduino)
GND (Ultraschall-Distanzsensor) → GND (Arduino)
Trig (Trigger-Pin des Sensors) → Digitaler Pin 9 (Arduino)
Echo (Echo-Pin des Sensors) → Digitaler Pin 10 (Arduino)
Zusätzlich für das Beispiel:
Anode (langes Beinchen) der LED → Digitaler Pin 11 (Arduino) (PWM-Pin)
Kathode (kurzes Beinchen) der LED → GND (Arduino)
long duration;
int distance;
void setup() {
pinMode(9, OUTPUT); // Setze den Pin 9 als Ausgang für den Trig-Pin
pinMode(10, INPUT); // Setze den Pin 10 als Eingang für den Echo-Pin
pinMode(11, OUTPUT); // Setze den Pin 11 als Ausgang für die LED
}
void loop() {
// Ultraschall-Impuls senden
digitalWrite(9, LOW);
delayMicroseconds(2);
digitalWrite(9, HIGH);
delayMicroseconds(10);
digitalWrite(9, LOW);
// Echo-Impuls empfangen
duration = pulseIn(10, HIGH); // Misst die Zeitspanne, in der der Echo-Pin HIGH ist, also die Zeit, die der Ultraschallimpuls benötigt, um zurückzukehren
// Entfernung berechnen
distance = duration * 0.034 / 2; // Umrechnung von Zeit in Entfernung
// Konvertiere die gemessene Entfernung (0-400 cm) in PWM-Werte (0-255)
int brightness = map(distance, 0, 400, 255, 0); // Je näher, desto heller
// Helligkeit der LED entsprechend der Entfernung steuern
analogWrite(11, brightness);
delay(100); // Kurze Pause zwischen den Messungen
}
Der Ultraschall-Distanzsensor sendet einen Ultraschallimpuls über den Trig-Pin und misst die Zeit, die der Impuls benötigt, um nach dem Reflektieren von einem Objekt zum Echo-Pin zurückzukehren. Diese Zeit wird in eine Entfernung umgerechnet.
pulseIn(10, HIGH): Diese Funktion misst die Zeitspanne (in Mikrosekunden), während der Echo-Pin (Pin 10) HIGH ist. Das bedeutet, dass pulseIn() die Zeit misst, die der Ultraschallimpuls benötigt, um vom Sensor ausgesendet zu werden, von einem Objekt reflektiert zu werden und schließlich wieder vom Sensor empfangen zu werden.
In diesem Beispiel wird die LED heller, je näher ein Objekt am Sensor ist. Die pulseIn()-Funktion spielt hierbei eine zentrale Rolle, da sie die Zeit für die Rückkehr des Ultraschallsignals misst und daraus die Entfernung berechnet.