Вам необходимо отличить черную поверхность от белой или определить промежуточное значение? Воспользуйтесь аналоговым датчиком линии. Датчик выполнен на основе оптопары TCRT5000, объединяющей в себе инфракрасный светодиод и фототранзистор. Светодиод излучает инфракрасный сигнал. В зависимости от цвета поверхности, отраженный сигнал имеет разную силу, которая улавливается приемником-фототранзистором.
Результатом работы датчика является аналоговый сигнал от 1023 до 1, в зависимости от цвета. Максимальное значение 1023 - означает, что под датчиком черный цвет или пустота, в зависимости от расстояния до белого (светлого) цвета или при изменении оттенка цвета, пропорционально уменьшается величина сигнала вплоть до 1.
Датчик будет незаменим в робототехнике, когда необходимо заставить робота двигаться по заданной траектории, а также для определения пустоты под роботом - будь то лестница или высокий порог.
Пример В примере иллюстрируется подключение датчика к контроллеру, получение значения с аналогового вывода, вывод полученного значения в монитор Serial - порта. (Пример тестировался на контроллере Smart UNO)
Что нужно | Кол-во, шт |
---|---|
Контроллер Smart UNO | 1 |
Sensor Shield | 1 |
Датчик линии TCRT5000 аналоговый | 1 |
Шлейф "мама-мама" х3 | 1 |
Схема подключения:
Скетч для загрузки:
const int line_sensor = A0; // вывод подключения сигнальной ножки датчика линии
void setup() {
Serial.begin(9600); // инициализация Serial-порта
}
void loop() {
int value = analogRead(line_sensor); // чтение значения с вывода подключения датчика
Serial.println(value); // вывод полученного значения в монитор Serial порта
delay(500); // задержка в 500 мс
}
Распечатайте на лазерном принтере (или нарисуйте маркерами или чем-либо другим) различные фигуры разными оттенками серого и чёрного цвета. Посмотрите как будет изменяться значение в мониторе порта. Затем посмотрите какое значение получается при поднесении к белому листу.