Урок 10: Фоторезистор

1. Цель эксперимента

Познакомиться с работой фоторезистора и научиться использовать его показания (аналоговый сигнал) для управления яркостью светодиода через PWM.

2. Компоненты

Кол-во

Деталь

1

Плата Arduino UNO

1

Фоторезистор

1

Красный светодиод 5 мм

1

Резистор 10 kΩ (делитель фоторезистора)

1

Резистор 220 Ω (ограничение тока светодиода)

1

Макетная плата (breadboard)

5

Перемычки «папа–папа»

1

USB-кабель A-B

3. Немного знаний

Фото фоторезистора

Фоторезистор — полупроводниковый резистор, сопротивление которого падает при увеличении освещённости. Его часто используют в системах автоматического освещения, датчиках «день/ночь», сигнализациях и т.д.

  • При ярком свете сопротивление ≈ сотни Ом.

  • В темноте сопротивление растёт до сотен кОм.

  • Для получения напряжения, пропорционального свету, фоторезистор включают в делитель с постоянным резистором (10 kΩ). Это напряжение читают входом A0.

4. Схема подключения

Схема подключения фоторезистора к Arduino
  • Фоторезистор образует делитель с резистором 10 kΩ между 5 V и GND.

  • Узел делителя (средняя точка) идёт на аналоговый вход A0.

  • Светодиод подключён к пину 11 через резистор 220 Ω.

5. Пример кода

Код оставляем без изменений — он считывает показания фоторезистора и пропорционально им управляет яркостью светодиода.

photoresistor.ino
int potpin = 0; // инициализация аналогового контакта 0, подключенного к фотоваристору
int ledpin = 11; // инициализация цифрового контакта 11
int val = 0; // инициализация переменной val
void setup(){
  pinMode(ledpin, OUTPUT); // установка цифрового контакта 11 как "выход"
  Serial.begin(9600); // установка скорости передачи данных на "9600"
}
void loop(){
  val = analogRead(potpin); // считывание значения сенсора и присваивание его val
  Serial.println(val); // отображение значения val
  analogWrite(ledpin, val / 4); // установка яркости(максимальное значение 255)
  delay(10); // ожидание 0.01 секунды
}

6. Как работает код

  • analogRead(A0) возвращает значение 0–1023.

  • Делим на 4 → получится 0–255 — требуемый диапазон для analogWrite.

  • Чем ярче свет, тем ниже сопротивление фоторезистора, тем выше напряжение на входе A0, тем ярче светодиод.

7. Пошаговый запуск

  1. Соберите схему согласно рисунку.

  2. Подключите Arduino и выберите плату UNO.

  3. Скопируйте скетч, загрузите его.

  4. Откройте Serial Monitor — увидите поток чисел, отражающих уровень освещённости.

  5. Затеняйте/освещайте фоторезистор и наблюдайте, как меняется яркость светодиода.

8. Что может пойти не так

Симптом

Причина

Решение

Светодиод не светит

Пин, резистор или полярность светодиода подключены неверно

Проверьте схему, убедитесь, что пин 11 объявлен как OUTPUT

Значения в Serial Monitor всегда ~1023 или ~0

Делитель собран неправильно / пропал контакт

Проверьте проводку фоторезистора и резистора 10 kΩ

Реакция «наоборот» (ярче в темноте)

Поменяли местами фоторезистор и 10 kΩ в делителе

Просто переставьте их или измените формулу в коде

9. Эксперименты

  • Замените светодиод на активный зуммер — получите звуковой датчик света.

  • Используйте два фоторезистора и сравнивайте их показания для простой системы слежения за источником света.