До сих пор мы рассматривали работу только с одним блоком NXT. Однако язык NXT‑G предоставляет возможность связывать блоки NXT между собой по каналу bluetooth. Эта связь дает возможность собирать на основе второго микроконтроллера пульт дистанционного управления роботом. Помимо этого, два робота могут посылать друг другу различные сообщения, например, данные о своем местонахождении или о состоянии окружающей среды и т.д.Рассмотрим подробнее процедуру связи блоков по каналу bluetooth. Перед тем, как начать настройку bluetooth-соединения, убедитесь, что в радиусе хотя бы трех метров нет микроконтроллеров с включенным bluetooth. Включите два блока, которые необходимо связать между собой. Возьмите в руки первый блок. С помощью серых стрелок выберите в меню пункт Bluetooth и нажмите оранжевую кнопку подтверждения три раза подряд (рис. 143).
Рис. 143 Включение bluetooth на блоке NXT Если не экране появилась надпись «Turningon» (Включение), значит, Вы все сделали правильно и bluetooth включается. Повторите то же самое со вторым блоком NXT. Вернитесь к настройке первого блока и снова выберите в меню пункт Bluetooth. С помощью серых стрелок выберите подпункт Visiblity (Видимость), и нажмите оранжевую кнопку. Вы увидите надпись Visible (Видимый), снова нажмите подтверждение. Таким образом, Вы установили настройки видимости Вашего блока. Теперь его сможет «увидеть» второй блок и подключиться к нему. Возьмите в руки второй блок с уже включенным bluetooth. Сделайте его видимым, аналогично первому блоку. Затем в меню Bluetooth выберите подпункт Search (Поиск) и дважды нажмите подтверждение. Проверьте, чтобы на Ваших устройствах (телефоне, компьютере, планшете и т.д.) был выключен bluetooth, иначе блок NXT может подсоединиться к ним вместо второго блока. Иногда такие подключения производят, когда хотят управлять роботом с компьютера или с телефона при помощи специальной программы. После того, как блок NXT «нашел» второй блок и высветил его имя в списке подключений, выберите его при помощи серых стрелок и нажмите оранжевую кнопку подтверждения. Вы увидите цифры 1, 2 и 3 – это каналы подключения. Выберите предложенный по умолчанию первый канал и нажмите оранжевую кнопку. На экране высветится надпись Connecting (Соединение), после чего последует звуковой сигнал при успешной установке соединения. На экране высветится пароль (Passkey), по умолчанию – 1234, а также будет показана галочка успешного поиска устройства для соединения. Нажмите подтверждение. Если Вы соединяете блоки в первый раз, тот блок, к которому Вы пытаетесь подключиться, запросит у Вас пароль. Введите последовательность 1234. Если во время соединения высветится надпись «Lineisbusy» (Линия занята), это означает, что выбранный Вами канал занят другим устройством. Попробуйте выбрать другой канал и повторите попытку соединения. Как только два блока подключатся друг к другу, в левом верхнем углу каждого из них значок «стрелка влево», означающий включенный bluetooth, сменится значком ромба. Это означает, что соединение установлено. Схема подключения изображена на рисунке 144.
Рис. 144 Схема подключения bluetooth-соединения блоков NXT Перейдем к программированию соединения. За него в NXT-G отвечает три блока (рис. 445). Блок SendMessage (Отправить сообщение) предназначен для отправки сообщения по каналу bluetooth. В настройках его параметров необходимо указать номер соединения (от 1 до 3), тип сообщения (текстовое, числовое или логическое значение). Под типом сообщения находится поле ввода, в которое помещается само сообщение. Параметр Mailbox (Почтовый ящик) – это номер встроенной переменной, в которую будет помещено передаваемое значение. Один блок NXT может соединяться с тремя устройствами одновременно (каждому соединению присваивается свой номер от 1 до 3). Каждое отдельное соединение имеет 10 ящиков для передачи сообщений различных типов.
Рис. 145 Блоки bluetooth-соединения ReceiveMessage (Принять сообщение) – команда принятия сообщения. В ее параметрах указывается тип принимаемых данных и номер почтового ящика, через который осуществляется передача. Параметр Compareto (Сравнить с) позволяет сравнить принятое значение со значением, введенным в это поле. Чаще всего, в поле вписывают нулевой или пустое (для текстовых данных) значение. Сообщение будет прочитано из почтового ящика, если ящик не пуст. BluetoothConnection – блок настройки bluetooth-соединения. Он имеет 4 режима работы: v InitiateConnection – инициировать (установить) соединение (параметр Connectto обозначает устройство, с которым будет осуществляться соединение, Connection – номер соединения, Contacts – список устройств, найденных при сканировании); v CloseConnection – закрыть соединение (Connection – список подключенных на данный момент устройств, в свойстве DisconnectFrom указывается номер соединения, которое требуется разорвать); v Turn On – включить bluetooth; v Turn Off – выключить bluetooth. Команду BluetoothConnection используют редко, чаще всего программисты и пользователи предпочитают настраивать соединения вручную. Рис. 146 Беспроводной пульт ДУ Рассмотрим для примера программу беспроводного пульта дистанционного управления. Она работает в паре с программой-приемником, которая загружается в микроконтроллер робота. Одна программа (для пульта ДУ) (рис. 147) передает сигналы по Bluetooth, вторая программа (для самого робота) принимает и обрабатывает данные. Рис. 147 Программа для пульта ДУ Программа посылает два разных вида Bluetooth команд на два различных канала другого блока NXT. Первое сообщение, отправленное в ящик номер один - это число, которое указывает состояние двух датчиков касания следующим образом: 0 - не нажата ни одна кнопка, 1 – нажата только на левом сенсоре, 2 – нажата только на правом, 3 – обе кнопки нажаты. Второе сообщение, отправленное в почтовый ящик 2 - число, которое указывает, какую кнопку на блоке NXT нажали, а затем отпустили: 1 - кнопку со стрелкой влево, 2 - кнопку ввода, 3 - кнопку со стрелкой вправо. В программе-приемнике сообщений как правило используются переключатели Switch следующего вида (рис. 148) Рис. 148 Программа для приема ссобшения В переключателях проверяются значения принятых по каналу Bluetooth данных и в зависимости от этих значений совершаются нужные действия. Рассмотрим в качестве еще одного примера передачу данных по каналу Bluetooth от одного робота к другому. Пусть робот А движется вперед до момента обнаружения препятствия в 15 см от него, после чего он остановится и передаст сигнал начала движения роботу В по принципу эстафетной палочки. Робот В после получения сигнала едет вперед 7 секунд, останавливается и воспроизводит звуковой сигнал. На рисунке 149 показан пример программ для роботов А и В.
Если содержимое передаваемых по каналу данных важно и должно использоваться дальше по тексту программы, после команды Ожидание сообщения можно поставить блок ReceiveMessage (Принятие сообщения). Эта команды имеет выходные контакты на концентраторе данных и позволяет записать в переменную соответствующего типа принятое от другого устройства значение. |
Поделиться с друзьями: