Я получаю странные данные от моего датчика LDR.
Без каких-либо существенных изменений свет постоянно переходит от 0 к своему максимальному значению 1023 и обратно.
В чем может быть проблема? Возможно ли, что мой датчик LDR сломан?
Код:
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
}
Выход:
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
и так далее
Это говорит о том, что вы не правильно подключили его. Я предполагаю, что у вас есть LDR, подключенный к земле, и последовательный резистор, который образует делитель для Vcc. Если значение равно нулю, это будет означать, что сопротивление LDR меньше 1/1000 последовательного резистора. Это возможно. Но тогда 1023 невозможен, потому что это означало бы, что сопротивление LDR более чем в 1000 раз превышает последовательное сопротивление, а у LDR нет диапазона> 1000 000 между световым и темным сопротивлением.
Если у вас есть мультиметр, измерьте темновое и светлое сопротивление LDR и выберите последовательное сопротивление между этими значениями. Последовательное сопротивление идет между Vcc и входом АЦП, LDR между входом АЦП и землей.
edit
Вы говорите, что контакт не был подключен, и все же у вас есть эти варианты ввода. Если вы начертите их, вы получите идеальный синус:
Не исключено, что АЦП уловил это из-за шума, излучаемого сетью. Синус намного медленнее, чем частота сети, но это артефакт, который вы можете получить с субдискретизацией.
Стивенвх
Бойд