Dies ist eine alte Version des Dokuments!
Falls Ihr verschiedene unterschiedliche Werte und Kommandos übertragen wollt, die Ihr in eurem Arduinoprogramm auseinander halten müsst, dann bietet sich die Verwendung der Library ArduPar an, die Felix zu diesem Zweck geschrieben hat. Die Library hat auch noch besonders cooles Feature: Sie unterstützt neben der Seriellen Schnittstelle auch WLAN - dazu später mehr.
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.
Die gleichen Kommandos, die ihr über den Serial Monitor eingegeben habt, könnt ihr auch aus Processing verschicken.
/** * SendSomeInt * * Send command for setting an ArduPar parameter to a Serial Port * This example is in the public domain. */ import processing.serial.*; Serial myPort; // Create object from Serial class int curNumber=0; // The Number we will send to the Arduino void setup() { // I know that the last port in the serial list on my PC // is always my FTDI adaptor, so I open Serial.list()[Serial.list().length-1]. // If the whole thing does not work, try a different port... // you can also just directly use the port name as a parameter: // (i.e. type '"COM18"' instead of 'Serial.list()[Serial.list().length-1]') // Open whatever port is the one you're using. String portName = Serial.list()[Serial.list().length-1]; myPort = new Serial(this, portName, 115200); //open a connection with 115200Baud - this has to match the Baudrate in your Arduino sketch! frameRate(10); } void draw() { myPort.write("someInt "+curNumber+"\n"); //send a line containing the name and value separated by a space to the Serial. curNumber++; // count on... if (curNumber>255)curNumber=0; // start over at zero once we have reached 255... }