Датчик линии на базе TCRT5000: различия между версиями
(Новая страница: «мини|Датчик отражения TCRT5000 Цифровой датчик линии – это и...») |
Artecoll (обсуждение | вклад) Нет описания правки |
||
(не показаны 2 промежуточные версии 2 участников) | |||
Строка 5: | Строка 5: | ||
[[Файл:Датчик линии на базе TCRT5000.png|мини|Датчик линии на базе TCRT5000]] | [[Файл:Датчик линии на базе TCRT5000.png|мини|Датчик линии на базе TCRT5000]] | ||
== | == Особенности и характеристики == | ||
* Обнаружение расстояния отражения: 1 мм ~ 25 мм | * Обнаружение расстояния отражения: 1 мм ~ 25 мм | ||
Строка 18: | Строка 18: | ||
* С фиксированным отверстием для болта. | * С фиксированным отверстием для болта. | ||
== | == Подключение == | ||
* VCC: плюс питания 5.0 В | * VCC: плюс питания 5.0 В | ||
* GND: общ. | * GND: общ. | ||
* OUT: цифровой выход (0 или 1) | * OUT: цифровой выход (0 или 1) | ||
== Пример кода с двумя датчиками для движения по черной линии == | |||
<syntaxhighlight lang="c"> | |||
#define A 7 //left motor | |||
#define B 8 //left motor | |||
#define C 10 //left motor PWM | |||
#define D 2 //right motor | |||
#define E 4 //right motor | |||
#define G 11 //right motor PWM | |||
#define H 9 //left line sensor | |||
#define I 13 //central line sensor | |||
#define J 12 // right line sensor | |||
void setup() { | |||
pinMode(A,OUTPUT); // Устанавливаем режим для портов. | |||
pinMode(B, OUTPUT); // Функция состоит из двух параметров. | |||
pinMode(C, OUTPUT); // В первом параметре указывается порт, | |||
pinMode(D, OUTPUT); // с которым мы собираемся работать. | |||
pinMode(E, OUTPUT); // Во втором параметре мы сообщаем, | |||
pinMode(G, OUTPUT); // как должен работать указанный | |||
pinMode(H, INPUT); // порт: работать на | |||
pinMode(I, INPUT); // выход (OUTPUT) | |||
pinMode(J, INPUT); // или вход (INPUT) | |||
} | |||
void go(){ | |||
digitalWrite(A, LOW); // digitalWrite() - функция включает светодиод. | |||
digitalWrite(B, HIGH); // В первом параметре мы указываем номер | |||
analogWrite(C, 50); // порта, с котоорым собираемся работать, | |||
digitalWrite(D, LOW); // а во второй указываем константу HIGH т.е. | |||
digitalWrite(E, HIGH); // логическая 1, значение константы LOW равно | |||
analogWrite(G, 50); // логическому 0 (отключаем светодиод) | |||
} | |||
void loop() { | |||
if (digitalRead(H) == 0){ | |||
digitalWrite(A, LOW); // digitalRead() - считывает | |||
digitalWrite(B, HIGH); // значение заданного входа - | |||
analogWrite(C, 0); // 1 или 0. (Смотрим, равно ли | |||
digitalWrite(D, LOW); // значение датчика 0. В зависи- | |||
digitalWrite(E, HIGH); // мости от значения датчика | |||
analogWrite(G, 50); // поворачиваем колёса.) | |||
} | |||
else if (digitalRead(J) == 0){ | |||
digitalWrite(A, LOW); | |||
digitalWrite(B, HIGH); | |||
analogWrite(C, 50); | |||
digitalWrite(D, LOW); | |||
digitalWrite(E, HIGH); | |||
analogWrite(G, 0); | |||
} | |||
else{ | |||
go(); | |||
} | |||
} | |||
</syntaxhighlight> |
Текущая версия от 14:21, 11 июня 2021
Цифровой датчик линии – это излучатель и приёмник, разделённые перегородкой, находящиеся в одном корпусе. Светодиод излучает инфракрасный сигнал. В зависимости от цвета поверхности, отраженный сигнал имеет разную силу, которая улавливается приемником-фоторанзистором.
Результатом работы данного модуля является цифровой сигнал, в зависимости от цвета. При отсутствии поверхности, или в случае, если поверхность светлая, датчик выдает логический 0, при появлении черной поверхности выдает логическую единицу. Логический ноль сопровождается загоранием светодиода, расположенного на плате. Это позволяет контролировать работу датчика. Датчик может использоваться для ориентации роботов (для перемещения по темной линии).
Особенности и характеристики
- Обнаружение расстояния отражения: 1 мм ~ 25 мм
- Напряжение питания: 3.3-5В
- Потребляемый ток: 10мА
- Форма вывода: цифровые сигналы (0 и 1)
- Рабочая температура: 0°C ~ + 50°C
- Размер печатной платы небольшой платы: 3,5 см x 1 см
- одиночный вес: 4,5 г
- С фиксированным отверстием для болта.
Подключение
- VCC: плюс питания 5.0 В
- GND: общ.
- OUT: цифровой выход (0 или 1)
Пример кода с двумя датчиками для движения по черной линии
#define A 7 //left motor #define B 8 //left motor #define C 10 //left motor PWM #define D 2 //right motor #define E 4 //right motor #define G 11 //right motor PWM #define H 9 //left line sensor #define I 13 //central line sensor #define J 12 // right line sensor void setup() { pinMode(A,OUTPUT); // Устанавливаем режим для портов. pinMode(B, OUTPUT); // Функция состоит из двух параметров. pinMode(C, OUTPUT); // В первом параметре указывается порт, pinMode(D, OUTPUT); // с которым мы собираемся работать. pinMode(E, OUTPUT); // Во втором параметре мы сообщаем, pinMode(G, OUTPUT); // как должен работать указанный pinMode(H, INPUT); // порт: работать на pinMode(I, INPUT); // выход (OUTPUT) pinMode(J, INPUT); // или вход (INPUT) } void go(){ digitalWrite(A, LOW); // digitalWrite() - функция включает светодиод. digitalWrite(B, HIGH); // В первом параметре мы указываем номер analogWrite(C, 50); // порта, с котоорым собираемся работать, digitalWrite(D, LOW); // а во второй указываем константу HIGH т.е. digitalWrite(E, HIGH); // логическая 1, значение константы LOW равно analogWrite(G, 50); // логическому 0 (отключаем светодиод) } void loop() { if (digitalRead(H) == 0){ digitalWrite(A, LOW); // digitalRead() - считывает digitalWrite(B, HIGH); // значение заданного входа - analogWrite(C, 0); // 1 или 0. (Смотрим, равно ли digitalWrite(D, LOW); // значение датчика 0. В зависи- digitalWrite(E, HIGH); // мости от значения датчика analogWrite(G, 50); // поворачиваем колёса.) } else if (digitalRead(J) == 0){ digitalWrite(A, LOW); digitalWrite(B, HIGH); analogWrite(C, 50); digitalWrite(D, LOW); digitalWrite(E, HIGH); analogWrite(G, 0); } else{ go(); } }