====== Datenaustausch via OSC mit Arduino und Processing ====== Das OSC-Protokoll wurde ursprünglich entwickelt, um Sythesizer und andere elektronische Musikinstrumente über ein Netzwerk kontrollieren - wegen seiner universellen Einsetzbarkeit hat es sich jedoch zu einem weitverbreiteten Standard "zum Kommunizieren von allem Möglichen". Besonderer Vorteil: Es gibt Libraries für so ziemlich jede Platform und Programmiersprache und fertige Apps für das Senden von Nachrichten vom Handy aus (z.B. das kommerzielle TouchOSC). ===== Grundsätzliches ===== Eine OSC-Nachricht enthält zwei grundsätzliche Informationen: - Die //**OSC-Adresse**//: Ein kurzer vom Sender festgelegter und dem Empfänger bekannter Text, den der Empfänger verwenden kann, um die Nachricht einer bestimmten Einstellung oder Funktion zuzuordnen. Umlaute und Sonderzeichen sollten vermieden werden. (z.B. "/motorSpeeds" vs. "/radarDirection") - Ein oder mehrere //**Argumente**//. Mit ihnen kann der Sender dem Empfänger Zahlen oder andere Informationen mitteilen. Also z.B. "wie schnell" oder "wohin". Üblicherweise packt der Sender die Argumente eines nach dem anderen in die Nachricht, bevor er sie abschickt. Dem Empfänger liegen dann die Argumente in der gleichen Reihenfolge vor, in der sie der Nachricht hinzugefügt wurden. Zusätzlich wird automatisch übertragen, welchen //**Typ**// die Argumente haben (also z.B. "Integer" oder "Float"). ===== Einrichtung unter Arduino ===== Damit euer Arduino-Programm mit OSC-Nachrichten etwas anfangen kann, müssen diese zuerst in ihre Adresse und Argumente zerlegt werden. Dafür gibt es eine sehr bequeme (und leider auch etwas "fette") Library, die ich für euch so angepasst habe, dass sie mit einem über die Serielle Schnittstelle angebundenem WiFly-Modul funktioniert: [[https://github.com/Zapalot/ArdOscForSerial]] Wieder gilt: - Herunterladen: Link „Download .zip“ auf der rechten Seite. - Entpacken. - Umbenennen: Die der Ordner aus den .zip Dateien, die Ihr von GitHub bekommt, haben immer noch ein -master im Dateinamen, den ihr duch Umbenennen entfernen müsst. Also den Ordner ArdOscForSerial-master in ArdOscForSerial umbenennen. - Verschieben: Der Ordner mit der Library muss ins Arduino library Verzeichnis: (Das liegt bei den meisten unter Dokumente/Arduino/libraries) Wie das Senden und Empfangen von OSC-Nachrichtem vom Arduino aus funktioniert, seht ihr in den Beispielen der Library. WICHTIG: Ihr müsst aufpassen, dass ihr die Argumente einer OSC-Nachricht auch als den Typen rausholt, als der sie geschickt wurde - sonst passieren u.U. seltsame Dinge... ===== Einrichtung unter Processing ===== Eine Library zum verschicken von OSC-Nachrichten (über WLAN oder Netzwerk) unter Processing gibt es hier: http://www.sojamo.de/libraries/oscP5/. Unter Processing läuft die Installation etwas unkomplizierter übers Menü: ''Sketch/Import Library/Add Library/oscP5''. Schaut euch das Beispiel ''Contributed Libraries/oscP5/oscP5message'' an. Damit der Code aus dem Beispiel funktioniert, müssend dort noch die IP Adresse und der Port der Wifly eingetragen werden, damit die Nachrichten auch an den richtigen Empfänger gehen.