nxt_pc_bluetooth
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
nxt_pc_bluetooth [2016/08/29 22:28] – alvaropintado | nxt_pc_bluetooth [2016/10/23 19:58] (current) – dwallace | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== | + | ====== |
**Author:** Alvaro Pintado Email: < | **Author:** Alvaro Pintado Email: < | ||
Line 9: | Line 9: | ||
* Windows 10 | * Windows 10 | ||
* Visual Studio 15 | * Visual Studio 15 | ||
- | * Intermediate experience with C++ programming (Classes, objects, pointers) | + | * Intermediate experience with Cpp programming (Classes, objects, pointers) |
* Basic LEGO NXT Tribot | * Basic LEGO NXT Tribot | ||
Line 36: | Line 36: | ||
- Go to the " | - Go to the " | ||
- Select "Brick Joystick" | - Select "Brick Joystick" | ||
- | - Configure the Left and Right Motors | + | - Configure the Left and Right Motors |
- Control your NXT Robot with the buttons on the Joystick window | - Control your NXT Robot with the buttons on the Joystick window | ||
Line 46: | Line 46: | ||
**Note:** See documentation for more commands and details about the LEGO NXT Communication Protocol {{: | **Note:** See documentation for more commands and details about the LEGO NXT Communication Protocol {{: | ||
- | There are several methods you can you go about sending direct commands. There are programs that allow you to send data to certain COM ports, but most of these are only good for testing and not writing programs that utilize the COM ports. This tutorial will demonstrate the use of the C++ Serial Port class in Windows that can be used to write programs that send data to COM ports, thus allowing the user to send direct commands to the NXT Brick with a C++ program. | + | There are several methods you can you go about sending direct commands. There are programs that allow you to send data to certain COM ports, but most of these are only good for testing and not writing programs that utilize the COM ports. This tutorial will demonstrate the use of the C-plus-plus |
- | < | + | < |
/* | /* | ||
Alvaro Pintado | Alvaro Pintado | ||
Line 57: | Line 57: | ||
LEGO Mindstorms NXT Communication Protocol. | LEGO Mindstorms NXT Communication Protocol. | ||
- | Notes: | + | Notes: |
-When writing commands to the LEGO NXT, it is advised that you do not request a response | -When writing commands to the LEGO NXT, it is advised that you do not request a response | ||
- | in order to avoid the time delay of the Bluetooth chipping switching modes from receiving | + | in order to avoid the time delay of the Bluetooth chipping switching modes from receiving |
- | to transmiting | + | to transmitting |
- | as the hexadecimal encoding used in the Serial Port class only encodes integers up to 127. | + | as the hexadecimal encoding used in the Serial Port class only encodes integers up to 127. |
- | For my application, | + | For my application, |
- | applications). If the user would like to experiment with sending commands that are over | + | applications). If the user would like to experiment with sending commands that are over |
- | 127, they should look into changing the encoding for the Seral Port class to a different | + | 127, they should look into changing the encoding for the Serial |
- | encoding scheme such as UTF-8. | + | encoding scheme such as UTF-8. |
*/ | */ | ||
Line 98: | Line 98: | ||
NXT-> | NXT-> | ||
- | // Opens port for communication with NXT Brick over Bluetooth | + | |
NXT-> | NXT-> | ||
Console:: | Console:: | ||
Line 107: | Line 107: | ||
// Byte 00: Least Significant Byte: | // Byte 00: Least Significant Byte: | ||
// Byte 01: Most Significant Bit: 0th Byte | // Byte 01: Most Significant Bit: 0th Byte | ||
- | // Byte 02: Command response requested: 0x80 for response, 0x00 for no response | + | // Byte 02: Command response requested: |
- | // Byte 03: Mode byte: 0x04 for controlling a motor | + | // Byte 03: Mode byte: |
- | // Byte 04: Power set in percentages: | + | // Byte 04: Power set in percentages: |
// Byte 05: Output mode byte: | // Byte 05: Output mode byte: | ||
// Byte 06: Regulation mode byte: | // Byte 06: Regulation mode byte: | ||
- | // Byte 07: Turn ratio: 0x00 | + | // Byte 07: Turn ratio: 0x00 |
// Byte 08: Motor run state: | // Byte 08: Motor run state: | ||
// Byte 09 - 13: Tacho limit: | // Byte 09 - 13: Tacho limit: | ||
// See LEGO Mindstorms NXT Communication Protocol documentation for details | // See LEGO Mindstorms NXT Communication Protocol documentation for details | ||
- | cli:: | + | // motorA = 0, motor b = 1, motor c = 1 |
- | + | wchar_t motorL = [left motor port]; | |
- | //Writes direct command | + | wchar_t motorR = [right motor port]; |
- | Console:: | + | cli:: |
+ | cli:: | ||
+ | cli:: | ||
+ | cli:: | ||
+ | |||
+ | |||
+ | //Writes direct command to the NXT Brick to drive two motors forward | ||
+ | Console:: | ||
+ | Sleep(5000); | ||
+ | NXT-> | ||
+ | NXT-> | ||
Sleep(1000); | Sleep(1000); | ||
- | NXT-> | + | |
+ | //Writes direct command to the NXT Brick to stop two motors | ||
+ | Console:: | ||
+ | Sleep(1000); | ||
+ | NXT-> | ||
+ | NXT-> | ||
//Closes the port and exits the program | //Closes the port and exits the program | ||
Console:: | Console:: | ||
- | Sleep(3000); | + | Sleep(5000); |
NXT-> | NXT-> | ||
exit(0); | exit(0); | ||
Line 135: | Line 150: | ||
- Under the "COM Ports" menu are the current COM Ports assigned to different devices. Find the Outgoing Port for the NXT and take note of it. It will be used later in the tutorial. | - Under the "COM Ports" menu are the current COM Ports assigned to different devices. Find the Outgoing Port for the NXT and take note of it. It will be used later in the tutorial. | ||
- Open the sample code and read through the comments to get a general idea of what the program does | - Open the sample code and read through the comments to get a general idea of what the program does | ||
+ | - Change the values for the motor variables MotorL and MotorR to your NXT Bot's corresponding ports | ||
- Build and run the the solution, when prompted, enter the COM port that the NXT Brick is currently utilizing | - Build and run the the solution, when prompted, enter the COM port that the NXT Brick is currently utilizing | ||
- | The NXT should then play a tone as demonstrated in the video: https:// | + | The NXT should then drive as demonstrated in the video: https:// |
==== Final Words ==== | ==== Final Words ==== | ||
nxt_pc_bluetooth.1472534913.txt.gz · Last modified: 2016/08/29 22:28 by alvaropintado