Проект 13: Фоторезистор. Обробляємо освітленість, запалюючи або гасячи світлодіоди
В цьому експерименті ми познайомимося з аналоговим датчиком для вимірювання освітленості - фоторезистором (рис. 13.1).

Необхідні компоненти:
- контролер Arduino UNO R3;
- плата для прототипування;
- фоторезистор;
- резистор 10 кОм;
- резистор 220 Ом - 8 штук;
- світлодіод;
- дроти тато-тато.
Поширене використання фоторезистора - вимір освітленості. У темряві його опір досить великий. Коли на фоторезистор потрапляє світло, опір падає пропорційно освітленості. Схема підключення фоторезистора до Arduino показана на рис. 13.2. Для вимірювання освітленості необхідно зібрати дільник напруги, в якому верхнє плече буде представлено фоторезистором, нижнє - звичайним резистором досить великого номіналу. Будемо використовувати резистор 10 кОм. Середнє плече дільника підключаємо до аналогового входу A0 Arduino.

Рис. 13.2. Схема підключення фоторезистора до Arduino
Напишемо скетч читання аналогових даних і відправки їх в послідовний порт. Вміст скетчу показано в лістингу 13.1.
int light; // змінна для зберігання даних фоторезистора
void setup ()
{
Serial.begin (9600);
}
void loop ()
{
light = analogRead (0);
Serial.println (light);
delay (100);
}
Порядок підключення:
- Підключаємо фоторезистор за схемою на рис. 13.2.
- Завантажуємо в плату Arduino скетч з лістингу 13.1.
- Регулюємо рукою освітленість фоторезистора і спостерігаємо вивід в послідовний порт зміни значень, запам'ятовуємо показання при повній освітленості приміщення і при повному перекриванні світлового потоку.
Тепер створимо індикатор освітленості за допомогою світлодіодного ряду з 8 світлодіодів. Кількість запалених світлодіодів пропорційна поточній освітленості. Збираємо світлодіоди за схемою на рис. 13.3, використовуючи обмежувальні резистори номіналом 220 Ом.

Рис. 13.3. Схема підключення фоторезистора і світлодіодів до Arduino
Вміст скетчу для відображення поточної освітленості на лінійці світлодіодів показано в лістингу 13.2.
// Контакт підключення світлодіодів
const int leds [] = {3,4,5,6,7,8,9,10};
const int LIGHT = A0; // Контакт A0 для входу фоторезистора
const int MIN_LIGHT = 200; // Нижній поріг освітленості
const int MAX_LIGHT = 900; // верхній поріг освітленості
// Змінна для зберігання даних фоторезистора
int val = 0;
void setup ()
{
// Конфігурувати контакти світлодіодів як вихід
for (int i = 0; i <8; i ++)
pinMode (leds [i], OUTPUT);
}
void loop ()
{
val = analogRead (LIGHT); // Читання показань фоторезистора
// Застосування функції map ()
val = map (val, MIN_LIGHT, MAX_LIGHT, 8, 0);
// обмежуємо, щоб не перевищило кордонів
val = constrain (val, 0, 8);
// запалити кількість світлодіодів, пропорційно освітленості,
// інші загасити
for (int i = 1; i <9; i ++)
{
if (i> = val) // запалити світлодіоди
digitalWrite (leds [i-1], HIGH);
else // загасити світлодіоди
digitalWrite (leds [i-1], LOW);
}
delay (1000); // пауза перед наступним виміром
}
Порядок підключення:
- Підключаємо фоторезистор і світлодіоди за схемою на рис. 13.3.
- Завантажуємо в плату Arduino скетч з лістингу 13.2.
- Регулюємо рукою освітленість фоторезистора і за кількістю палаючих світлодіодів визначаємо поточний рівень освітленості (рис. 13.3).
Нижній і верхній межі освітленості ми беремо з запам'ятованих значень при проведенні експерименту за попереднім скетчем (лістинг 13.1). Проміжне значення освітленості масштабується на 8 значень (8 світлодіодів) і запалює кількість світлодіодів пропорційне значенню між нижньою і верхньою межами.