


Привет! Сегодня сделаем обзор на фоторезистор KY-018 для Ардуино. А также, соберем простую схему и используем лазер для точных измерений фото датчика.
Содержание
В прошлый раз мы уже делали обзор на лазерный модуль для Ардуино, посмотрите тот пост, если пропустили или уже забыли.
Сегодня добавим к лазеру фоторезистор, чтобы посмотреть, какие данные предоставляет резистор при разных уровнях освещенности.
Для выполнения этого урока нам понадобятся
- Ардуино UNO
- Макетная плата
- Перемычки
- Лазер KY-008
- Фоторезистор KY-018
- Кабель USB
Принцип работы фоторезистора
Фоторезистор (фотосопротивление, LDR) – это резистор, электрическое сопротивление которого изменяется под влиянием световых лучей. Оно не зависит от приложенного напряжения, как у обычного резистора.
На схемах фоторезисторы изображаются такой схемой.



Фоторезисторы используются для определения наличия или отсутствия света. Или для измерения интенсивности света. В темноте, их сопротивление высокое. Когда датчик подвергается воздействию света, его сопротивление падает. Сопротивление зависит от интенсивности света.
Фоторезистор KY-018
На модуле KY-018 есть 3 пина для подключения к Ардуино. Для соединения с землей, питанием 5 вольт, и для снятия показаний на аналоговом пине.



Загрузим простой скетч на плату, чтобы посмотреть как работает модуль в обычных условиях.
Снимем показания с аналогового пина. Если дневной свет попадает на сенсор и при закрытом датчике.
int photoresistorPin = 0;
int photoresistorValue = 0;
void setup() {
Serial.begin(9600);
pinMode(LASER, OUTPUT);
}
void loop() {
photoresistorValue = analogRead(photoresistorPin);
Serial.println(photoresistorValue, DEC);
Delay(100);
}
Откроем плоттер и посмотрим на график. Если сенсор не закрыт от солнечного света, показания колеблются около 300 единиц.



Если закрыть датчик от света, то сопротивление растет до 900 единиц.



Лазер
Теперь добавим в схему лазер, чтобы освещать сенсор.



И добавим в скетч функции управления лазером. Сделаем так, чтобы интенсивность света изменялась в цикле. И посмотрим, как изменяются показания фоторезистора.
void loop() {
photoresistorValue = analogRead(photoresistorPin);
Serial.println(photoresistorValue, DEC);
for (int i=0; i<=255; i++){
analogWrite(LASER, i);
}
for (int i=255; i>=0; i--){
analogWrite(LASER, i);
}
}
Лазер включается и выключается очень быстро, так что глаза не успевают это заметить. Но фоторезистор считывает показания очень точно.



Полный текст программы
int LASER = 10;
int photoresistorPin = 0;
int photoresistorValue = 0;
void setup() {
Serial.begin(9600);
pinMode(LASER, OUTPUT);
}
void loop() {
photoresistorValue = analogRead(photoresistorPin);
Serial.println(photoresistorValue, DEC);
for (int i=0; i<=255; i++){
analogWrite(LASER, i);
}
for (int i=255; i>=0; i--){
analogWrite(LASER, i);
}
}
Заключение
Итак, мы рассмотрели фоторезистор KY-018 и его подключение к Ардуино. Использовали лазер для освещения сенсора, чтобы увидеть разницу дневного света и лазера.
Такую схему можно использовать и для передачи информации, например, с помощью азбуки морзе. Попробуем сделать такой проект в следующий раз.