Подключение фоторезистора к Ардуино

Рассмотрим подключение фоторезистора к аналоговым портам Arduino и соберем "умный" светильник на Ардуино с автоматическим включением светодиода.


На этом занятии рассмотрим подключение фоторезистора к аналоговым портам Arduino. Разберем принцип работы полупроводниковых приборов и фоторезисторной автоматики. Соберем схему светильника с автоматическим включением, а также с автоматическим изменением яркости свечения светодиода, в зависимости от освещения. Рассмотрим тип данных unsigned int и оператор if, else в языке C++.

Устройство и принцип работы фоторезистора

Фоторезистором называют полупроводниковый прибор, у которого под воздействием света снижается электрическое сопротивление (у некоторых типов фоторезисторов сопротивление может уменьшаться на два- три порядка). Основной частью фоторезисторов является полупроводниковый элемент (например, сернистый свинец или сернистый кадмий), расположенный так, чтобы на него попадал свет.

Устройство фоторезистора, обозначение на электрических схемах
Устройство фоторезистора, обозначение на электрических схемах

Явлением фотопроводимости называется увеличение электропроводности полупроводника под воздействием электромагнитного излучения. Принцип работы фоторезистора основан на появлении подвижных носителей заряда (электронов) в результате поглощения полупроводником световой энергии, вследствие чего уменьшается его сопротивление, т.е. возникает дополнительная электропроводность.

Устройство и принцип действия фоторезистора максимально просты, поэтому данные полупроводниковые приборы сегодня широко применяются во многих отраслях науки и техники. Это объясняется высокой чувствительностью фоторезисторов, малыми габаритами и простотой конструкции приборов, долговечностью в работе, а также возможностью обеспечить бесконтактные измерения и контроль.

Как подключить фоторезистор к Ардуино

На этом занятии мы соберем электрическую схему «умного» светильника. Если на предыдущем занятии мы с помощью потенциометра включали и изменяли яркость светодиода, то сегодня мы будем использовать фоторезистор в схеме для автоматического включения светодиода. Фоторезистор будет играть роль переменного сопротивления, которое изменяет напряжение на аналоговом входе A0.

Для занятия нам понадобятся следующие детали:

  • плата Arduino Uno / Arduino Nano / Arduino Mega;
  • макетная плата;
  • 1 фоторезистор;
  • 1 светодиод;
  • 2 резистора 220 Ом;
  • провода «папа-папа».
Схема сборки умного светильника с автоматическим включением
Схема сборки светильника с фоторезистором на Ардуино

Соберите электрическую цепь, как на картинке выше. Принцип работы схемы в том, что в электрической цепи будет меняться сопротивление, в зависимости от освещенности в помещении, а значит будут меняться данные на аналоговом входе. После сборки принципиальной схемы с фоторезистором, подключите Arduino к компьютеру и загрузите следующую программу — скачать готовый скетч можно по ссылке здесь.

Скетч. Светильник с автоматическим включением

// Присваиваем имя для аналогового входа A0 с фоторезистором
#define SENSOR A0
// Присваиваем имя для порта 9 со светодиодом
#define LED 9

// Присваиваем имя для цифрового значения аналогового входа A0
// unsigned int округляет значения и принимает только положительные числа
unsigned int value = 0;
 
void setup() {
  // Пин 9 со светодиодом будет выходом (англ. «output»)
  pinMode(LED, OUTPUT);
  // Пин A0 с фоторезистором будет входом (англ. «input»)
  pinMode(SENSOR, INPUT);
}
 
void loop() {
  // Считываем значение с фоторезистора на аналоговом входе A0
  value = analogRead(SENSOR);
  
  // Если значение value на входе A0 меньше 500, включаем светодиод
  if (value<500) digitalWrite(LED, HIGH);

  // В противном случае (если value>500), выключаем светодиод 
  if (value>500) digitalWrite(LED, LOW);
}

Пояснения к коду:

  1. для удобства, в первой строчке программы мы присвоили имя SENSOR для аналогового входа A0 с помощью функции #define;
  2. оператор unsigned int указывает, что значение value может принимать только положительное целое число, а начальное значение value равно нулю;
  3. условный оператор if позволяет определить действие при истинном условии. Оператор else позволяет определить действие, когда истинное условие ложно.

Скетч. «Умный» светильник на Ардуино

Загрузите скетч для плавной регулировки яркости светодиода с помощью ШИМ сигнала. Скачать программу можно по ссылке здесь.

// Присваиваем имя для аналогового входа A0 с фоторезистором
#define SENSOR A0
// Присваиваем имя для порта 9 со светодиодом
#define LED 9

// Присваиваем имя для цифрового значения аналогового входа A0
// unsigned int округляет значения и принимает только положительные числа
unsigned int value = 0;

// Назначаем переменную data, которую будем использовать в скетче
int data;
 
void setup() {
  // Пин 9 со светодиодом будет выходом (англ. «output»)
  pinMode(LED, OUTPUT);
  // Пин A0 с фоторезистором будет входом (англ. «input»)
  pinMode(SENSOR, INPUT);
}
 
void loop() {
  // Считываем значение с фоторезистора на аналоговом входе A0
  value = analogRead(SENSOR);
  
  // Полученные значения на аналоговом входе A0 делим на 4
  data = value / 4;
  
  // Включаем светодиод с полученной ранее мощностью - от 0 до 255
  analogWrite(LED, data);
}

Пояснения к коду:

  1. в этом скетче мы добавили переменную data, которая равна value деленная на 4;
  2. пин 9 мы использовали, как аналоговый выход, который плавно изменяет яркость свечение светодиода в зависимости от значения data.
1 Star2 Stars3 Stars4 Stars5 Stars (7 votes, average: 5,00 out of 5)
Загрузка...

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *