Для нашого наступного проекту ми будемо використовувати фоторезистор. А ми розглянемо реалізацію каганця в спальню, який буде автоматично включатися коли темно і вимикатися коли стає ясно.
Опір фоторезистора залежить від світла, що потрапляє на нього. Використовуючи фоторезистор в зв'язці з звичайним резистором 4.7 кОм, ми отримуємо дільник напруги, в якому напруга проходить через фоторезистор, змінюється, в залежності від рівня освітленості.
Напруга з дільника, ми подаємо на вхід АЦП Arduino. Там ми порівнюємо отримане значення з певним порогом і включаємо або вимикаємо світильник.
Принципова схема дільника показана нижче. Коли освітленість збільшується, опір фоторезистора падає і відповідно на виході дільника (і вході АЦП) напруга збільшується. Коли освітленість падає все навпаки.
На фото нижче, показана зібрана схема на макетній платі. Напруги 0В і 5В беруться з Arduino. Ніжка А0 використовується як вхід АЦП.
Нижче показаний скетч 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


