USB Host Shield No Computer. - Page 1
Forum section: electronics / beginners

author: MasterSnipes
author_rank: Newbie
timestamp: March 16, 2015, 08:37:57 pm
content: Hello! I am using a Arduino USB host shield from Circuits@Home and I am connecting a USB Bluetooth dongle to a PS3 controller. I was wondering if I could connect the bluetooth dongle to the PS3 controller without a computer in the process. Would I have to remove all Serial things? Or is it some other process?If you could reply ASAP that would be great!Here is the code I am using:Code:/*Example sketch for the PS3 Bluetooth library - developed by Kristian LauszusFor more information visit my blog: [url=http://blog.tkjelectronics.dk/]http://blog.tkjelectronics.dk/ orsend me an e-mail: kristianl@tkjelectronics.com*/#include <PS3BT.h>#include <usbhub.h>// Satisfy IDE, which only needs to see the include statment in the ino.#ifdef dobogusinclude#include <spi4teensy3.h>#include <SPI.h>#endifUSB Usb;//USBHub Hub1(&Usb); // Some dongles have a hub insideBTD Btd(&Usb); // You have to create the Bluetooth Dongle instance like so/* You can create the instance of the class in two ways */PS3BT PS3(&Btd); // This will just create the instance//PS3BT PS3(&Btd, 0x00, 0x15, 0x83, 0x3D, 0x0A, 0x57); // This will also store the bluetooth address - this can be obtained from the dongle when running the sketchbool printTemperature;bool printAngle;void setup() {Serial.begin(115200);#if !defined(__MIPSEL__)while (!Serial); // Wait for serial port to connect - used on Leonardo, Teensy and other boards with built-in USB CDC serial connection#endifif (Usb.Init() == -1) {Serial.print(F("\r\nOSC did not start"));while (1); //halt}Serial.print(F("\r\nPS3 Bluetooth Library Started"));}void loop() {Usb.Task();if (PS3.PS3Connected || PS3.PS3NavigationConnected) {if (PS3.getAnalogHat(LeftHatX) > 137 || PS3.getAnalogHat(LeftHatX) < 117 || PS3.getAnalogHat(LeftHatY) > 137 || PS3.getAnalogHat(LeftHatY) < 117 || PS3.getAnalogHat(RightHatX) > 137 || PS3.getAnalogHat(RightHatX) < 117 || PS3.getAnalogHat(RightHatY) > 137 || PS3.getAnalogHat(RightHatY) < 117) {Serial.print(F("\r\nLeftHatX: "));Serial.print(PS3.getAnalogHat(LeftHatX));Serial.print(F("\tLeftHatY: "));Serial.print(PS3.getAnalogHat(LeftHatY));if (PS3.PS3Connected) { // The Navigation controller only have one joystickSerial.print(F("\tRightHatX: "));Serial.print(PS3.getAnalogHat(RightHatX));Serial.print(F("\tRightHatY: "));Serial.print(PS3.getAnalogHat(RightHatY));}}// Analog button values can be read from almost all buttonsif (PS3.getAnalogButton(L2) || PS3.getAnalogButton(R2)) {Serial.print(F("\r\nL2: "));Serial.print(PS3.getAnalogButton(L2));if (PS3.PS3Connected) {Serial.print(F("\tR2: "));Serial.print(PS3.getAnalogButton(R2));}}if (PS3.getButtonClick(PS)) {Serial.print(F("\r\nPS"));PS3.disconnect();}else {if (PS3.getButtonClick(TRIANGLE))Serial.print(F("\r\nTraingle"));if (PS3.getButtonClick(CIRCLE))Serial.print(F("\r\nCircle"));if (PS3.getButtonClick(CROSS))Serial.print(F("\r\nCross"));if (PS3.getButtonClick(SQUARE))Serial.print(F("\r\nSquare"));if (PS3.getButtonClick(UP)) {Serial.print(F("\r\nUp"));if (PS3.PS3Connected) {PS3.setLedOff();PS3.setLedOn(LED4);}}if (PS3.getButtonClick(RIGHT)) {Serial.print(F("\r\nRight"));if (PS3.PS3Connected) {PS3.setLedOff();PS3.setLedOn(LED1);}}if (PS3.getButtonClick(DOWN)) {Serial.print(F("\r\nDown"));if (PS3.PS3Connected) {PS3.setLedOff();PS3.setLedOn(LED2);}}if (PS3.getButtonClick(LEFT)) {Serial.print(F("\r\nLeft"));if (PS3.PS3Connected) {PS3.setLedOff();PS3.setLedOn(LED3);}}if (PS3.getButtonClick(L1))Serial.print(F("\r\nL1"));if (PS3.getButtonClick(L3))Serial.print(F("\r\nL3"));if (PS3.getButtonClick(R1))Serial.print(F("\r\nR1"));if (PS3.getButtonClick(R3))Serial.print(F("\r\nR3"));if (PS3.getButtonClick(SELECT)) {Serial.print(F("\r\nSelect - "));PS3.printStatusString();}if (PS3.getButtonClick(START)) {Serial.print(F("\r\nStart"));printAngle = !printAngle;}}#if 0 // Set this to 1 in order to see the angle of the controllerif (printAngle) {Serial.print(F("\r\nPitch: "));Serial.print(PS3.getAngle(Pitch));Serial.print(F("\tRoll: "));Serial.print(PS3.getAngle(Roll));}#endif}#if 0 // Set this to 1 in order to enable support for the Playstation Move controllerelse if (PS3.PS3MoveConnected) {if (PS3.getAnalogButton(T)) {Serial.print(F("\r\nT: "));Serial.print(PS3.getAnalogButton(T));}if (PS3.getButtonClick(PS)) {Serial.print(F("\r\nPS"));PS3.disconnect();}else {if (PS3.getButtonClick(SELECT)) {Serial.print(F("\r\nSelect"));printTemperature = !printTemperature;}if (PS3.getButtonClick(START)) {Serial.print(F("\r\nStart"));printAngle = !printAngle;}if (PS3.getButtonClick(TRIANGLE)) {Serial.print(F("\r\nTriangle"));PS3.moveSetBulb(Red);}if (PS3.getButtonClick(CIRCLE)) {Serial.print(F("\r\nCircle"));PS3.moveSetBulb(Green);}if (PS3.getButtonClick(SQUARE)) {Serial.print(F("\r\nSquare"));PS3.moveSetBulb(Blue);}if (PS3.getButtonClick(CROSS)) {Serial.print(F("\r\nCross"));PS3.moveSetBulb(Yellow);}if (PS3.getButtonClick(MOVE)) {PS3.moveSetBulb(Off);Serial.print(F("\r\nMove"));Serial.print(F(" - "));PS3.printStatusString();}}if (printAngle) {Serial.print(F("\r\nPitch: "));Serial.print(PS3.getAngle(Pitch));Serial.print(F("\tRoll: "));Serial.print(PS3.getAngle(Roll));}else if (printTemperature) {Serial.print(F("\r\nTemperature: "));Serial.print(PS3.getTemperature());}}#endif}

