В этой статье рассмотрим простейший алгоритм движения по черной линии. Для этого вам потребуется один из датчиков, которые зачастую так и называют — датчик линии.
Подключаются такие датчики по трем проводам:
GND -> GND
VCC -> 5v
OUT -> pin
Если датчик цифровой, то он выдает только 0 и 1 (черный и белый) и подключают его к цифровым портам. Если датчик аналоговый, то он выдает уровень отраженного света в условных единицах и работать вам предстоит именно с этими значениями. Такой датчик будет подключаться к аналоговым портам.
Будем использовать цифровой датчик.
Нужно разместить его на такой высоте, чтобы он различал белое и черной. Обычно для этого на датчике есть светодиод, который зажигается на черном и гаснет на белом (или наоборот). Также, у датчиков чаще всего есть подстроечный резистор, покрутив который вы сможете точнее настроить ваш датчик.
Робот будет двигаться не строго по черной линии, а по ее границе, подворачивая то влево, то вправо и постепенно перемещаясь вперед.
Алгоритм простой: датчик видит один цвет — поворачиваем в одну сторону, видит другой цвет — поворачивает в другую сторону.
Подключим 2 мотора (1 мотор — порты 5 и 6, 2 мотор — порты 7 и 8) и датчик линии (порт 9).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
int m11 = 7; // 1 контакт 1 мотора int m12 = 8; // 2 контакт 1 мотора int m21 = 5; // 1 контакт 2 мотора int m22 = 6; // 2 контакт 2 мотора int sensor = 9; // датчик линии void setup() { // обозначаем порты как выходы pinMode (m11, OUTPUT); pinMode (m12, OUTPUT); pinMode (m21, OUTPUT); pinMode (m22, OUTPUT); pinMode (sensor, INPUT); } void loop() { if (digitalRead(sensor) == HIGH) { // если датчик видит черный digitalWrite(m11, HIGH); // поворачиваем направо digitalWrite(m12, LOW); // выключая правый мотор digitalWrite(m21, LOW); digitalWrite(m22, LOW); } else { // иначе digitalWrite(m11, LOW); // поворачиваем налево digitalWrite(m12, LOW); // выключая левый мотор digitalWrite(m21, HIGH); digitalWrite(m22, LOW); } } |
Уделите пристальное внимание настройке и установке датчика и у вас все получится.