Прийшов час зайнятись більш серйозними речами, ніж вмикати та вимикати світлодіод. На цьому практичному занятті ми навчимося зчитувати та обробляти дані з фоторезистора, та познайомимося зновою функцією map, яка дозволяє переносити дані з одного діапазону до іншого.
Фоторезистор - резистор, опір якого залежить від яскравості світла, що падає на нього.
Фоторезистори використовуються в електрониці як датчики освітленості. Фоторезистор дозволяє визначати ступінь освітленості, визначати білі або чорні ділянки на поверхні, якщо їх підсвітити.
Використовуючи фоторезистор у зв′язці зі звичайним резистором 10кОм, ми отримуємо дільник напруги, в якому напруга проходить через фоторезистор, змінюється, залежно від рівня освітленості. Напругу з дільника, ми подаємо на аналоговий вхід Arduino. Там ми перетворим отримане значення та змінимо яскравість світлодіоду. Принципова схема дільника:

Для складання схеми нам буде потрібно:

  • будь-яка плата Arduino
  • Breadboard
  • 5 проводів і/або перемичок «тато-тато»
  • світлодіод будь-якого кольору
  • фоторезистор
  • підтягаючий резистор на 10 кОм
  • резистори 220 Ом. 

Схема підключення контролера Arduino з

Для програмування нам знадобляться такі процедури:

pinMode - Конфігурує режим роботы вказанного порту-вивода: як вхід (INPUT) або як вихід (OUTPUT)
analogRead - Функція зчитує значення з зазначеного аналогового входу. Більшість плат Arduino мають 6 каналів. Напруга подана на аналоговий вхід, зазвичай від 0 до 5 вольт буде перетворено в значення від 0 до 1023, це 1024 кроків з кроком 0.0049 Вольт.
analogWrite - Видає аналогову величину (ШИМ хвилю) на порт вхід/вихід. Функція може бути корисна для керування яскравістю підключеного світлодіода або швидкістю електродвигуна. Після виклику analogWrite() на виході буде генеруватися постійна прямокутна хвиля із заданою шириною імпульсу. Частота ШІМ сигналу приблизно 490 Hz..
map - map(value, fromLow, fromHigh, toLow, toHigh). Функція пропорційно переносить значення (value) з поточного діапазону значень (fromLow .. fromHigh) в новий діапазон (toLow .. toHigh).

Функція map () не обмежує значення рамками діапазону.

Як один з вариантів для работи представленої схеми можливо використати скетч:

int led = 8;     //порт підключення світлодіода
int rez = 2;     //порт підключення фоторезистора

void setup() {
 pinMode(led, OUTPUT);   //встановлюємо як порт вивода
}

void loop(){
 //зчитуємо значення з порта фоторезистора
 int rezData = analogRead(rez);
 //перетворити діапазон 0..1023 на діапазон 0..255
 int ledBright = map(rezData, 0, 1023, 0, 255)
 //подати на порт світлодіода зачення від 0 до 255
 analogWrite(led, ledBright); 
}

Самостійна работа:


Використовуючи три світлодіоди та фоторезистор, зберіть схему, яка в залежності від освітлення буде показувати рівень освітлення, за допомогою світлодіодів: низький рівень  -червоний, середній рівень - жовтий, високий рівень - зелений.