Erfahrungen und Hilfe: Arduino und MIDI

nullpunkt

......
n'Abend Gemeinde!

Über verschlungene Pfade bin ich (einer der größten Elektrotechnik-Nieten auf der nördlichen Hemisphäre) dazu gekommen mir ein Arduino-Board (Duemilanove) zuzulegen. Ziel sollte es sein, mein Verständnis dieser fremden Welt zu erhöhen. Nach den ersten sehr einfachen Experimenten (LED anschließen, blinken lassen und per Taster oder Poti steuern) bin ich nun heiß darauf, etwas tiefer in die Materie einzusteigen...

Ich habe hier einen Wii Nunchuck-Controller, den ich gerne als MIDI-Eingabegerät via Arduino mit meiner DAW verwenden möchte. So weit bin ich aber anscheinend noch nicht :) Ich denke, dass ich Hardware-seitig alles richtig verkabelt habe. Ich habe mir die MidiDuino-Bibliothek von Ruin&Wesen heruntergeladen und das direkt das Beispiel für die Nunchuck-Nutzung aufgerufen - die Arduino-Editorsoftware wirft dutzende von Fehlern aus, aus denen ich nicht schlau werde. Auch entsprechend andere Fertig-Code-Schnipsel aus dem Netz wollen bei mir nicht laufen...

Gibt es hier Leute mit Erfahrung, die das schon gemacht haben?

Ich bin für jeden Tip dankbar und warte ungeduldigst :)

nullpunkt
 
Hab ich auch überlegt, mich dann aber für den MIDI-Bereich entschieden, da es mir ja nicht um Löt-Aspekte geht... ich versuchs trotzdem mal "drüben". Dank Dir!
 
Kannst du deine Probleme etwas genauer beschreiben? Ich kenne zwar den Wii Controller nicht, es scheint mir aber ein generelles Problem zu sein.
 
Werde ich so schnell es geht machen - die nächsten Tage bin ich jedoch nicht zu Hause. Mir kommts auch wie ein allgemeines (Verständnis-)Problem vor... Bist Du Arduino-Nutzer?
 
Hab mal vor längerer Zeit mit dem Arduino einen Midi Controller gebastelt, bin dann aber auf ATMEGA mit WinAVR umgeschwenkt. Vielleicht ist es ja nicht so kompliziert.
 
So, endlich hab ich mal die Zeit gefunden wieder mein Thema aufzugreifen... Um es nochmal deutlich zu machen: Ich habe keine Ahnung von Eletronik, würde aber gerne ein bißchen rumexperimentieren. Warum mein erstes Projekt dieser Wii-Nunchuck-MIDI-Controller werden soll? Weil ich es interessant finde und gehofft habe, dass es im WWW genug Hilfe gibt. Insgesamt ist es aber zur Zeit doch noch zu schwierig für mich, weshalb ich für jeden Tipp und jede Unterstützung dankbar bin!

Jetzt mal eine etwas genauere Beschreibung, was ich bisher gemacht habe und welche Probleme auftreten:


Ich habe mir folgende Teile gekauft:

1. Arduino Duemilanove (ATMEGA328)
2. einen WiiChuck-Adapter
und 3. natürlich einen Wii Nunchuck-Controller

Anschließend hab ich mir die Arduino-Software heruntergeladen und installiert. Tests mit blinkenden, dimm- und schaltbaren LEDs und auch mit einfachstem Sound haben funktioniert, weshalb ich davon ausgehe, dass die Kommunikation zwischen Arduino-Board und -Software einwandfrei funktioniert.

Auf der Seite von Ruin&Wesen habe ich mir die MIDIduino-Bibliothek heruntergeladen und (hoffentlich?) in den richtigen Ordner der Arduino-Software gepackt. Die Bibliotheken "MidiUart", "Midi" und "MidiTools" liegen im Ordner "hardware/libraries/...".

Nachdem ich das Arduino-Board mit dem Laptop und dem Nunchuck-Controller verbunden habe, habe ich zunächst das Nunchuck-Script von Ruin&Wesen ausprobiert. Hier bekomme ich schon einige Fehlermeldungen, wenn ich das Programm auf das Board laden möchte. Die Fehlermeldungen lauten

from L:\Arduino\arduino-0017\arduino-0017\hardware\libraries\MidiUart\MidiUart.cpp:1:

L:\Arduino\arduino-0017\arduino-0017\hardware\libraries\Midi/MidiUartParent.hh:24:21: error: macro "putc" requires 2 arguments, but only 1 given

L:\Arduino\arduino-0017\arduino-0017\hardware\libraries\Midi/MidiUartParent.hh:27:30: error: macro "putc" requires 2 arguments, but only 1 given

L:\Arduino\arduino-0017\arduino-0017\hardware\libraries\Midi/MidiUartParent.hh:43:13: error: macro "putc" requires 2 arguments, but only 1 given

L:\Arduino\arduino-0017\arduino-0017\hardware\libraries\Midi/MidiUartParent.hh:46:11: error: macro "putc" requires 2 arguments, but only 1 given

L:\Arduino\arduino-0017\arduino-0017\hardware\libraries\Midi/MidiUartParent.hh:99:14: error: macro "putc" requires 2 arguments, but only 1 given

L:\Arduino\arduino-0017\arduino-0017\hardware\libraries\Midi/MidiUartParent.hh:100:18: error: macro "putc" requires 2 arguments, but only 1 given

L:\Arduino\arduino-0017\arduino-0017\hardware\libraries\Midi/MidiUartParent.hh:105:14: error: macro "putc" requires 2 arguments, but only 1 given

L:\Arduino\arduino-0017\arduino-0017\hardware\libraries\Midi/MidiUartParent.hh:106:18: error: macro "putc" requires 2 arguments, but only 1 given

L:\Arduino\arduino-0017\arduino-0017\hardware\libraries\Midi/MidiUartParent.hh:111:12: error: macro "putc" requires 2 arguments, but only 1 given

L:\Arduino\arduino-0017\arduino-0017\hardware\libraries\Midi/MidiUartParent.hh:112:15: error: macro "putc" requires 2 arguments, but only 1 given

L:\Arduino\arduino-0017\arduino-0017\hardware\libraries\Midi/MidiUartParent.hh:117:17: error: macro "putc" requires 2 arguments, but only 1 given

L:\Arduino\arduino-0017\arduino-0017\hardware\libraries\Midi/MidiUartParent.hh:122:14: error: macro "putc" requires 2 arguments, but only 1 given

L:\Arduino\arduino-0017\arduino-0017\hardware\libraries\Midi/MidiUartParent.hh:123:18: error: macro "putc" requires 2 arguments, but only 1 given

L:\Arduino\arduino-0017\arduino-0017\hardware\libraries\Midi/MidiUartParent.hh:128:18: error: macro "putc" requires 2 arguments, but only 1 given

L:\Arduino\arduino-0017\arduino-0017\hardware\libraries\Midi/MidiUartParent.hh:134:26: error: macro "putc" requires 2 arguments, but only 1 given

L:\Arduino\arduino-0017\arduino-0017\hardware\libraries\Midi/MidiUartParent.hh:135:33: error: macro "putc" requires 2 arguments, but only 1 given

L:\Arduino\arduino-0017\arduino-0017\hardware\libraries\Midi/MidiUartParent.hh:171:14: error: macro "putc" requires 2 arguments, but only 1 given

L:\Arduino\arduino-0017\arduino-0017\hardware\libraries\MidiUart/MidiUart.h:17:30: error: macro "putc" requires 2 arguments, but only 1 given

L:\Arduino\arduino-0017\arduino-0017\hardware\libraries\MidiUart\MidiUart.cpp:58:19: error: macro "putc" requires 2 arguments, but only 1 given

L:\Arduino\arduino-0017\arduino-0017\hardware\libraries\MidiUart\MidiUart.cpp:69:35: error: macro "putc" requires 2 arguments, but only 1 given

from L:\Arduino\arduino-0017\arduino-0017\hardware\libraries\MidiUart\MidiUart.cpp:1:

L:\Arduino\arduino-0017\arduino-0017\hardware\libraries\Midi/MidiUartParent.hh:27: error: function definition does not declare parameters

L:\Arduino\arduino-0017\arduino-0017\hardware\libraries\MidiUart/MidiUart.h:17: error: variable or field 'putc' declared void

L:\Arduino\arduino-0017\arduino-0017\hardware\libraries\MidiUart\MidiUart.cpp:69: error: function definition does not declare parameters

(Sorry für den langen Code - aber vielleicht hilft es ja wem...)

Nutze ich statt des Ruin&Wesen-MIDI-Nunchuck-Codes, den Code, der mit der aktuellsten Arduino-Software mitgeliefert wird (auch hier gibt es ein Programm für die Nutzung eines Nunchuck), so kann ich das Programm auf das Board laden. Schalte ich nun den "Serial Monitor" ein, so werden sofort Daten ausgegeben (mit denen ich jedoch nichts anfangen kann :) ). Leider muss der Nunchuck nicht mal angeschlossen sein, damit hier etwas passiert...

Kann mit dieser Erklärung schon jemand was anfangen? ...wie gesagt: Ich bin für jeden Tipp dankbar!
 
War dann gestern doch mal neugierig, was da passiert und habe mir das alles heruntergeladen. Ich kriege die gleichen Fehler. Ist ja schon mal gut ;-)

Es liegt daran m.E. , daß in der stdio.h putc noch mal anders als Makro definiert ist. Wenn du das auskommentierst, ist der Fehler weg. Stellt sich nur die Frage, ob dann was anderes nicht mehr funktioniert.
Da wird m.E. die Anfängerfreundlichkeit zum Problem. Der Arduino kocht auch nur mit Wasser. Will sagen, im Hintergrund werkelt der avr-gcc bzw. WinAVR, nur das man davon nichts mitkriegt. Da muß man sich dann im Detail mit auseinandersetzen, welche Header Datei da wo und wann angezogen wird.
 
DrJay schrieb:
Ich kriege die gleichen Fehler. Ist ja schon mal gut ;-)

Dann liegt es ja schon mal nicht an meiner Unfähigkeit - sondern höchstens an unser beider ;-)

DrJay schrieb:
Es liegt daran m.E. , daß in der stdio.h putc noch mal anders als Makro definiert ist. Wenn du das auskommentierst, ist der Fehler weg. Stellt sich nur die Frage, ob dann was anderes nicht mehr funktioniert.

Das werd ich probieren und sehen, was geht und was nicht! Der Tipp ist auf jeden Fall schonmal super! Vielen Dank für's Testen!

DrJay schrieb:
Da wird m.E. die Anfängerfreundlichkeit zum Problem. Der Arduino kocht auch nur mit Wasser. Will sagen, im Hintergrund werkelt der avr-gcc bzw. WinAVR, nur das man davon nichts mitkriegt. Da muß man sich dann im Detail mit auseinandersetzen, welche Header Datei da wo und wann angezogen wird.

Bahnhof! ;-)
 
An dieser Stelle zeigt sich, dass Elektronik und Co offensichtlich nichts für mich ist :)

Ich hab es bis jetzt nicht geschafft etwas auszukommentieren, damit ich das Programm fehlerfrei auf dem Arduino zum Laufen kriege. Wenn es jemand schafft es mir zu beschreiben, gewinne ich vielleicht wieder den Glauben an mich zurück ;-)

Vielen Dank.
 
Ich kann dir leider allenfalls helfen, wie man das zum compilieren kriegt. Da ich keinen Nunchuck habe, kann ich das ganze nicht testen.

Erstmal vorneweg: Falls du keinen gescheiten Editor hast (Anzeige von Zeilennummern wär ganz günstig; die Zahlen im Statusfenster der Arduino "IDE" geben die Zeilennummer an), lad dir irgendwo einen herunter. Proton kostet z.B. nichts und reicht erstmal.

Die stdio.h findest du wahrscheinlich unter "arduino-0017\hardware\tools\avr\avr\include". Da findest du auch noch andere wichtige Header Dateien (*.h).
Also stdio.h in Proton öffnen. Die Makrodefinition suchen (" #define putc(__c, __stream) fputc(__c, __stream)"). Ist bei mir Zeile 638. Zeile auskommentieren. D.h., zwei Slashes an den Anfang der Zeile schreiben (e.g. "//"). Abspeichern und neu probieren.

Bei mir bleibt er dann wieder hängen, weil er in MidiClock.cpp die Datei helpers.h nicht finden kann. Die header Dateien werden generell am Anfang einer Datei mit den #include Direktiven eingeladen. Im Prinzip bedeutet das nichts weiter, als das der Compiler erstmal die Datei im #include Befehl verarbeiten soll, bevor er mit der eigentlichen Datei weiter macht.
Kann er die Datei nicht finden, bricht er ab. Also MidiClock.cpp öffnen und statt helpers.h einfach mal den absoluten Pfad zur helpers.h eintragen, also "C:\WAS_WEISS_ICH\arduino-0017\hardware\libraries\Commontools\helpers.h". Mußt halt gucken, wo die Datei bei dir liegt.
Bei mir compiliert es dann.

Es gäbe da m.E. noch andere Lösungen. Da ich aber kein gelernter Programmierer bin, kann ich nicht sagen, was nun elegant oder geschickt ist.

Hoffe das hilft dir.
 
Für einen Hobbyprogrammierer fand ich es zumindest schonmal beeindruckend... :D

Ich werde sehen, wie weit ich komme! Vielen Dank auf jeden Fall schonmal bis hierhin!
 


Neueste Beiträge

News

Zurück
Oben