Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Altes RC-Auto per Xbox-Controller & Arduino zum Joystick-Fahrzeug umbauen

Benötigte Komponenten

Projektbeschreibung

Ein altes RC-Auto (hier ein Monstertruck) wird zur ferngesteuerten Plattform mit Xbox-360-Controller. Die originale Elektronik wird entfernt, nur die Motorkabel bleiben. Ein Arduino UNO mit USB Host Shield empfängt die Signale des Xbox-Receivers. Zwei L293D-Treiber (oder SN754410) steuern die beiden Motoren (Fahrt & Lenkung). Spannungsregler (7812/78S12) erzeugen stabile 12V aus 10–12 AA-Batterien (15–18V Eingang).

Schritt 1: Auto vorbereiten

Alte Elektronik ausbauen, Motorkabel belassen.

Schritt 2: Arduino & Shield montieren

USB Host Shield auf Arduino UNO stecken, beides im Auto befestigen (z. B. vorhandene Bohrungen nutzen).

Schritt 3: Schaltung aufbauen

Auf Steckbrett oder Lochrasterplatine: Zwei H-Brücken (L293D) für die zwei Motoren, zwei Spannungsregler (7812 für Logik, 78S12 für Motoren – hoher Strombedarf beim Anfahren ~2A). Kühlkörper nicht vergessen. Schaltplan siehe Bild.

Altes RC-Auto per Xbox-Controller & Arduino zum Joystick-Fahrzeug umbauen

Schritt 4: Schaltung im Auto verbauen

Platz finden, Motoren anschließen, Xbox-Receiver in USB Host Shield stecken.

Schritt 5: Programmierung

Der Code basiert auf der USB Host Shield Library 2.0 (Beispiel für Xbox Wireless Receiver).

Wichtige Pin-Belegung:

Motor 1 (Fahrt): PWM Pins 5 & 6
Motor 2 (Lenkung): Pins 4 & 7
Brems-LED: Pin 2

Der Sketch initialisiert USB, prüft Controller-Verbindung, liest Tasten/Sticks aus und steuert die H-Brücken per analogWrite (Fahrt) bzw. digitalWrite (Lenkung).

Code

Vollständiger Sketch im Repository (Link oben) und unten als Kopie.

/* Example sketch for the Xbox Wireless Receiver library ... */
#include <XBOXRECV.h>
#ifdef dobogusinclude
#include <spi4teensy3.h>
#endif
USB Usb;
XBOXRECV Xbox(&Usb);
#define motorPinOne 5
#define motorPinTwo 6
#define motor2PinOne 4
#define motor2PinTwo 7
#define BRAKE 2
int pulse = 0;
int forward = 0;
int brake_on = 0;
void setup() {
  TCCR1B = TCCR1B & 0b11111000 | 0x02;
  Serial.begin(115200);
  if (Usb.Init() == -1) {
    Serial.print(F("\r\nOSC did not start"));
    while(1);
  }
  Serial.print(F("\r\nXbox Wireless Receiver Library Started"));
  pinMode(motorPinOne, OUTPUT);
  pinMode(motorPinTwo, OUTPUT);
  pinMode(motor2PinOne, OUTPUT);
  pinMode(motor2PinTwo, OUTPUT);
  pinMode(BRAKE, OUTPUT);
  digitalWrite(BRAKE, LOW);
}
void loop() {
  Usb.Task();
  if(Xbox.XboxReceiverConnected) {
    for(uint8_t i=0;i<4;i++) {
      if(Xbox.getButtonPress(L2, i)) { pulse = Xbox.getButtonPress(L2, i); forward = 0; clockwise(); }
      if(Xbox.getButtonPress(R2, i)) { pulse = Xbox.getButtonPress(R2, i); forward = 1; counterClockwise(); }
      if(Xbox.getAnalogHat(LeftHatX, i) > 7500 || Xbox.getAnalogHat(LeftHatX, i) < -7500) {
        if(Xbox.getAnalogHat(LeftHatX, i) > 26000) turn_right(); else center();
      }
      if(Xbox.getAnalogHat(LeftHatX, i) < -7500) {
        if(Xbox.getAnalogHat(LeftHatX, i) < -26000) turn_left(); else center();
      }
      if(Xbox.getButtonClick(B, i)) { digitalWrite(BRAKE, HIGH); brake_on = 1; pulse = 100; if (forward) clockwise(); else counterClockwise(); }
      if(Xbox.getButtonClick(Y, i)) { motors_stop(); }
    }
  }
  delay(1);
}
void clockwise() { analogWrite(motorPinOne,pulse); analogWrite(motorPinTwo,0); if(brake_on){delay(600);digitalWrite(BRAKE,LOW);brake_on=0;pulse=0;} }
void counterClockwise() { analogWrite(motorPinOne,0); analogWrite(motorPinTwo,pulse); if(brake_on){delay(600);digitalWrite(BRAKE,LOW);brake_on=0;pulse=0;} }
void turn_left() { digitalWrite(motor2PinOne,HIGH); digitalWrite(motor2PinTwo,LOW); }
void turn_right() { digitalWrite(motor2PinOne,LOW); digitalWrite(motor2PinTwo,HIGH); }
void motors_stop() { analogWrite(motorPinOne,0); analogWrite(motorPinTwo,0); pulse=0; }
void center() { digitalWrite(motor2PinOne,LOW); digitalWrite(motor2PinTwo,LOW); }

Herstellungsprozess

  1. Bluetooth-gesteuerter Raspberry Pi Roboter mit Audio-Feedback bauen
  2. Gesteuerter RGB-Tischlampe – Interaktive, berührungslose Beleuchtung
  3. LEDs mit Alexa über Raspberry Pi steuern – Einfache Schritt-für-Schritt-Anleitung
  4. Arduino-basierter 6-DoF Roboterarm mit Nunchuk-Steuerung
  5. Zwei Schrittmotoren mit Arduino Nano & Joystick steuern – Einfaches Tutorial
  6. Sprachgesteuerter Roboter mit Arduino Nano bauen
  7. Intelligenter Parkplatzzähler: Echtzeit-Fahrzeugverfolgung mit Arduino, Processing & PHP
  8. PiBot: Arduino-gesteuerter Klavierroboter für präzise Musikwiedergabe
  9. Wi-Servo: Servomotoren per WLAN über Webbrowser steuern
  10. DIY Arduino Lenkrad / Joystick für Rennspiele – USB-HID-Umbau