Тип: Оптический датчик отражения

Датчик линии

Где можно применить
  • Робот-следователь линии
  • Оптический концевик
  • Детектор препятствия
  • ЧПУ-системы
Датчик определяет наличие белой или чёрной линии.
Работает на основе инфракрасной оптопары: светодиод излучает ИК-свет, фототранзистор фиксирует отражение.

Белая поверхность отражает больше света → логическая 1
Чёрная поверхность поглощает свет → логический 0

Что это такое

Схема подключения

Пример кода
Для аналогового датчика

// Определяем ядро платы Arduino
// для установки рабочего напряжения
#if defined(AVR)
#define OPERATING_VOLTAGE 5.0
#else
#define OPERATING_VOLTAGE 3.3
#endif
// GPIO пин с поддержкой АЦП
constexpr auto PIN_SENSOR = 38;
void setup()
{
// Открываем Serial-порт
Serial.begin(9600);
}
void loop()
{
// Считываем данные с датчика линии
int valueSensor = analogRead(PIN_SENSOR);
// Переводим данные с датчика в напряжение
float voltageSensor = valueSensor * OPERATING_VOLTAGE / 1024.0;
// Выводим выходное напряжение в Serial-порт
Serial.print("Value = ");
Serial.print(valueSensor);
Serial.print(" | Voltage = ");
Serial.print(voltageSensor);
Serial.println(" V");
delay(500);
}
Для цифрового датчика

// Определяем пин, к которому подключён датчик линии
const int lineSensorPin = 38; // например, пин 38
// Переменная для хранения состояния датчика
int sensorState = LOW;
void setup() {
// Инициализация последовательного порта для вывода информации
Serial.begin(9600);
// Настраиваем пин датчика как вход
pinMode(lineSensorPin, INPUT);
}
void loop() {
// Читаем состояние датчика
sensorState = digitalRead(lineSensorPin);
// Проверяем, есть ли линия под датчиком
if (sensorState == HIGH) {
// Линия обнаружена
Serial.println("Линия обнаружена");
// Можно добавить управление моторами или другим оборудованием
} else {
// Линия не обнаружена
Serial.println("Линия не обнаружена");
}
delay(200);
}