Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
techniken:datenaustausch [2013/12/13 17:05] fbonowski [Flexibel mit Library: ArduPar (von Github)] |
techniken:datenaustausch [2016/01/21 12:45] (aktuell) |
||
---|---|---|---|
Zeile 3: | Zeile 3: | ||
Dafür gibt es einige verschiedene Ansätze, die wir hier behandeln wollen. | Dafür gibt es einige verschiedene Ansätze, die wir hier behandeln wollen. | ||
- | === Kabel(los?)=== | + | ===== Mit der Seriellen Schnittstelle vom Arduino zum PC ===== |
+ | [[techniken:datenaustausch:processingSerialRead|Mit Processing Daten von der Seriellen Schnittstelle empfangen]] | ||
- | Wenn der Arduino mit dem PC über ein USB-Kabel verbunden ist, könnt Ihr Daten ganz einfach über die Serielle Schnittstelle an den Arduino senden. | + | ===== Mit der Seriellen Schnittstelle vom PC zum Arduino ===== |
- | Ansonsten könnt Ihr eines unserer WLAN-Module verwenden. | + | Wenn der Arduino mit dem PC über ein USB-Kabel verbunden ist, könnt Ihr Daten ganz einfach über die Serielle Schnittstelle an den Arduino senden. Je nach dem, was Ihr machen wollt, bieten sich dazu 2 unterschiedliche Ansätze an: |
- | ===== Daten von Processing an den Arduino mit der Seriellen Schnittstelle übertragen ===== | + | * [[techniken:datenaustausch:serialchars|Selbstgemacht & Schnell: Kommandos und Zahlen an den Arduino schicken und dort auswerten.]] |
- | Je nach dem, was Ihr machen wollt, bieten sich dazu 3 unterschiedliche Ansätze an: | + | * [[techniken:datenaustausch:ardupar|Komfortabel und Flexibel, dafür etwas komplexer: Mit der Library ArduPar]] |
- | ==== Flexibel mit Library: ArduPar (von Github) ==== | ||
- | Falls Ihr verschiedene unterschiedliche Werte und Kommandos übertragen wollt, die Ihr in eurem Arduinoprogramm auseinander halten müsst, dann bietet sich die Verwendung einer Library an, die sich darum kümmert. | ||
- | Felix hat zu diesem Zweck die Library [[https://github.com/Zapalot/ArduPar|ArduPar]] geschrieben. Ihr könnt sie als .zip-Datei herunterladen und in euer Arduino/libraries Verzeichnis entpacken. Weil GitHub an den Verzeichnisnamen immer noch ein "-master" anhängt, müsst ihr das Verzeichnis danach noch in "ArduPar" (ohne "-master") umbenennen. | + | ===== Drahtlos ===== |
- | Die Library hat auch noch besonders cooles Feature: Sie unterstützt neben der Seriellen Schnittstelle auch WLAN. | + | |
+ | Für drahtlose Kommunikation bieten sich unsere WLAN-Module an. | ||
+ | Eine Anleitung dazu gibt es [[techniken:wifly|auf einer eigenen Seite]]. | ||
- | + | Um eine Verbindung mit einem Handy aufzubauen, können auch unsere beiden Bluetooth Module genutzt werden. | |
- | === Auf dem Arduino === | + | |
- | Schaut euch mal das Beispiel //**ArduPar/simpleIntSetting**// an, um zu sehen, wie es funktioniert. | + | |
- | + | ||
- | ArduPar basiert auf der Idee von einstellbaren "Parametern". Jeder Parameter hat: | + | |
- | * einen aktuellen Wert (also z.B. "2") | + | |
- | * einen Namen, unter dem man ihn erreichen kann (also z.B. ''someInt'') | + | |
- | * einen Wertebereich (also z.B. Minimalwert von 0 und Maximalwert von 10) | + | |
- | + | ||
- | Um einen Parameter zu erstellen und zu benutzen müsst ihr: | + | |
- | - Den Parameter deklarieren (so wie jede andere Variable auch): Im Beispiel ''IntArduPar someIntSetting;'' | + | |
- | - Den Parameter initialisieren (im Setup): Im Beispiel:<code> someIntSetting.setup( | + | |
- | F("someInt"), // Der Parameternamen muss in einem F("") eingeschlossen werden. | + | |
- | 0, // Der Minimalwert | + | |
- | 10 // Der Maximalwert | + | |
- | );</code> | + | |
- | - Daten von der Seriellen Schnittstelle empfangen. Das Kommando ''updateParametersFromStream(&Serial,10);'' aus dem Beispiel wartet 10ms lang auf neue Kommandos und bringt die aktuellen Werte der Parameter auf den neuesten Stand. | + | |
- | - Den aktuellen Wert des Parameters auslesen und etwas damit machen. Der aktuelle Wert steht im ''.value'' Feld des Parameters. Im Beispiel gibt die Zeile ''Serial.println(someIntSetting.value);'' den aktuellen Wert aus. | + | |
- | + | ||
- | === Auf dem Computer (Serial Monitor)=== | + | |
- | Als ersten Test könnt Ihr mal den Serial Monitor aufmachen. Wenn Ihr in das kleine Feld ganz oben etwas eintragt und "senden" drückt, geht dieser Text an den Arduino. Die Library erwartet Kommandos im Format ''Parametername Wert''. | + | |
- | + | ||
- | Gebt also z.B. ''someInt 5'' ein, um den Wert von ''someInt'' auf 5 zu setzen. | + | |
- | + | ||
- | === Auf dem Computer (Processing)=== | + | |
- | Die gleichen Kommandos, die ihr über den Serial Monitor eingegeben habt, könnt ihr auch aus Processing verschicken. | + | |
- | + | ||
- | + | ||
- | ==== Einfach nur Zahlen ==== | + | |
- | Serial.parseInt() liest die nächste ganze Zahl, gibt 0 zurück wenn timeout. (Beispiel communication/ReadASCIIString in Arduino) | + | |
- | ==== Einfach nur Kommandos==== | + | |
- | Einzelne Buchstaben senden und dann mit switch case verarbeiten (Beispiel „libraries/Serial/SimpleWrite“ in Processing) | + | |