Описание Датчик света
В этом примере мы попробуем управлять светодиодом, используя фоторезистор в качестве датчика освещенности.
Немного теории.
Резистивный делитель.
При проектировании электрических цепей возникают случаи, когда необходимо уменьшить величину напряжения (разделить его на несколько частей) и только часть подавать на нагрузку. Для этих целей используют делители напряжения.
Входное напряжение и выходное такого делителя связаны коэффициентом передачи. Ниже на рисунках приведены примеры зависимости выходного напряжения от соотношения сопротивлений в делителе.
Резисторы R1 - 360 Ом, R2 - 10 кОм.
Работа датчика основана на свойстве фоторезистора изменять величину своего сопротивления в зависимости от степени освещенности.
В отсутствии освещения величина сопротивления фоторезистора составляет 10 Ком.
А при освещении ярким солнечным светом или обычной лампочкой сопротивление фоторезистора уменьшиться в 10-20 раз.
Соответственно на средней точке между фоторезистором и резистором R2 согласно правилу резистивного делителя будет изменяться напряжение. Так же эта средняя точка подключена к контакту A0 платы Ардуино. А0 – это аналоговый вход платы, который «умеет» измерять напряжение от 0 вольт до 5 Воль и преобразовывать измеренные величины в цифровой код со значением 0-1024.
Пример 1
int led = 9; //Устанавливаем переменную для светодиода
int liht = 0; // Устанавливаем переменную для фоторезистора
void setup()
{
pinMode(led, OUTPUT);
}
void loop()
{
if (analogRead(light) < 800) digitalWrite(led, HIGH);
// 800 – это значение в пределах 0 – 1024. Т.е Ардуино измеряет напряжение на контакте //А0, преобразовывает его в цифровое значение. И, если это значение меньше значения //900, то светодиод включается.
else digitalWrite(led, LOW); //иначе светодиод выключаем
}
Для примера можно изменить границу (значение от 0 до 1023) срабатывания датчика.
Так же можно изменить алгоритм работы датчика. Т.е, что бы при значениях ниже 900 светодиод включался
/*Так же, как в предыдущем примере устанавливаем переменные для фоторезистора и светодиода
*/
//Подключаем фоторезистор
int lightPin = 0;
int ledPin = 9; // в данном примере светодиод обязательно долен быть подключен к //контакам 3,5,6,9,10,11. Это контакты, которые могут работать в режиме ШИМ.
void setup()
{
pinMode(ledPin, OUTPUT); // устанавливаем контакт светодиода, как выход
}
void loop()
{
int lightLevel = analogRead(lightPin);
lightLevel = map(lightLevel, 0, 900, 0, 255);
lightLevel = constrain(lightLevel, 0, 255);
analogWrite(ledPin, lightLevel);
}