4.03.5. Лабораторная работа №4.3.5.md
Датчик света
Тема работы
Многие устройства вокруг нас умеют адаптироваться к условиям освещения. Экран вашего смартфона становится ярче на солнце, а уличные фонари зажигаются с наступлением сумерек. В основе этих систем лежит датчик света. В этой лабораторной работе мы подключим фоторезистор к Рудирону
и создадим две умные системы: аналог функции «автояркость» и «умный ночник».
Цель
- Научиться подключать фоторезистор с использованием схемы делителя напряжения.
- Понять, как калибровать датчик для работы в конкретных условиях освещения.
- Создать две практические программы: для плавной регулировки яркости и для порогового включения света.
Оборудование и материалы
- Отладочная плата
Рудирон
. - Макетная плата.
- 1 фоторезистор.
- 1 светодиод (любого цвета).
- 1 резистор номиналом 220 Ом (для светодиода).
- 1 резистор номиналом 10 кОм (для делителя напряжения).
- Соединительные провода.
- USB-кабель для подключения
Рудирона
. - Компьютер с
Arduino IDE
. - Фонарик (например, от телефона).
Ход работы
-
Делитель напряжения
Фоторезистор — это компонент, который меняет своё
сопротивление
в зависимости от освещённости. Но микроконтроллер не умеет измерятьсопротивление
напрямую, он умеет измерять тольконапряжение
. Как же нам получить нужные данные?Мы используем простую, но очень важную схему — делитель напряжения. Мы соединяем наш фоторезистор и обычный резистор последовательно. В точке их соединения
напряжение
будет меняться в зависимости от того, как меняетсясопротивление
фоторезистора. Именно этонапряжение
мы и будем измерять с помощью АЦП. -
Сборка схемы
- Подключите светодиод: Длинную ножку (анод) — к ШИМ-пину 5, а короткую (катод) — через резистор 220 Ом к
GND
. - Соберите делитель напряжения:
- Один вывод фоторезистора подключите к
3.3V
. - Второй вывод фоторезистора соедините с одним из выводов резистора 10 кОм.
- Второй вывод резистора 10 кОм подключите к
GND
. - Точку соединения фоторезистора и резистора подключите к аналоговому входу
A0
.
- Один вывод фоторезистора подключите к
- Подключите светодиод: Длинную ножку (анод) — к ШИМ-пину 5, а короткую (катод) — через резистор 220 Ом к
-
Калибровка датчика
Прежде чем писать основные программы, нам нужно понять, какие значения
analogRead()
соответствуют темноте и свету в наших условиях.-
Загрузите на
Рудирон
простую программу для вывода данных с датчика:void setup() { Serial.begin(9600); } void loop() { int sensorValue = analogRead(A0); Serial.println(sensorValue); delay(200); }
- Откройте монитор порта (скорость 9600).
- Шаг 1: Измеряем «темноту». Полностью закройте фоторезистор пальцем или тёмным предметом. Запишите максимальное значение, которое вы видите в мониторе. Например,
3600
. - Шаг 2: Измеряем «свет». Посветите на фоторезистор фонариком. Запишите минимальное значение. Например,
1200
. - Теперь мы знаем наш рабочий диапазон: от 1200 (очень светло) до 3600 (очень темно).
-
-
Программа №1. Автояркость
Напишем программу, которая будет делать светодиод ярче, когда вокруг темно, и тусклее, когда светло.
-
В
Arduino IDE
введите следующий код, подставив ваши значения калибровки:const int ledPin = 5; const int sensorPin = A0; // Вставьте сюда ваши значения, полученные на шаге 3! const int lightValue = 1200; // Значение для яркого света const int darkValue = 3600; // Значение для темноты void setup() { pinMode(ledPin, OUTPUT); } void loop() { int sensorValue = analogRead(sensorPin); // Масштабируем диапазон датчика (1200-3600) в диапазон яркости (0-255) int brightness = map(sensorValue, lightValue, darkValue, 0, 255); // Ограничиваем значение, чтобы оно не вышло за пределы 0-255 brightness = constrain(brightness, 0, 255); analogWrite(ledPin, brightness); delay(50); }
- Загрузите код. Теперь, закрывая и открывая фоторезистор, вы будете плавно менять яркость светодиода.
-
-
Программа №2. Умный ночник
Теперь напишем программу, которая будет включать светодиод на полную яркость, как только освещённость упадёт ниже определённого порога.
-
Измените
loop()
в вашем коде на следующий:void loop() { int sensorValue = analogRead(sensorPin); // Выбираем порог срабатывания. Он должен быть где-то между // вашими значениями света и темноты. Например, 2500. int threshold = 2500; if (sensorValue > threshold) { // Стало темно, включаем свет digitalWrite(ledPin, HIGH); } else { // Достаточно светло, выключаем digitalWrite(ledPin, LOW); } delay(100); }
- Загрузите код. Теперь светодиод будет резко включаться, когда вы закрываете фоторезистор, и выключаться, когда открываете.
-
Результаты
Вы создали две работающие «умные» системы: 1. Систему автоматической регулировки яркости, которая плавно адаптирует свет к окружающим условиям. 2. Пороговый выключатель («ночник»), который включает свет только тогда, когда это необходимо.
Анализ результатов
- Делитель напряжения позволил нам преобразовать изменение
сопротивления
фоторезистора в изменениенапряжения
, которое мы смогли измерить. - Калибровка — ключевой этап при работе с аналоговыми датчиками. Она позволяет адаптировать программу к уникальным условиям освещения и компонентам.
- Функция
map()
идеально подошла для программы автояркости, позволив плавно сопоставить диапазон датчика с диапазоном яркости. - Оператор
if
стал основой для «ночника», реализуя простое пороговое срабатывание.
Выводы
В этой лабораторной работе вы научились работать с фоторезистором — одним из самых распространённых аналоговых датчиков. Вы освоили важную концепцию делителя напряжения и поняли необходимость калибровки датчиков. Эти навыки позволят вам создавать множество автоматизированных систем, реагирующих на окружающую среду.
Вопросы для самопроверки
- Как работает фоторезистор?
- Зачем нужна схема делителя напряжения при его подключении?
- Что такое калибровка датчика и почему она важна?
- Как работает функция
map()
в первой программе? - Как изменить вторую программу, чтобы «ночник» включался при более ярком освещении?
Вы научились создавать устройства, которые видят свет! Теперь вы знаете, как «слышать» аналоговый мир и преобразовывать его сигналы в полезные действия. В следующем параграфе мы познакомимся с ЦАП — инструментом, который позволяет Рудирону
не имитировать, а по-настоящему генерировать аналоговые сигналы.
- Страницы
- 1. Введение
- 1.01. Лабораторная работа №1.1
- 1.02. Лабораторная работа №1.2
- 1.03. Лабораторная работа №1.3
- 1.04. Лабораторная работа №1.4
- 1.05. Лабораторная работа №1.5
- 2. Основы электроники
- 2.01. Электрический ток и параметры цепи
- 2.01.1. Лабораторная работа №2.1.1
- 2.01.2. Лабораторная работа №2.1.2
- 2.02. Сопротивление в цепи
- 2.02.1. Лабораторная работа №2.2.1
- 2.02.2. Лабораторная работа №2.2.2
- 2.03. Полупроводники
- 2.03.1. Лабораторная работа №2.3.1
- 2.03.2. Лабораторная работа №2.3.2
- 3. Основы программирование на C++
- 3.01. Типы данных и переменные
- 3.01.1. Практикум
- 3.02. Операторы в C++
- 3.02.1. Практикум
- 3.03. Структуры ветвления
- 3.03.1. Практикум
- 3.04. Структуры повторения
- 3.04.1. Практикум
- 3.05. Массивы
- 3.05.1. Практикум
- 3.06. Функции
- 3.06.1. Практикум
- 3.07. Решения задач
- 4. Программирование микроконтроллеров
- 4.01. Цифровые сигналы и GPIO
- 4.01.1. Лабораторная работа №4.1.1
- 4.01.2. Лабораторная работа №4.1.2
- 4.01.3. Лабораторная работа №4.1.3
- 4.01.4. Лабораторная работа №4.1.4
- 4.01.5. Лабораторная работа №4.1.5
- 4.01.6. Лабораторная работа №4.1.6
- 4.01.7. Лабораторная работа №4.1.7
- 4.01.8. Лабораторная работа №4.1.8
- 4.02. Аналоговые сигналы и ШИМ
- 4.02.1. Лабораторная работа №4.2.1
- 4.02.2. Лабораторная работа №4.2.2
- 4.02.3. Лабораторная работа №4.2.3
- 4.02.4. Лабораторная работа №4.2.4
- 4.02.5. Лабораторная работа №4.2.5
- 4.03. Аналоговый сигнал и АЦП
- 4.03.1. Лабораторная работа №4.3.1
- 4.03.2. Лабораторная работа №4.3.2
- 4.03.3. Лабораторная работа №4.3.3
- 4.03.4. Лабораторная работа №4.3.4
- 4.03.5. Лабораторная работа №4.3.5
- 4.04. Аналоговый сигнал и ЦАП
- 4.04.1. Лабораторная работа №4.4.1
- 4.04.2. Лабораторная работа №4.4.2
- 4.05. Генерация и измерение импульсов
- 4.05.1. Лабораторная работа №4.5.1
- 4.05.2. Лабораторная работа №4.5.2
- 4.06. Аппаратные прерывания
- 4.06.1. Лабораторная работа №4.6.1
- 4.06.2. Лабораторная работа №4.6.2
- 4.07. Псевдопараллелизм
- 4.07.1. Лабораторная работа №4.7.1
- 4.07.2. Лабораторная работа №4.7.2
- 4.08. Интерфейсы связи - UART
- 4.08.1. Лабораторная работа №4.8.1
- 4.09. Интерфейсы связи - I2C
- 4.09.1. Лабораторная работа №4.9.1
- 4.10. Интерфейсы связи - SPI
- 4.10.1. Лабораторная работа №4.10.1
- home
-
imgs
- 1. Введение
- 1.01. Лабораторная работа №1.1
- 1.02. Лабораторная работа №1.2
- 1.03. Лабораторная работа №1.3
- 1.04. Лабораторная работа №1.4
- 1.05. Лабораторная работа №1.5
- 2. Основы электроники
- 2.01. Электрический ток и параметры цепи
- 2.01.1. Лабораторная работа №2.1.1
- 2.01.2. Лабораторная работа №2.1.2
- 2.02. Сопротивление в цепи
- 2.02.1. Лабораторная работа №2.2.1
- 2.02.2. Лабораторная работа №2.2.2
- 2.03. Полупроводники
- 2.03.1. Лабораторная работа №2.3.1
- 2.03.2. Лабораторная работа №2.3.2
- 3. Основы программирование на C++
- 3.01. Типы данных и переменные
- 3.01.1. Практикум
- 3.02. Операторы в C++
- 3.02.1. Практикум
- 3.03. Структуры ветвления
- 3.03.1. Практикум
- 3.04. Структуры повторения
- 3.04.1. Практикум
- 3.05. Массивы
- 3.05.1. Практикум
- 3.06. Функции
- 3.06.1. Практикум
- 3.07. Решения задач
- 4. Программирование микроконтроллеров
- 4.01. Цифровые сигналы и GPIO
- 4.01.1. Лабораторная работа №4.1.1
- 4.01.2. Лабораторная работа №4.1.2
- 4.01.3. Лабораторная работа №4.1.3
- 4.01.4. Лабораторная работа №4.1.4
- 4.01.5. Лабораторная работа №4.1.5
- 4.01.6. Лабораторная работа №4.1.6
- 4.01.7. Лабораторная работа №4.1.7
- 4.01.8. Лабораторная работа №4.1.8
- 4.02. Аналоговые сигналы и ШИМ
- 4.02.1. Лабораторная работа №4.2.1
- 4.02.2. Лабораторная работа №4.2.2
- 4.02.3. Лабораторная работа №4.2.3
- 4.02.4. Лабораторная работа №4.2.4
- 4.02.5. Лабораторная работа №4.2.5
- 4.03. Аналоговый сигнал и АЦП
- 4.03.1. Лабораторная работа №4.3.1
- 4.03.2. Лабораторная работа №4.3.2
- 4.03.3. Лабораторная работа №4.3.3
- 4.03.4. Лабораторная работа №4.3.4
- 4.03.5. Лабораторная работа №4.3.5
- 4.04. Аналоговый сигнал и ЦАП
- 4.04.1. Лабораторная работа №4.4.1
- 4.04.2. Лабораторная работа №4.4.2
- 4.05. Генерация и измерение импульсов
- 4.05.1. Лабораторная работа №4.5.1
- 4.05.2. Лабораторная работа №4.5.2
- 4.06. Аппаратные прерывания
- 4.06.1. Лабораторная работа №4.6.1
- 4.06.2. Лабораторная работа №4.6.2
- 4.07. Псевдопараллелизм
- 4.07.1. Лабораторная работа №4.7.1
- 4.07.2. Лабораторная работа №4.7.2
- 4.08. Интерфейсы связи - UART
- 4.08.1. Лабораторная работа №4.8.1
- 4.09. Интерфейсы связи - I2C
- 4.09.1. Лабораторная работа №4.9.1
- 4.10. Интерфейсы связи - SPI
- 4.10.1. Лабораторная работа №4.10.1
- home