Benutzer-Werkzeuge

Webseiten-Werkzeuge


techniken:datenaustausch:serialchars

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
techniken:datenaustausch:serialchars [2015/01/15 10:52]
fbonowski
techniken:datenaustausch:serialchars [2016/01/21 12:45] (aktuell)
Zeile 1: Zeile 1:
-====== ​Kommandos in Form von einzelnen Zeichen an den Arduino ​senden ​======+====== ​Übermittlung ​von Kommandos und Daten vom PC zum Arduino ====== 
 +In diesem Artikel ist beschrieben,​ wie ihr 
 +  * Arduino-Programme mittels einfacher Kommandos vom PC aus '​fernsteuern'​ könnt. 
 +  * Zahlen vom PC an den Arduino übermitteln könnt.
  
 +Beide Mögglichkeiten können problemlos mit dem [[techniken:​datenaustausch:​processingserialread|Senden von Daten vom Arduino zum PC]] kombiniert werden.
 +
 +Dazu verwenden wir die Serielle Schnittstelle des Arduinos, die ihr bereits aus dem '​Serial Monitor'​ kennt. Ihr könnt also einfach den Serial-Monitor nutzen, um manuell Daten an den Arduino zu schicken - z.B. um zu testen, ob er auf Kommandos so reagiert wie ihr es erwartet. Wirklich spannend wird es aber, wenn ihr ein eigenes Programm (z.B. ein Processing-Sketch) schreibt, welches die Serielle Schnittstelle verwendet, um dem Arduino vollautomatisch Befehle zu übermitteln.
 +
 +In allen Fällen muss der Arduino mit einem Kabel mit dem PC verbunden sein - denn über dieses Kabel werden die Daten in Form von Elektrischen Impulsen übertragen...
 +===== Kommandos in Form von einzelnen Zeichen an den Arduino senden =====
 Die einfachste Art und Weise, einen Befehl vom PC an den Arduino zu übermitteln,​ ist, ihm einzelne Zeichen über die Serielle Schnittstelle zu schicken, die ein Programm auf dem Arduino auswertet. ​ Die einfachste Art und Weise, einen Befehl vom PC an den Arduino zu übermitteln,​ ist, ihm einzelne Zeichen über die Serielle Schnittstelle zu schicken, die ein Programm auf dem Arduino auswertet. ​
  
Zeile 11: Zeile 20:
   * Eine Funktion aufrufen, die das erledigt, was dem Befehl entspricht (im Befehlsblock (geschweifte Klammern) von ''​if''​ oder ''​switch case''​)   * Eine Funktion aufrufen, die das erledigt, was dem Befehl entspricht (im Befehlsblock (geschweifte Klammern) von ''​if''​ oder ''​switch case''​)
  
-===== Ein Beispielprogramm mit 2 alternativen Befehlen (LED an/​aus) ​=====+==== Ein Beispielprogramm mit 2 alternativen Befehlen (LED an/aus) ====
 Das Beispiel ''​libraries/​Serial/​SimpleWrite''​ in Processing enthält sowohl den Processing, als auch den Arduino Code, um mit der Maus eine LED auf dem Arduino ein- und ausschalten zu können. Hier ein kleiner Ausschnitt mit den wichtigsten Teilen auf Arduinoseite:​ Das Beispiel ''​libraries/​Serial/​SimpleWrite''​ in Processing enthält sowohl den Processing, als auch den Arduino Code, um mit der Maus eine LED auf dem Arduino ein- und ausschalten zu können. Hier ein kleiner Ausschnitt mit den wichtigsten Teilen auf Arduinoseite:​
  
Zeile 58: Zeile 67:
     }      } 
 </​code>​ </​code>​
-===== Erweiterung auf Kommandos mit dazugehörigen ​Zahlenwerten =====+===== Übertragen von Zahlenwerten ​(als menschenlesbarer ASCII-Text) ​=====
 In vielen Fällen wollen wir nicht nur ein Kommando übertragen ("​fahre geradeaus"​),​ sondern auch dazugehörige Zahlenwerte ("wie lange?"​ , "wie schnell?",​ "wie weit?"​). ​ In vielen Fällen wollen wir nicht nur ein Kommando übertragen ("​fahre geradeaus"​),​ sondern auch dazugehörige Zahlenwerte ("wie lange?"​ , "wie schnell?",​ "wie weit?"​). ​
  
Zeile 87: Zeile 96:
       break; ​                   // höre hier auf.       break; ​                   // höre hier auf.
       }       }
-     ​case ​default: // bei uns unbekannten Kommandos machen wir einfach garnichts...+    ​default: // bei uns unbekannten Kommandos machen wir einfach garnichts...
       break; ​       break; ​
    }    }
Zeile 106: Zeile 115:
  
 void setup() { void setup() {
-  // Wir lassen uns von der Serial-Klasse zunächst eine Liste der Namen der am PC vorhandenen Ports geben( '​Serial.list()'​) +  // Um den Namen der Schnittstelle herauszufinden, ​lassen ​wir uns von der Serial-Klasse zunächst 
-  // Dann nehmen ​wir und den letzten ​(Serial.list().length-1) Namen aus der Liste heraus (String portName=Serial.list()[Serial.list().length-1]) +  // eine Liste der Namen der am PC vorhandenen Ports geben ('​Serial.list()'​) 
-  ​// Und verbinden uns mit diesem Port mit der Baudrate 115200 (new Serial(this,​ portName, 115200)). +  // Den x'ten Eintrag aus dieser Liste bekommen ​wir mit '​Serial.list()[x-1]'​ (die indices fangen mit 0 an) 
- +   
-  String portName = Serial.list()[Serial.list().length-1];​ // finde den Namen des letzten Serialports heraus +  // Bei den meisten PCs ist der Arduino der letzte Port in der Liste. 
-  myPort = new Serial(this,​ portName, ​115200); // Erzeuge ein Serial Objekt und stelle ​Eine Verbindung ​mit 115200 Baus her+  // Deshalb ermitteln wir zunächst die Länge der Liste (Serial.list().length) ​ 
 +  // und nehmen uns den letzten ​Namen aus der Liste heraus (Serial.list()[Serial.list().length-1])  
 +   
 +  String portName = Serial.list()[Serial.list().length-1];​ // finde den Namen des letzten Serialports heraus
 +  int baudrate=115200; ​      // Diese Baudrate muss mit der in eurem Arduinoprogramm übereinstimmen. 
 +  //   ​String portName = "​COM1";​ // alternativ: verwende stattdessen einen bekannten Portnamen 
 +  myPort = new Serial(this,​ portName, ​baudrate); // Erzeuge ein Serial Objekt und stelle ​eine Verbindung her 
 +  ​
   size(300, 300); // mache das Fenster etwas größer   size(300, 300); // mache das Fenster etwas größer
 } }
techniken/datenaustausch/serialchars.1421315567.txt.gz · Zuletzt geändert: 2016/01/21 12:45 (Externe Bearbeitung)