Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

techniken:datenaustausch:ardupar

Datenempfang mit der 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 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.

Installation

  • Ladet zunächst auf https://github.com/Zapalot/ArduPar die Library als .zip-Datei herunter. (Link rechts unten)
  • Entpackt den Inhalt der .zip-Datei in euer Dokumente/Arduino/libraries Verzeichnis.
  • Weil GitHub an den Verzeichnisnamen immer noch ein „-master“ anhängt, müsst ihr das Verzeichnis danach noch in „ArduPar“ (ohne „-master“) umbenennen.
  • Schließt euer Arduino IDE und startet es erneut, damit es die neue Library erkennt. Wenn alles geklappt hat, sollte bei den Beispielen die neue Kategorie ArduPar auftauchen.

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:

  1. Den Parameter deklarieren (so wie jede andere Variable auch): Im Beispiel: IntArduPar someIntSetting;
  2. Den Parameter initialisieren (im Setup): Im Beispiel:
      someIntSetting.setup(
          F("someInt"),          // Der Parameternamen muss in einem F("") eingeschlossen werden.
          0,                       // Der Minimalwert
          10                       // Der Maximalwert
        );
  3. 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.
  4. 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.

Dieses Beispielprogramm verschickt z.B. Zahlen von 0-255 an den Arduino.

/**
 * 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); //the draw() function will run 10 times a second
}
 
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...  
}
techniken/datenaustausch/ardupar.txt · Zuletzt geändert: 2016/01/21 12:45 (Externe Bearbeitung)