Dies ist eine alte Version des Dokuments!
Wie kommt ein Steuerkommando vom PC zum Arduino?
Dafür gibt es einige verschiedene Ansätze, die wir hier behandeln wollen.
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. Ansonsten könnt Ihr eines unserer WLAN-Module verwenden.
Je nach dem, was Ihr machen wollt, bieten sich dazu 3 unterschiedliche Ansätze an:
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 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. Die Library hat auch noch besonders cooles Feature: Sie unterstützt neben der Seriellen Schnittstelle auch WLAN.
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:
someInt
)Um einen Parameter zu erstellen und zu benutzen müsst ihr:
IntArduPar someIntSetting;
someIntSetting.setup( F("someInt"), // Der Parameternamen muss in einem F("") eingeschlossen werden. 0, // Der Minimalwert 10 // Der Maximalwert );
updateParametersFromStream(&Serial,10);
aus dem Beispiel wartet 10ms lang auf neue Kommandos und bringt die aktuellen Werte der Parameter auf den neuesten Stand..value
Feld des Parameters. Im Beispiel gibt die Zeile Serial.println(someIntSetting.value);
den aktuellen Wert aus.
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.
Serial.parseInt() liest die nächste ganze Zahl, gibt 0 zurück wenn timeout. (Beispiel communication/ReadASCIIString in Arduino)
Einzelne Buchstaben senden und dann mit switch case verarbeiten (Beispiel „libraries/Serial/SimpleWrite“ in Processing)