После разбора на комплектующие струйного принтера фирмы из двух букв, в руках оказался фотопрерыватель.
Задача
При помощи фотопрерывателя включать и выключать светодиод.
Для реализации потребуется
- Arduino;
- Отладочная плата;
- Соединительные провода;
- Фотопрерыватель;
- Резистор 220 Ом 2 шт.;
- Резистор 10 КОм;
- Светодиод.
Немного теории
Фотоперыватель — это спаренные инфракрасный светодиод и фототранзистор, которые размещены друг напротив друга в одном корпусе. Если между светодиодом и фототранзистором поместить непрозрачный предмет, то фототранзистор поменяет свое состояние, это изменение будем определять микроконтроллером.
Фотопрерыватели часто используют используют в офисной технике и роботостроении для определения положения движущихся элементов, всевозможных крышек, кареток. Зачастую используют в паре с диском на котором есть непрозрачные зубцы(по сути получается энкодер), таким образом можно узнать направление вращения(движения) и пройденный путь.
Реализация
Для определения светодиода и фототранзистора используется маркировка «E» и «S» соответственно.
Подключение фотопрерывателя. К +5 В подключаем резистор 220 Ом, к нему анод светодиода, катод подключаем к земле (GND). К +5 В подключаем резистор 10 КОм, к нему коллектор фототранзистора, эмиттер к земле (GND). Так же коллектор подключаем к ножке 8, через него мы и будем определять состояние.
Изменения состояния фотопрерывателя будем отражать на светодиоде, можно воспользоваться встроенным светодиодом, или же подключить внешний. К выходу D13 подключить резистор 220 Ом, к резистору подключаем анод светодиода, катод подключаем к выходу GND.
Код:
enum {IN_PIN = 8, LED_PIN = 13};
int detectState = 0; // переменная состояния фотопрерывателя
void setup() {
pinMode(IN_PIN, INPUT);
pinMode(LED_PIN, OUTPUT);
}
void loop() {
detectState = digitalRead(IN_PIN);
if (detectState == LOW) { // В зависимости от состояния фотопрерывателя
digitalWrite(LED_PIN, HIGH); // включаем светодиод
}
else {
digitalWrite(LED_PIN, LOW); // выключаем светодиод
}
}
Демонстрация работы: