Mehrere Vibrationsmotoren ansteuern

OP #4425436
Lesenswert?
• ▲
▼
Hallo zusammen!

Für mein aktuellen Projekt möchte ich 5 Vibrationsmotoren ansteuern und 
auch deren Intensität verändern können.

Das ganze soll aus der Spiele-Engine Unity3d heraus funktionieren, für 
die es ein Arduino plugin gibt.
Verschiedene Interaktionen im Spiel sollen dann die 5 Vibrationsmotoren 
unterschiedlich stark vibrieren lassen.

Ich habe einen arduino UNO und die Motoren hier und schonmal eine kleine 
Schaltung aufgebaut, mit der ich einen Motor per NPN Transistor und PWM 
steuern kann.

Als ich jedoch probiert habe Werte am Computer über den Seriellen 
Monitor einzugeben ist mir aufgefallen, dass da eine Verzögerung von 
knapp 2 Sekunden ist bis der Wert übernommen wird.

In meiner Vorstellung soll dort später aber eine witzig kleine Latenz 
sein.

Ist das mit einem Arduino überhaupt möglich? Ich habe schonmal gelesen, 
dass man einen arduino mit Assembler programmieren müsste, um schnellen 
Code auszuführen?

Ich würde mich über Hilfe freuen!

Schöne Grüße,

Fabian
Gast #4425458
Lesenswert?
• ▲
▼
Fabian D. schrieb:
> Als ich jedoch probiert habe Werte am Computer über den Seriellen
> Monitor einzugeben ist mir aufgefallen, dass da eine Verzögerung von
> knapp 2 Sekunden ist bis der Wert übernommen wird.


Lass mich raten: Du benutzt irgendwo in deinem Programm "delay"?
In fast allen Fällen liegt hier das Problem.
Moderator (Firma: Titel) Persönliche Seite #4425464
Lesenswert?
• ▲
▼
Fabian D. schrieb:
> Als ich jedoch probiert habe Werte am Computer über den Seriellen
> Monitor einzugeben ist mir aufgefallen, dass da eine Verzögerung von
> knapp 2 Sekunden ist bis der Wert übernommen wird.
Wo?

> In meiner Vorstellung soll dort später aber eine witzig kleine Latenz
> sein.
Lustig, deine Vorstellung...
(Lies in Zukunft die Sätze einfach nochmal durch und kontrolliere sie 
auf Sinn und Fehler)

> soll dort später aber eine witzig kleine Latenz sein.
Dann ermittle doch einfach, wo in der Signalkette diese Verzögerung 
passiert. Denn es ist eigenlich nut bei Quadcore-Boliden mit 3GHz 
üblich, dass auf einen Tastendruck oft erst mit wahrnehmbarer 
Verzögerung reagiert wird.
Miss auf der Seriellen Schnittstelle, wann die Daten übertragen werden 
und wie lange es dauert, bis der Motor angeschaltet wird. Evtl. ist 
nämlich nicht der uC für die Verzögerung verantwortlich, sondern der 
stromfressende Rechenbolide...
OP #4425511
Lesenswert?
• ▲
▼
Ich fürchte ich muss erstmal in neue Hardware investieren...

Ich hatte meinen Arduino damals bei einem Händler aus Deutschland 
bestellt und einige Zeit später festgestellt, dass es eine gefälschte 
Kopie ist..
Hat immer schon Probleme mit der Verbindung per USB gemacht und wird nun 
garnicht mehr erkannt.
Vielleicht ist das ja sogar auch Schuld an der "witzig kleinen" Latenz 
;)

Wenn ich mir jetzt sowieso etwas neues kaufe: Macht es Sinn einen 
anderen Microcontroller, oder zumindest einen anderen Arduino als den 
UNO zu kaufen?
#4425522
Lesenswert?
• ▲
▼
Fabian D. schrieb:
> Wenn ich mir jetzt sowieso etwas neues kaufe: Macht es Sinn einen
> anderen Microcontroller, oder zumindest einen anderen Arduino als den
> UNO zu kaufen?

Für die Aufgabe "5 Ausgänge mit PWM ansteuern" sollte es allemal dicke 
reichen. Wir reden hier immerhin von einem 16 MHz Mikrocontroller.

Kauf Dir Originalhardware von einem vertrauenswürdigen Distributor. Also 
zum Beispiel einen originalen Arduino Uno (bzw. Genuino Uno). Dann hast 
Du auch keine Scherereien.
OP #4430815
Lesenswert?
• ▲
▼
Der neue Arduino Uno ist da und läuft perfekt.
Habe nun herausgefunden, warum mein Programm so langsam war:
Ich habe Serial.parseInt() benutzt, die nach empfangen des letzten 
Zeichens noch länger wartet, ob nicht doch noch eine weitere Zahl kommt 
und hat somit mein Programm so langsam gemacht.

Dafür funktioniert aber alles und auch das Ansteuern aus Unity3D heraus 
um die PWM-Frequenzen zu manipulieren läuft perfekt ohne spürbare 
Latenz.

Vielen Dank an alle die geholfen haben!

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.