Benutzer-Werkzeuge

Webseiten-Werkzeuge


skript:kommunikation

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
skript:kommunikation [2018/05/15 11:43]
d.golovko [2. Mehrere Informationen zusammen von Processing an den Arduino schicken]
skript:kommunikation [2018/11/21 16:23] (aktuell)
d.golovko
Zeile 61: Zeile 61:
  
 void loop() { void loop() {
-  ​while (Serial.available()) { // Wenn Daten verfügbar,+  ​if (Serial.available()) { // Wenn Daten verfügbar,
     char val = Serial.read();​ // lesen und in var ablegen     char val = Serial.read();​ // lesen und in var ablegen
     if (val == '​H'​) { // Wenn '​H'​ geschickt,     if (val == '​H'​) { // Wenn '​H'​ geschickt,
Zeile 71: Zeile 71:
 } }
 </​code>​ </​code>​
 +
  
 ====2. Mehrere Informationen zusammen von Processing an den Arduino schicken==== ====2. Mehrere Informationen zusammen von Processing an den Arduino schicken====
Zeile 78: Zeile 79:
   * "​120;​0\n"​ => Servowindel 120°, LED aus usw.   * "​120;​0\n"​ => Servowindel 120°, LED aus usw.
  
-Die Winkelwerte müssen wir vor dem Verschicken in Processing von ''​int''​ zu einem ''​String'' ​umwandeln:+Diesen ​''​String'' ​stellen wir dann so zusammen:
 <code java> <code java>
-    int angle = (int)(mouseX / 600.0 * 120 + 30); +    int angle = round(mouseX / 600.0 * 120 + 30);  // den float-Wert aufrunden
     //120, weil 150 Grad - 30 Grad = 120 Grad (kleinster und höchster einstellbarer Winkel bei unseren Servos)     //120, weil 150 Grad - 30 Grad = 120 Grad (kleinster und höchster einstellbarer Winkel bei unseren Servos)
-    myPort.write(new Integer(angle).toString() ​+ ";​1\n"​);​+    myPort.write(angle + ";​1\n"​);​
 </​code>​ </​code>​
  
Zeile 101: Zeile 102:
  
 void draw() { void draw() {
-  int angle = (int)(mouseX / 600.0 * 120 + 30); // Servowinkel anhand der x-Koordinate berechnen+  int angle = round(mouseX / 600.0 * 120 + 30); // Servowinkel anhand der x-Koordinate berechnen
   if (mouseY < 200) { // wenn der Mauszeiger in der oberen Hälfte ist   if (mouseY < 200) { // wenn der Mauszeiger in der oberen Hälfte ist
-    myPort.write(new Integer(angle).toString() ​+ ";​1\n"​); ​+    myPort.write(angle + ";​1\n"​); ​
   } else { // wenn der Mauszeiger in der unteren Hälfte ist   } else { // wenn der Mauszeiger in der unteren Hälfte ist
-    myPort.write(new Integer(angle).toString() ​+ ";​0\n"​); ​+    myPort.write(angle + ";​0\n"​); ​
   }   }
   delay(100); // warte, bevor die nächste Nachricht verschickt wird   delay(100); // warte, bevor die nächste Nachricht verschickt wird
Zeile 127: Zeile 128:
     String message = Serial.readStringUntil('​\n'​);​ // Bis zum Zeilenumbruch lesen     String message = Serial.readStringUntil('​\n'​);​ // Bis zum Zeilenumbruch lesen
     int semicolonIndex = message.indexOf(';'​);​ // Position des Semikolons im String     int semicolonIndex = message.indexOf(';'​);​ // Position des Semikolons im String
-    ​String ​angle = message.substring(0,​ semicolonIndex);​ // Lese den Winkelwert aus +    ​int angle = message.substring(0,​ semicolonIndex).toInt(); // Lese den Winkelwert aus 
-    ​String ​led = message.substring(semicolonIndex+1,​ semicolonIndex + 2); // Lese den LED-Wert aus +    ​int led = message.substring(semicolonIndex+1,​ semicolonIndex + 2).toInt(); // Lese den LED-Wert aus 
-    motor.write(angle.toInt()); // Der Winkel muss vorher zum int umgewandelt werden +    motor.write(angle);​ // Der Winkel muss vorher zum int umgewandelt werden 
-    digitalWrite(LED_BUILTIN,​ led.toInt()); // Mach die LED an oder aus (1=HIGH, 0=LOW)+    digitalWrite(LED_BUILTIN,​ led); // Mach die LED an oder aus (1=HIGH, 0=LOW)
   }   }
 } }
skript/kommunikation.1526377405.txt.gz · Zuletzt geändert: 2018/05/15 11:43 von d.golovko