0

Arduino UNO — Nci. Урок 8

Для нашого наступного проекту ми будемо використовувати фоторезистор. А ми розглянемо реалізацію каганця в спальню, який буде автоматично включатися коли темно і вимикатися коли стає ясно.

Опір фоторезистора залежить від світла, що потрапляє на нього. Використовуючи фоторезистор в зв'язці з звичайним резистором 4.7 кОм, ми отримуємо дільник напруги, в якому напруга проходить через фоторезистор, змінюється, в залежності від рівня освітленості.

Напруга з дільника, ми подаємо на вхід АЦП Arduino. Там ми порівнюємо отримане значення з певним порогом і включаємо або вимикаємо світильник.

1

Принципова схема дільника показана нижче. Коли освітленість збільшується, опір фоторезистора падає і відповідно на виході дільника (і вході АЦП) напруга збільшується. Коли освітленість падає все навпаки.

2

На фото нижче, показана зібрана схема на макетній платі. Напруги 0В і 5В беруться з Arduino. Ніжка А0 використовується як вхід АЦП.

3

Нижче показаний скетч Arduino. У даному уроці ми просто включаємо і вимикаємо LED, який вбудований в плату Arduino. Більш яскравий LED світлодіод, ви можете підключити до ноги 13 (через резистор ~220 Ом). Якщо будете підключати більш потужну навантаження, таку як лампу розжарювання, то її слід підключати через реле або тиристор.

У коді програми є закомментированные ділянки, вони служать для налагодження. Можна буде контролювати значення АЦП (від 0 до 1024). Також, необхідно в коді змінити значення 500 (поріг включення і вимикання) на те, що ви підберете досвідченим шляхом, змінюючи освітленість.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Двадцять
21
22
23
24
25
26
/*
** Ночник
**
** www.hobbytronics.co.uk
*/
int sensorPin = A0; // устанавливаем входную ногу для АЦП
unsigned int sensorValue = 0; // цифровое значение фоторезистора
void setup()
{
pinMode(13, OUTPUT);
Serial.begin(9600); // старт последовательного вывода данных (для тестирования)
}
void loop()
{
sensorValue = analogRead(sensorPin); // считываем значение с фоторезистора
if(sensorValue<500) digitalWrite(13, HIGH); // включаем
else digitalWrite(13, LOW); // выключаем
// Для отладки раскомментируйте нижеследующие строки
//Serial.print(sensorValue, DEC); // вывод данных с фоторезистора (0-1024)
//Serial.println(""); // возврат каретки
//delay(500);
}

Оригінал тут

Переклад від cxem.net

адмін

Залишити коментар

Your email address will not be published. Required fields are marked *