Датчик отслеживания линии на самом деле является инфракрасным датчиком. Здесь используется инфракрасная трубка TCRT5000. Его рабочий принцип заключается в использовании различной отражательной способности инфракрасного света для разных цветов, а затем преобразовании силы отраженного сигнала в токовый сигнал. В процессе обнаружения черный цвет активирует HIGH уровень, а белый - LOW уровень. Высота обнаружения составляет 0-3 см. 3-канальный модуль отслеживания линии интегрирован с 3 наборами инфракрасных трубок TCRT5000 на одной плате, что делает подключение и управление более удобными. Вращая регулируемый потенциометр на сенсоре, можно настроить чувствительность датчика.
Технические характеристики:
Рабочее напряжение: 3.3-5V (DC)
Интерфейс: 5PIN
Выходной сигнал: Цифровой сигнал
Высота обнаружения: 0-3 см
Примечание: Перед началом тестирования поворачивайте потенциометр на сенсоре, чтобы настроить чувствительность обнаружения. Чувствительность наилучшая, когда светодиод находится между состоянием ВКЛ и ВЫКЛ.
Схема подключения:
Подсоедините S1, S2 и S3 датчика отслеживания линии к D11, D7 и D8 платы расширения сенсора.
Тестовый код:
//****************************************************************************
/*
4wd BT Car
lesson 3.1
Line Track sensor
https://alash-electronics.kz/blogs/wiki
*/
int L_pin = 11; // Пины левого датчика отслеживания линии
int M_pin = 7; // Пины среднего датчика отслеживания линии
int R_pin = 8; // Пины правого датчика отслеживания линии
int val_L, val_R, val_M; // Определение переменных для трех датчиков
void setup()
{
Serial.begin(9600); // Инициализация последовательной связи на 9600 бит в секунду
pinMode(L_pin, INPUT); // Устанавливаем L_pin в режим ввода
pinMode(M_pin, INPUT); // Устанавливаем M_pin в режим ввода
pinMode(R_pin, INPUT); // Устанавливаем R_pin в режим ввода
}
void loop()
{
val_L = digitalRead(L_pin); // Считываем L_pin:
val_R = digitalRead(R_pin); // Считываем R_pin:
val_M = digitalRead(M_pin); // Считываем M_pin:
Serial.print("left:");
Serial.print(val_L);
Serial.print(" middle:");
Serial.print(val_M);
Serial.print(" right:");
Serial.println(val_R);
delay(500); // Задержка между чтениями для стабильности
}
//****************************************************************************
Результат тестирования:
После успешной загрузки кода на плату подсоедините провода согласно схеме подключения и используйте USB-кабель для подключения платы к компьютеру. После включения, откройте последовательный монитор, и вы увидите состояние трех датчиков отслеживания линии. Когда сигналы не принимаются, значение равно 1. Если прикрыть датчик белой бумагой, значение станет равным 0.
Объяснение кода:
Serial.begin(9600) - Инициализация последовательного порта, установка скорости передачи данных на 9600 бит в секунду
pinMode - Определение пина как вход или выход
digitalRead - Считывание состояния пина, которое обычно бывает HIGH и LOW.
Практическое расширение:
После понимания принципа работы, вы можете подключить светодиод к D9 и управлять им.
//****************************************************************************
/*
4wd BT Car
lesson 3.2
Line Track Sensor LED
https://alash-electronics.kz/blogs/wiki
*/
int L_pin = 11; //пины левого датчика линии отслеживания
int M_pin = 7; //пины среднего датчика линии отслеживания
int R_pin = 8; //пины правого датчика линии отслеживания
int val_L, val_R, val_M; //определение переменных для трех датчиков
void setup()
{
Serial.begin(9600); // инициализация последовательной связи на скорости 9600 бит в секунду
pinMode(L_pin, INPUT); // настройка пина L_pin как вход
pinMode(M_pin, INPUT); // настройка пина M_pin как вход
pinMode(R_pin, INPUT); // настройка пина R_pin как вход
pinMode(9, OUTPUT);
}
void loop()
{
val_L = digitalRead(L_pin); // считывание состояния L_pin:
val_R = digitalRead(R_pin); // считывание состояния R_pin:
val_M = digitalRead(M_pin); // считывание состояния M_pin:
Serial.print("left:");
Serial.print(val_L);
Serial.print(" middle:");
Serial.print(val_M);
Serial.print(" right:");
Serial.println(val_R);
delay(500); // задержка между чтениями для стабильности
if ((val_L == LOW) || (val_M == LOW) || (val_R == LOW)) // если датчики линии обнаруживают сигналы
{
Serial.println("HIGH");
digitalWrite(9, HIGH); // светодиод выключен
}
else // если левый датчик линии не обнаруживает сигналы
{
Serial.println("LOW");
digitalWrite(9, LOW); // светодиод включен
}
}
//****************************************************************************
После успешной загрузки кода на плату, подключите провода согласно схеме подключения и используйте USB-кабель для подключения платы к компьютеру. После включения, поднесите лист бумаги к датчику, и вы увидите, как светодиод загорается, когда бумага закрывает датчик отслеживания линии.