Необходимые компоненты:
• контроллер Arduino UNO R3;
• плата для прототипирования;
• фоторезистор;
• резистор 10 кОм;
• резистор 220 Ом – 8 штук;
• светодиод;
• провода папа-папа.
Распространённое использование фоторезистора – измерение освещённости. В темноте его сопротивление довольно велико. Когда на фоторезистор попадает свет, сопротивление падает пропорционально освещенности. Схема подключения фоторезистора к Arduino показана на рис. 13.2. Для измерения освещённости необходимо собрать делитель напряжения, в котором верхнее плечо будет представлено фоторезистором, нижнее – обычным резистором достаточно большого номинала. Будем использовать резистор 10 кОм. Среднее плечо делителя подключаем к аналоговому входу A0 Arduino.
Напишем скетч чтения аналоговых данных и отправки их в последовательный порт. Содержимое скетча показано в листинге 13.1.
int light; // переменная для хранения данных фоторезистора
void setup()
{
Serial.begin(9600);
}
void loop()
{
light = analogRead(0);
Serial.println(light);
delay(100);
}
Порядок подключения:
1. Подключаем фоторезистор по схеме на рис. 13.2.
2. Загружаем в плату Arduino скетч из листинга 13.1.
3. Регулируем рукой освещенность фоторезистора и наблюдаем вывод в последовательный порт изменяющихся значений, запоминаем показания при полной освещенности помещения и при полном перекрывании светового потока.
Теперь создадим индикатор освещенности с помощью светодиодного ряда из 8 светодиодов. Количество горящих светодиодов пропорционально текущей освещенности. Собираем светодиоды по схеме на рис. 13.3, используя ограничительные резисторы номиналом 220 Ом.
Содержимое скетча для отображения текущей освещенности на линейке светодиодов показано в листинге 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); // пауза перед следующим измерением
}
Порядок подключения:
1. Подключаем фоторезистор и светодиоды по схеме на рис. 13.3.
2. Загружаем в плату Arduino скетч из листинга 13.2.
3. Регулируем рукой освещенность фоторезистора и по количеству горящих светодиодов определяем текущий уровень освещенности (рис. 13.3).
Нижний и верхний пределы освещенности мы берем из запомненных значений при проведении эксперимента по предыдущему скетчу (листинг 13.1). Промежуточное значение освещенности мы масштабируем на 8 значений (8 светодиодов) и зажигаем количество светодиодов пропорциональное значению между нижней и верхней границами.
Листинги программ скачать