Лабораторный практикум №4 по LEGO MINDSTORMS NXT
Целью данного урока является написание кода для подключения Wiimote по Bluetooth при помощи LabVIEW. Приведен пример написания кода для считывания состояния одной кнопки и статуса XYZ ускорения Wiimote.
Примечание: Перед началом работы выполните инструкции из Лабораторного практикума №1, чтобы убедиться в возможности успешного соединения Wiimote с PC через Bluetooth.
РАЗДЕЛЫ
А. Считывание статуса XYZ ускорения Wiimote
В. Считывание состояния кнопки Wiimote
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
• NI LabVIEW c библиотекой Nintendo Wiimote Брайана Пика
АППАРАТНЫЕ СРЕДСТВА
• Nintendo Wiimote
• Ноутбук или компьютер с D-Link Bluetooth DBT-120 аппаратным ключом
ЧАСТЬ A: СЧИТЫВАНИЕ СТАТУСА XYZ УСКОРЕНИЯ WIIMOTE
1. Откройте LabVIEW 8.6 путем нажатия Windows Start >> All Programs >> National Instruments LabVIEW 8.6. Затем запустите новый проект (New>> Blank VI).
2. В функциональной палитре выберите Connectivity>>.NET>>Constructor Node и поместите в блок-схему. Появится всплывающее окно с просьбой выбрать .NET Constructor. Щелкните по столбцу Assembly, в контекстном меню прокрутите вниз полосу прокрутки и выберите WiimoteLib(1.6.0.0).
3. В столбце Objects, прокрутив вниз полосу прокрутки, выберите Wiimote. Затем нажмите OK.
4. В функциональной палитре выберите Connectivity>>.NET>>Invoke Node (.NET) и поместите рядом с Constructor Node в блок-схеме. Соедините reference и error информацию между узлами Constructor Node и Invoke Node. Щелкните по method узла Invoke Node и выберите Connect() в контекстном меню.
5. В функциональной палитре выберите Connectivity>>.NET>>Invoke Node (.NET) и поместите рядом с предыдущим Invoke Node в блок-схеме. Соедините reference и error информацию между этими двумя узлами. Щелкните по method узла Invoke Node и выберите SetReportType(InputReport type Boolean continuous) в контекстном меню.
6. Щелкните правой кнопкой мыши по первому входному порту этого Node, то есть по type, и выберите Create>>Constant в контекстном меню.
7. Измените постоянную величину с Status на IRAccel. Щелкните правой кнопкой мыши по второму входному порту того же самого Node, то есть по continuous, и выберите Create>>Constant в контекстном меню. Измените постоянную величину с False на True, нажав на символ константы T.
8. В функциональной палитре выберите Connectivity>>.NET>>Property Node (.NET) и поместите рядом с предыдущим узлом Invoke Node в блок-схему. Соедините reference и error информацию между этими двумя узлами. Щелкните по Property узла Property Node и выберите WiimoteState в контекстном меню.
9. В функциональной палитре выберите Connectivity>>.NET>>Property Node (.NET) и поместите рядом с предыдущим узлом Property Node на блок-схеме. Соедините reference информацию выходного порта предыдущего Property Node, то есть WiimoteState, и error информацию между этими двумя узлами. Щелкните по Property узла Property Node и выберите AccelState в контекстном меню.
10. В функциональной палитре выберите Connectivity>>.NET>>Property Node (.NET) и поместите рядом с предыдущим узлом Property Node в блок-схеме. Соедините reference информацию выходного порта предыдущего Property Node, то есть AccelState, и error информацию между этими двумя узлами. Щелкните по Property узла Property Node и выберите Values в контекстном меню.
11. В функциональной палитре выберите Connectivity>>.NET>>Property Node (.NET) и поместите рядом с предыдущим узлом Property Node в блок-схеме. Соедините reference информацию выходного порта предыдущего Property Node, то есть Values и и error информацию между этими двумя узлами. Переместите курсор на край кнопки Node. Вы увидите пару Синих Квадратов сверху и по краям кнопки значка. Потяните вниз край кнопки, чтобы получить три свойства Property в узле Node. Щелкните по каждому Property этого узла и выберите X, Y, и Z в контекстном меню соответственно.
12. Создайте индикаторы для выводов узла Point3F Property Node, щелкая правой кнопкой мыши по каждому выходному порту и выбирая Create>>Indicator в контекстном меню соответственно.
13. В функциональной палитре выберите Connectivity>>.NET>>Invoke Node (.NET) и поместите рядом с предыдущим узлом Property Node в блок-схеме. Соедините reference информацию узла Wiimote Property Node и error информацию узла Point3F Property Node. Щелкните по method узла Invoke Node и выберите Disconnect() в контекстном меню.
14. В функциональной палитре выберите Connectivity>>.NET>>Close Reference и поместите рядом с предыдущим узлом Invoke Node в блок-схему. Соедините reference и error информацию между этими двумя значками.
15. Щелкните правой кнопкой мыши по выходному порту VI значка Close Reference и выберите Dialog & User Interface Palette>>Simple Error Handler, поместите его рядом с VI значком Close Reference в блок-схеме. Соедините error информацию между этими двумя значками.
16. Сохраните код для дальнейшего использования.
Добавьте в код структуру цикла с условием продолжения для обновления считывания состояния ускорения Wiimote.
ЧАСТЬ B: СЧИТЫВАНИЕ СОСТОЯНИЯ КНОПКИ WIIMOTE
1. Откройте файл, созданный в части A. Откройте окно диаграмм. Переместите курсор на край кнопки WiimoteState Property Node. Вы увидите пару Синих Квадратов сверху и и по краям кнопки. Потяните вниз край кнопки, чтобы получить другой набор свойств Property в узле Node. Щелкните по второму Property узла WiimoteState Property Node и измените в контекстном меню свойство с BalanceBoardState на ButtonState.
2. В функциональной палитре выберите Connectivity>>.NET>>Property Node (.NET) и поместите рядом с узлом WiimoteState Property Node в блок-схеме. Соедините reference информацию второго выходного порта WiimoteState Property Node, то есть ButtonState, и error информацию между этими двумя узлами. Щелкните по Property узла ButtonState Property Node и выберите A в контекстном меню.
3. Щелкните правой кнопкой мыши по выходному порту A узла ButtonState Property Node. Выберите в контекстном меню Create >> Indicator для получения индикатора на фронтальной панели, показывающего статус кнопки A Wiimote.
4. Чтобы объединить error связи в программе, щелкните правой кнопкой мыши по порту вывода ошибок узла ButtonState Property Node. Выберите в контекстном меню Dialog & User Interface Palette>>Merge Errors и поместите в блок-схему.
5. Удалите error связь между VI значками Simple Error Handler и Close Reference. Соедините error выводы иконок Simple Error Handler и ButtonState Property Node с вводами VI значка Merge Errors соответственно. И соедините error вывод иконки Merge Errors с вводом значка Simple Error Handler.
6. Теперь у Вас есть код, который может считывать состояние одной кнопки и статус XYZ ускорения Wiimote.
Добавьте в код структуру цикла с условием продолжения для обновления считывания состояния кнопки Wiimote. (Не забудьте добавить в структуре цикла задержку на 40 мс).
Измените код так, чтобы можно было считывать статус больше, чем одной, кнопки.
Объедините коды блока управления приводом NXT и Wiimote (лабораторные практикумы №3 и №4), чтобы позволить пользователям использовать Wiimote для управления мотором NXT. (Подсказка: используйте значение состояния ускорения Wiimote как входное значение параметра мощности мотора).