BARC Jeep - een XBOX gecontroleerde macht wielen (1 / 7 stap)

Stap 1: Krijgen de Controller van de Xbox communiceren aan de Arduino


Het eerste ding is de controller van de Xbox communiceren met de Arduino via de USB Host Shield. Alle van de foto's opgenomen in dit Instructable tonen een Arduino Mega, maar in werkelijkheid een Uno is alles wat nodig is voor het USB-Host schild en slechts 2 digitale outs.

Sluit het USB-Host schild op de Arduino. Voor nu zijn macht de Arduino met je computer. Vervolgens sluit de Xbox 360™ Wireless Gaming Receiver for Windows®. Zodra deze verbindingen zijn gemaakt met het laden van de code hieronder in de Arduino waarmee de Arduino sturende bewerkingen op basis van input van de controller uit te voeren.

Er is overvloed van notatie om te helpen begrijpen wat er gaande is.

Arduino Code

// *****************************
* RC Power wielen Jeep *
// *****************************

/*

OVERZICHT
Een 12v dual-motor macht wielen Jeep Orkaan zal station hebben
en besturing op afstand bestuurde via Arduino.

HARDWARE
Macht wielen Jeep Orkaan
Arduino UNO R3
Schakelingen USB2.0 Host Shield http://www.circuitsathome.com/products-page/arduino-shields/usb-host-shield-2-0-for-arduino
Pololu eenvoudige motorcontroller 18v25 http://www.pololu.com/catalog/product/1381/resources
Pololu JRK motorcontroller 12v12 http://www.pololu.com/catalog/product/1393/resources
Pololu generieke Lineaire Actuator 4".6"/s http://www.pololu.com/catalog/product/2333
Xbox 360 Wireless USB-Adapter
Xbox 360 draadloze Controller

HARDWARECONFIGURATIE

* +-------+         +---------------+  USB    +-----------------+
* | Arduino +---> | USB Host schild +---> | XBOX USB Receiver| *** / >< / *** draadloze Controller voor de XBOX
* +-+-----+         +---------------+         +-----------------+
* |
* | TX (TTL serieel)
* |
* |------------------|
* |                  |
* v v Rx Rx
* +----------+      +----------+
* | Pololu SMC + | Pololu Jrk|
* +----------+      +----------+
* Master Slave
* +                 +
* |                 |
* |                 |
* v                 v
* +--------+        +--------+
* | Dubbele 12v|        | Lineaire |
* | Motoren |        | Actuator|
* +--------+        +--------+
*
* NOTA 'S
* Buiten met line-of-sight heeft het draadloze controlemechanisme van de Xbox een geweldig bereik. Het maximale bereik
* heeft niet volledig getest, maar ik heb meer dan 50ft zonder merkbaar kwaliteitsverlies in signaal.
*
* Alles zit aan boord van de Jeep. Alle TTL seriële verbindingen zijn hard-wired in de Arduino
* en motor controllers. De Xbox-ontvanger is aangesloten op een metalen paal antenne-stijl.
*
* De huidige lineaire actuator is mogelijk te langzaam. Het 110 pond van geweld, maar op.6"/ s. er kan verplaatsen
* is een snellere model dat 22 pond @ 1.5" /s http://www.pololu.com/catalog/product/2345 doet
*
*/

*** Bevat voor de Circuits USB-Shield ***
#include < XBOXRECV.h > / / Xbox 360 draadloze ontvanger

USB-exemplaar maken? USB-SHIELD
USB Usb;

Maak een instantie van de Xbox-ontvanger ingangen genaamd XboxRCV
XBOXRECV XboxRCV(&Usb);  USB-SHIELD

Deze volgende constanten bytes deel uitmaken van de Pololu Protocol
Const byte pololuCommandByte = 170;
Const byte smcDeviceNumber = 13;
Const byte smcSpeedDataByte3 = 0;
Const byte smcFWDbyte = 5;
Const byte smcREVbyte = 6;
Const byte jrkDeviceNumber = 11;

char smcSpeed;  Eindsnelheid
lange int leftStickX; Xbox linker analoge Stick waarde

VOID Setup {}
Serial.begin(9600);    Serial baud-rate aan 9600

Programma stoppen totdat schild is aangesloten
USB. Init zal terugkeren -1 voor shield verbroken en 0 als verbonden
Als (Usb.Init() == -1) {/ / als USB-shield deed niet initialiseren voor welke reden dan ook...
while(1); stoppen zolang schild verbroken wordt gemeld
}

}

void loop {}
Usb.Task();
Laten we het proces van de input van de Xbox
if(XboxRCV.Xbox360Connected[0]) {}

START van de opdracht van de exitSafeStart van knop verzendt aan SMC
if(XboxRCV.getButtonClick(start,0)) {}
// *******************************
* exitSafeStart *
// *******************************
Nodig om motoren verbonden aan SMC te verplaatsen
Moet worden aangeroepen wanneer de domeincontroller opnieuw is opgestart en na elke fout
Pololu Protocol: 0xAA (170) | apparaatnummer | 0x03 (3)
Serial.write(pololuCommandByte);
Serial.write(smcDeviceNumber);
Serial.write(3);
}

/ * De Xbox-triggers bevatten waarden van 0 - 255. De SMC accepteert een laag
snelheid resolutiewaarde als een percentage, 0% - 100% (hoge resolutie is
een 2-byte int). De volgende twee regels kaarten de controller voor de uitvoer van een
negatieve waarde voor L2 (omgekeerde) en positief voor R2 (vooruit). Deze twee
waarden worden vervolgens opgeteld om de uiteindelijke snelheid en richting. Dit is
zodat beide triggers kunnen simultaneosly worden gehouden zonder dat de waarden
oscilleren tussen Forward en Reverse
*/
char XboxL2 = map((XboxRCV.getButtonPress(L2,0)), 0, 255, 0,-100);
char XboxR2 = map((XboxRCV.getButtonPress(R2,0)), 0, 255, 0, 100);

Som van de toegewezen ingangen samen om een eindsnelheid en richting
smcSpeed = XboxL2 + XboxR2;

/ * De voorbeeldcode voor de Xbox controller gaf een deadzone van-7500 naar 7500.
Deze code onderhoudt dat dode zone voor nu (ik wil het
verstelbare terwijl de schets wordt uitgevoerd). */

leftStickX = map(XboxRCV.getAnalogHat(LeftHatX,0),-32768, 0, 32767 3880);  Analoge stick verplaatst
Stel de dode band in de linker analoge stick. Zou graag dit als verstelbaar
Als ((leftStickX > = 1500) & & (leftStickX < = 1983)) {}
leftStickX = 1400;
}
}

Als u geen triggers/stokken worden vervoerd; dan centreren en nul
else {}
leftStickX = 1400;
smcSpeed = 0;
}

*** GERESERVEERD "HEARTBEAT" ***
"Heartbeat" stuurt een seriële commando elke x seconden als een "keep-alive" naar de SMC en JRK
domeincontrollers. Het zal ook voorkomen dat dubbele opdrachten overstromingen de seriële buffer (ideaal
voordeuitvoering Xbee).

// *******************************
* DE SERIËLE OPDRACHTEN VERZENDEN *
// *******************************
/ * Gereserveerd voor seriële opdrachten verzonden naar motor controllers aan te passen
optie parameters. Ook voor het verwerken van de reactie van degenen
opdrachten, indien van toepassing. */

DEZE SECTIE STUURT DE SNELHEID EN RICHTING OPDRACHTEN NAAR HET SMC
// *******************************
* setMotorSpeed *
// *******************************
/*
http://www.Pololu.com/docs/0J44/6.2.1

De Pololu SMC kunt een volledige snelheid resolutiewaarde (-3200 tot 3200), echter dit is niet nodig
(nog) sinds de Xbox controller analoge triggers alleen uitgang van 0 tot 255. De onderstaande tabellen worden gekopieerd
rechtstreeks uit de handleiding gekoppeld hierboven. We gebruiken een lage resolutie snelheid waarde uitgedrukt in
percentage (0 tot 100).

"Alternatieve interpretatie: de toegestane waarden voor de tweede snelheid gegevensbyte zijn 0 tot en ¢ â'¬â €œ100,
dus u de eerste snelheid gegevensbyte negeren kunt (altijd instelt op 0), en overwegen de
tweede gegevensbyte gewoon als het percentage van de snelheid. Bijvoorbeeld, om de motor op te rijden
53% snelheid, gebruikt u byte1 = 0 en byte2 = 53. "

Motor uit
Byte Byte 1 gegevens Byte 2 gegevens Byte 3 gegevens gegevensbyte 4 commando
Pololu alternatieve gebruik 0xAA (170)-apparaatnummer 0x05 (5) 0 (altijd) snelheid %


Motor omgekeerde (byte 2 gegevenswijzigingen)
Byte Byte 1 gegevens Byte 2 gegevens Byte 3 gegevens gegevensbyte 4 commando
Pololu alternatieve gebruik 0xAA (170)-apparaatnummer (6) 0x06 (altijd) 0% snelheid

*/
smcSpeed moet een getal van-100 tot 100

Stuur eerst de Pololu SMC opdracht byte
Serial.write(pololuCommandByte);

Vervolgens stuur het apparaatnummer SMC
Serial.write(smcDeviceNumber);

Hier, laten we bepalen de snelheid en richting.
Als (smcSpeed < 0) / / Let's omkeren aangezien de snelheid negatief is
{
Serial.write(6);  motor omgekeerde opdracht
smcSpeed = - smcSpeed;  smcSpeed positief b/c de opdracht vindt alleen positieve getallen maken
}
anders
{
Serial.write(5);  motor vooruit opdracht
}

Serial.write(smcSpeedDataByte3);  Altijd nul (voor nu) vanwege het protocol dat wordt gebruikt

Nu laten we verzenden de werkelijke snelheid
Serial.write(smcSpeed);
delay(1);  Voor stabiliteit

VOLGENDE SECTIE STUURT DE POSITIE NAAR DE LINEAIRE ACTUATOR VIA DE JRK
// *******************************
* setJRKPos *
// *******************************
/ * http://www.pololu.com/docs/0J38/4.e
Pololu protocol, hex: 0xAA, apparaat nummer, 0x40 + lage 5 bits richten, de doelstelling van hogere 7 bits
Hier is wat C-voorbeeldcode die de juiste seriële bytes genereert,
gegeven een geheel getal "doel" dat geldt het gewenste doel (0 - 4095) en een array genaamd serialBytes:

1 serialBytes [0] = 0xC0 + (doel & 0x1F); Opdracht byte houdt de lagere 5 bits van doel.
2 serialBytes [1] = (target >> 5) & 0x7F;   Gegevensbyte bezit de bovenste 7 bits van doel. */

Serial.write(pololuCommandByte);
Serial.write(jrkDeviceNumber);
Serial.write (0x40 + (leftStickX & 0x1F));
Serial.write ((leftStickX >> 5) & 0x7F);

delay(1);  Voor stabiliteit

}

Gerelateerde Artikelen

Een Xbox-Controller met LEDs oplichten

Een Xbox-Controller met LEDs oplichten

dit instructable uiteengezet om het licht van de vier A, B, X, Y knoppen en juweel van een originele Xbox Controller-S.Ter voltooiing van dit project, is die comfortabel met een soldeerbout aanbevolen. Zelfs als je niet ervaren in het solderen zijn m
Huisdier Curfew: Een Arduino gecontroleerde huisdier deur

Huisdier Curfew: Een Arduino gecontroleerde huisdier deur

Het probleem: U wilt beperken van de tijd wanneer uw huisdier mee mag naar buiten te gaan. Dit kan zijn omdat de buurt niet veilig voor uw kat of kleine hond in de nacht is (plunderende coyotes voor de geest komt). Maar u wilt uw huisdier te kunnen t
Een stekkerdoos gecontroleerd Plug USB. Met isolatie.

Een stekkerdoos gecontroleerd Plug USB. Met isolatie.

Het hele punt van dit Instructable was om mij aan de macht op alle accessoires voor mijn computer zonder na te denken over het. En dan niet alle de weinig macht vampier muur wratten macht, wanneer mij ben niet using naar de computer. Het idee is simp
Maken van een xbox 360 laptop deel 1

Maken van een xbox 360 laptop deel 1

In dit intructable zal ik u tonen hoe te maken van een xbox 360-laptop. Ik weet niet hoeveel dit gaat kosten zodra u al de prijzen bij elkaar optelt, maar ik heb alleen zo veel zoals $15,00. In deel 1 ik zal je laten zien hoe krijg ik alle materialen
Star Wars Speeder van macht wielen

Star Wars Speeder van macht wielen

Hi all,Dit is mijn eerste instructable. Ik had een idee wanneer mijn zoon (5 jaar) en ik waar kijken ROTJ en hij vroeg voor een speeder bike. Ik hen geïnformeerd dat ze niet echt zijn. Een beetje frons geplakt aan de achterkant van mijn hoofd voor ee
Bouw van de Blinquencer - een licht gecontroleerd willekeurige muziekdoos

Bouw van de Blinquencer - een licht gecontroleerd willekeurige muziekdoos

Dit Instructable zal u tonen hoe te bouwen van een Blinquencer - een semi-willekeurige optische melodie generator dat gebruik drie flikkerende LEDs schijnt op een paar van afhankelijke weerstanden licht waarmee de toonhoogte van twee eenvoudige audio
Een interne microfoon aan een xbox 360-controller toe te voegen

Een interne microfoon aan een xbox 360-controller toe te voegen

deze tutorial zal u tonen hoe te installeren van een interne microfoon aan de xbox 360-controller.  Hierdoor zal maken met behulp van een hoofdtelefoon een ding van het verleden.WAARSCHUWING!  DEZE MOD WORDT UW GARANTIE ONGELDIG EN UW CONTROLLER KAN
Een draadloos gecontroleerd, de Raad van het bericht van de Arduino-Powered

Een draadloos gecontroleerd, de Raad van het bericht van de Arduino-Powered

bouwen zelf een draadloos gecontroleerde, Arduino aangedreven message board!Hier is een eenvoudig project waardoor een draadloos programmeerbaar message board. Het gebruik XBee modules ten behoeve van een draadloze seriële verbinding tussen uw comput
Macht wielen Lock

Macht wielen Lock

mijn 3 jaar oude zoon heeft een macht wielen 4-wieler. De knop op de achterkant van de stoel ontgrendelt het toegang wilt geven tot de battery pack.  Hij houdt natuurlijk het opstijgen & spelen met de draden.  De oplossing is het vervangen van de kno
Hoe maak je een externe gecontroleerde Stunt auto thuis

Hoe maak je een externe gecontroleerde Stunt auto thuis

In dit Instructable, zullen we leren om een geweldige gadget dat iedere vent wenste voor en had ook atleast probeerde eens te maken tijdens zijn jeugd. Het is niets anders dan een extern gecontroleerde auto en wat denk je, in dit instructable, we zul
Het geval van een Xbox 360-Controller vervangen

Het geval van een Xbox 360-Controller vervangen

In dit instuctable zal ik u tonen hoe te vervangen door het geval van een xbox-controller als het was gebroken of u een andere kleur shell wilt.Stap 1: Benodigdheden u nodig hebt:Een geval van vrije controller (u kunt uitstappen een volledige gekleur
Gebruik van een Xbox 360-Controller als een muis

Gebruik van een Xbox 360-Controller als een muis

kocht ik in eerste instantie een Xbox 360-controller te gebruiken met emulators. Ik heb ontdekt dat niet alleen worden uitgevoerd met de taak van het nabootsen van een SNES-controller bewonderenswaardig, maar met een gratis programma u het in plaats
Bedrading van een Xbox Kinect voor USB

Bedrading van een Xbox Kinect voor USB

er zijn hopen van goede instructables over het hacken van een Xbox Kinect. Van 3D scannen naar motion sensing, er is een ton van leuke dingen die je met een Kinect doen kunt, maar tot nu toe zijn er geen instructables over hoe de Kinect draad voor US
Manders hoe maak je een Xbox Live-Account

Manders hoe maak je een Xbox Live-Account

dit toont u hoe te maken van een Xbox 360 live account en laat ook zien hoe maak je een avatar.Stap 1: Zet de Xbox Eerst zorg ervoor dat alle kabels zijn aangesloten. Inclusief het snoer aggregaat en het snoer van de TV. Vervolgens duw de zilveren vo