Ich erhalte seltsame Daten von meinem LDR-Sensor.
Ohne nennenswerte Änderungen geht das Licht ständig von 0 auf seinen Maximalwert 1023 und zurück.
Was könnte das Problem sein? Kann es sein, dass mein LDR-Sensor defekt ist?
Code:
int ldr = 0; //analog pin to which LDR is connected
int ldr_value = 0; //variable to store LDR values
void setup()
{
Serial.begin(9600); //start te serial monitor
}
void loop()
{
ldr_value = analogRead(ldr); //reads the LDR values
Serial.println(ldr_value); //prints the LDR values to serial monitor
delay(1000); //wait
}
Ausgang:
0
0
0
0
0
26
102
206
349
505
643
813
957
1023
1023
1023
964
821
633
434
249
83
0
0
0
0
usw
Dies deutet darauf hin, dass Sie es nicht richtig angeschlossen haben. Ich gehe davon aus, dass Sie Ihren LDR mit Masse und dem Vorwiderstand verbunden haben, der den Teiler zu Vcc bildet. Wenn der Wert Null ist, würde dies bedeuten, dass der Widerstand des LDR weniger als 1/1000 des Serienwiderstands beträgt. Das ist möglich. Aber dann ist der 1023 nicht möglich, da dies bedeuten würde, dass der Widerstand des LDR größer als das 1000-fache des Vorwiderstands ist und LDRs keinen > 1000 000-Bereich zwischen Hell- und Dunkelwiderstand haben.
Wenn Sie ein Multimeter haben, messen Sie den Dunkel- und Lichtwiderstand des LDR und wählen Sie einen Serienwiderstand zwischen diesen Werten. Der Serienwiderstand liegt zwischen Vcc und dem ADC-Eingang, der LDR zwischen dem ADC-Eingang und Masse.
Bearbeiten
Sie sagen, der Pin war nicht verbunden, und Sie haben trotzdem diese Eingangsvariationen. Wenn Sie sie auftragen, erhalten Sie einen perfekten Sinus:
Es ist nicht unmöglich, dass der ADC dies aus dem Rauschen aufgegriffen hat, das das Netz ausstrahlt. Der Sinus ist viel langsamer als die Netzfrequenz, aber das ist ein Artefakt, das Sie mit Subsampling bekommen können.
stevenvh
Junge