author: MatthewEveritt
author_rank: Unknown
timestamp: March 16, 2015, 09:09:49 pm
content: I can't see anywhere where the code reads anything from the computer, it's just outputting messages. To the best of my knowledge it shouldn't matter that those messages aren't received. Have you tried it as is?

author: katzohki
author_rank: Frequent Contributor
timestamp: March 16, 2015, 09:25:27 pm
content: Put your code inside code block if you can so it's easier to read.Like this:[ code]Code goes here[ /code]Code:Code goes here(Take out the space in front of code and /code)

author: MasterSnipes
author_rank: Newbie
timestamp: March 16, 2015, 09:43:51 pm
content: Quote from: MatthewEveritt on March 16, 2015, 09:09:49 pmI have tried it but I haven't had much success. Is the while(!Serial) affecting it? Or whatever checks if Serial is connected?

author: rs20
author_rank: Super Contributor
timestamp: March 16, 2015, 10:07:12 pm
content: Quote from: MasterSnipes on March 16, 2015, 09:43:51 pmHave you tried it while the computerisplugged in? It makes no sense to blame the Serial library if it works fine while it's plugged in.In what sense is it not working? What are you trying to do? What are you expecting to see? What are you actually seeing?

author: MatthewEveritt
author_rank: Unknown
timestamp: March 16, 2015, 10:08:17 pm
content: Quote from: MasterSnipes on March 16, 2015, 09:43:51 pmAhh, I missed that, it probably would stick there. Try commenting that line out.

author: rs20
author_rank: Super Contributor
timestamp: March 16, 2015, 10:37:30 pm
content: Quote from: MatthewEveritt on March 16, 2015, 10:08:17 pmIt'd only stick there if he was using the CDC serial in, e.g., a Leornado. With, e.g., an Arduino Uno, that line is a no-op.