Урок 6. Как сделать из светодиода датчик освещения

Когда мне рассказали, что можно из светодиода сделать датчик освещения, я заинтересовался. Мне показали, как это работает, и я удивился. Итак начнем.

Все очень просто: если приложить к светодиоду обратное напряжение (pin 2 == 1, pin 3 == 0), то это зарядит собственную (паразитную) емкость ног микроконтроллера. Если теперь переключить 2-ю ногу на вход, и не забыть отключить подтягивающий резистор, то емкость будет разряжаться обратным током фотодиода, который зависит от освещенности, и через некоторое время нога переключится в лог. 0.

И просто измеряем время заряда.

int led=13;
void setup() 
{
Serial.begin(9600);
pinMode(led, OUTPUT);
}
 
void LOOP()
{
LONG int j;
 
// Прикладываем обратное напряжение 
// это зарядит собственную емкость вывода 2
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
digitalWrite(2, HIGH);
digitalWrite(3, LOW);
 
pinMode(2, INPUT); 
// Переключаем 2й вывод на вход

digitalWrite(2, LOW); 
// и отключаем на нем подтягивающий резистор
 
// Считаем сколько времени потребуется, 
// чтобы емкость разрядилась до логич. 0
FOR ( j = 0; j < 128000; j++) 
{
IF (digitalRead(2)==0) break;
}
 
Serial.println(j); 
// Выводим значение счетчика в COM-порт

delay(100); 
// Пауза, чтобы не переполнять буфер COM-порта

IF(j<4000)
digitalWrite(led,HIGH);
ELSE
digitalWrite(led,LOW);
}

Советую вам менять значение if(j<4000) так как везде разная освещенность.

Добавить комментарий

Ваш адрес email не будет опубликован.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>