В этом уроке:
- Сборка знаков
- Настройка знаков на передачу информации о них
Мы уже знаем, каким образом знаки передают информацию о себе, а также знаем, как их принимает машинка. Наш автомобиль уже полностью готов к тому, чтобы учиться правилам дорожного движения, осталось подготовить знаки.
Мы решили вынести сборку всех знаков в отдельный урок, чтобы потом не возвращаться к этому и сконцентрироваться исключительно на программировании машинки.
Сборка знаков
Для каждого знака, с которым Вы встретитесь, есть подробная статья (список ниже). Также, в технической главе Вы найдёте описание всех знаков линейки «Роботраффик». Там находится инструкция по сборке, необходимые скетчи и прочая полезная информация по работе со знаком. А вот знаки, с которыми мы будем работать в рамках данного курса:
- «Ограничение максимальной скорости» (используем знак на 20 км/ч)
- «Движение без остановки запрещено»
- Светофор (используем одну дополнительную секцию, установленную слева; программируем на T-образный перекрёсток с поворотом налево)
- «Железнодорожный переезд со шлагбаумом»
Соберите знаки по инструкциям в статьях.
Программирование знаков
Знак нужно запрограммировать на передачу информации. После этого при подаче питания он будет работать автоматически. В статьях показано подключение знака для программирования к контроллеру Piranha UNO, однако, Вы можете использовать любой контроллер, который у Вас есть. Если другого контроллера нет, то его можно снять с машинки Arduino Nano и с его помощью запрограммировать знаки.
Для этого потребуется открутить 4 винта и снять модуль питания, после чего достать контроллер.
*Шлейфы можно не отключать
После этого подключаем к контроллеру первый знак — «Ограничение максимальной скорости». Подключение всех остальных знаков будет производиться аналогично.
Контакт знака | Контакт Arduino Nano |
GND | GND |
Vcc | 5V |
SDA | A4 |
SCL | A5 |
Итак, теперь можно вернуться к пункту «Первое включение и настройка» и запрограммировать знак на передачу информации (устанавливаем ограничение скорости 20 км/ч).
Так по очереди программируем все знаки. Светофор программируем на T-образный перекрёсток с поворотом налево, используя одну дополнительную секцию, установленную слева.
Проверка знаков
Давайте проверим, что все знаки работают верно. Для этого установите контроллер Arduino Nano обратно на машинку и загрузите в него следующий скетч:
#include <iarduino_I2C_IR.h> // Подключаем библиотеку для работы с Trema модулями: ИК-приёмник/передатчик I2C-flash iarduino_I2C_IR ir(0x09); // Объявляем объект ir для работы с функциями и методами библиотеки iarduino_I2C_IR, указывая адрес модуля на шине I2C // Если объявить объект без указания адреса (iarduino_I2C_IR ir;), то адрес будет найден автоматически void setup(){ // Serial.begin(9600); // Инициируем работу с шиной UART для передачи данных в монитор последовательного порта на скорости 9600 бит/сек ir.begin(); // Инициируем работу с ИК-приёмником/передатчиком I2C-flash ir.setProtocol(IR_IARDUINO); // Указываем протокол для приёма/передачи данных по ИК-каналу } void loop(){ if( ir.check(true) ){ // Если приняты данные: if( ir.device==MODUL_SIGN ){ // Если данные приняты от дорожного знака: Serial.print("Дорожный знак: "); Serial.println(ir.sign_str); // Выводим строку с номером знака } if( ir.device==MODUL_TLIGHT ){ // Если данные приняты от светофора: Serial.print("Светофор: регулирует перекрёсток c движением "); if( ir.track_L ){ Serial.print("налево, " ); } if( ir.track_R ){ Serial.print("направо, " ); } if( ir.track_F ){ Serial.print("прямо, " ); } Serial.print("сейчас сигналы светофора указывают"); Serial.print(": прямо "); switch(ir.forvard){ case 0: Serial.print("нельзя" ); break; case 1: Serial.print("можно" ); break; case 2: Serial.print("можно, если нет помех"); break; } Serial.print(", направо "); switch(ir.right){ case 0: Serial.print("нельзя" ); break; case 1: Serial.print("можно" ); break; case 2: Serial.print("можно, если нет помех"); break; } Serial.print(", налево "); switch(ir.left){ case 0: Serial.print("нельзя" ); break; case 1: Serial.print("можно" ); break; case 2: Serial.print("можно, если нет помех"); break; } Serial.println("."); } } }
Направьте запрограммированный (включенный) знак на ИК-приёмник машинки и Вы увидите его номер, а в случае со светофором — сигналы, которые он в данный момент передаёт. Проверьте все знаки на работоспособность. После того, как убедитесь, что всё хорошо, можно будет двигаться дальше.
Обсуждение