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

DIY 2D Motion Racing Simulator

Komponenten und Verbrauchsmaterialien

Arduino Nano R3
× 1
SG90 Micro-Servomotor
× 2

Notwendige Werkzeuge und Maschinen

Lötkolben (generisch)

Apps und Onlinedienste

Arduino-IDE

Über dieses Projekt

SimTools ist eine generische Motion Simulator-Software, die mehrere Hardwareschnittstellen steuern kann, einschließlich Arduino. Diese Kombination wird in dem im Video vorgestellten Projekt verwendet. Der Hardwareteil besteht nur aus dem Arduino Nano-Mikrocontroller und zwei billigen SG90-Mikroservomotoren. Wir müssen nur den unten angegebenen Code hochladen.

Die benötigten Spieldaten werden mit Hilfe der SimTools Software über die serielle Schnittstelle an den Arduino übertragen. Als nächstes aktiviert Arduino Servomotoren, die die Simulationsplattform entsprechend bewegen. Dies ist ein kleiner Maßstab eines zweiachsigen Simulators. Um einen echten Simulator zu erstellen, müssen Sie Motortreiber und große Servomotoren hinzufügen.

Auf der Seite "https://www.xsimulator.net/" gibt es viele Beispiele für solche DIY-Simulatoren sowie Konstruktionszeichnungen und Tipps. Der Einrichtungsvorgang von SimTools wird im Video beschrieben, Sie können aber auch das PDF-Benutzerhandbuch herunterladen unter:https://simtools.us/wp-content/uploads/2019/06/SimToolsUserManual-v2.4.pdf

SimTools läuft im „Demo“-Modus, bis eine gültige Lizenz registriert wurde. Das Plugin für Live for Speed ​​ist zum Testen voll funktionsfähig, während sich SimTools im Demo-Modus befindet. (Die Demo von Live for Speed ​​funktioniert auch zum Testen von SimTools.) Weitere Informationen und Live for Speed-Downloads finden Sie unter https://www.lfs.net/downloads

SimTools-Download-Link:

https://www.xsimulator.net/community/marketplace/motion-simulation-software-simtools.63/

Code

  • Code
CodeC/C++
//************************************************ ********************************************** // RC Modell Servo// Originalcode von EAOROBBIE (Robert Lindsay)// Komplett zerlegt von aarondc// Zur kostenlosen Nutzung für Sim Tool Motion Software//******************** ************************************************* **********************#include //#define DEBUG 1 // Diese Zeile auskommentieren, um Debugging zu entfernen Serial.print linesconst int kActuatorCount =2; // wie viele Aktoren wir handhaben// die Buchstaben ("Namen"), die von Sim Tools gesendet werden, um jeden Aktuator zu identifizieren // NB:die Reihenfolge der Buchstaben hier bestimmt die Reihenfolge der verbleibenden Konstanten kPins und kActuatorScaleconst char kActuatorName[kActuatorCount] ={ 'R', 'L' };const int kPins[kActuatorCount] ={4, 5}; // Pins, an denen die Aktoren befestigt sindconst int kActuatorScale[kActuatorCount][2] ={ { 0, 179 } , // Rechte Aktuatorskalierung { 179, 0 } // Linke Aktuatorskalierung }; const char kEOL ='~'; // End of Line - das Trennzeichen für unsere Aktorwerte const int kMaxCharCount =3; // etwas Versicherung...Servo ActuatorSet[kActuatorCount]; // unser Array von Actuatorsint ActuatorPosition[kActuatorCount] ={90, 90}; // aktuelle Aktuatorpositionen, initialisiert auf 90int currentActuator; // Verfolgen Sie den aktuellen Aktuator, der vom seriellen Port eingelesen wird valueCharCount =0; // wie viele Wertzeichen haben wir gelesen (muss kleiner als kMaxCharCount sein!!// einige Zustände für unsere Zustandsmaschine einrichten // psReadActuator =nächstes Zeichen vom seriellen Port teilt uns den Actuator mit // psReadValue =die nächsten 3 Zeichen vom seriellen Port teilt uns den Wert mit TPortState { psReadActuator, psReadValue }; TPortState currentState =psReadActuator;void setup () { // Befestige die Aktoren an den Pins für (int i =0; i 0).void serialEvent() { char tmpChar; int tmpValue; while (Serial.available()) { // if Wir warten auf einen Aktuatornamen, greifen Sie ihn hier zu if (currentState ==psReadActuator) { tmpChar =Serial.read(); // Suchen Sie nach unserem Aktuator im Array der Aktuatornamen, die wir eingerichtet haben #ifdef DEBUG Serial.print ("einlesen"); Serial.println (tmpChar); #endif for (int i =0; i 9)) tmpWert =0; AktorPosition[aktueller Aktor] =AktorPosition[aktueller Aktor] * 10 + tmpValue; WertCharCount++; } sonst Pause; } // Wenn wir das Werttrennzeichen gelesen haben, aktualisieren Sie den Aktuator und suchen Sie nach dem nächsten Aktuatornamen if (tmpValue ==kEOL || valueCharCount ==kMaxCharCount) {#ifdef DEBUG Serial.print ("einlesen"); Serial.println (actuatorPosition [currentActuator]); #endif // Skalieren Sie die neue Position so, dass der Wert zwischen 0 und 179 liegt. ifdef DEBUG Serial.print ("skaliert auf"); Serial.println (actuatorPosition [currentActuator]); #endif updateActuator(currentActuator); currentState =psReadActuator; } } }} // Schreibe die aktuelle Aktuatorposition in den übergebenen Aktuator void updateActuator(int thisActuator) {actuatorSet[thisActuator].write(actuatorPosition[thisActuator]);}

Schaltpläne


Herstellungsprozess

  1. DIY Infrarot-Bewegungssensorsystem für Raspberry Pi
  2. DIY LUMAZOID Arduino Music Visualiser
  3. DIY-Voltmeter mit Arduino und Smartphone
  4. DIY Virtual Reality Skateboard
  5. Bewegungssensor-Wasserpistole
  6. DIY Arduino RADIONICS-Behandlungsmaschine
  7. DIY-Idee mit RFID
  8. DIY 3-Achsen-CNC-VMC
  9. DIY Arduino + GY-906 Infrarot-Thermometer
  10. DIY Ruderpedale für Flugsimulator