Получаем информацию о знаке

В этом уроке:

  • Собираем знак «Опасные повороты»
  • Настраиваем знак на автоматическую работу
  • Реализуем приём информации машинкой

В вводном уроке мы рассмотрели принцип передачи информации от знака к машинке. Пришла пора научиться отправлять и принимать эти сигналы.

Сборка знака и его настройка на автоматическую работу

Первый знак, с которым мы будем работать, — знак номер 12.1 «Опасные повороты».

Для каждого знака, с которым Вы встретитесь, есть подробная статья. Там Вы найдёте инструкцию по сборке, необходимые скетчи и прочую полезную информацию по работе со знаком. А полный перечень знаков находится в технической главе.

Итак, у Вас есть собранный знак, передающий информацию о себе. Теперь давайте настроим машинку на приём сигнала. 

Скетч для приёма сигнала от знака

В приведенной выше статье есть пример и приёма информации, но для текущей задачи мы оставили только самое необходимое, чтобы не отвлекаться на излишний код. Давайте посмотрим, как он работает.

#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);         // Выводим строку с номером знака
         }                                        //
     }                                            //
}

Обратите внимание, что при объявлении объекта ИК-приёмника/передатчика I2C мы указываем его адрес на шине I2C. По умолчанию — 0х09, но если Вы устанавливали ему другой адрес, не забудьте его изменить.

iarduino_I2C_IR ir(0x09);  // Объявляем объект ir для работы с функциями и методами библиотеки iarduino_I2C_IR, указывая адрес модуля на шине I2C

Посмотрите — с помощью команды ir.sign_str мы получаем номер знака в ПДД. Это тот же номер, который мы указывали при программировании знака. Знак отправляет этот номер машинке, и теперь мы можем его распознать.

Результат работы программы

Подлючите машинку к компьютеру, загрузите скетч, откройте монитор порта и направьте включенный знак на ИК-приёмник. Помните, что приёмник машинки должен быть направлен в сторону передатчика знака. 

Вы увидите в мониторе порта информацию о знаке.

Дорожный знак: 1.12.1

В следующем уроке мы реализуем полноценное взаимодействие машинки со знаком — её поведение будет меняться при обнаружении знака.

Поздравляю с изучением данного урока!
Следующий урок:
№7. Обучаем робота фиксировать и реагировать на дорожный знак «Опасные повороты».
приступить к изучению

Продукт в магазине

Комплект знаков для базового курса по "Роботраффику" для образования (продолжение ROBORACE)

В магазин

Обсуждение

Гарантии и возврат. Используя сайт, Вы соглашаетесь с условиями.