Die LED 13 auf dem Arduino Board soll nun von einem Processing Fenster aus umgeschaltet werden per Maus. Danach gibt der Arduino den Status der LED zurück in das Processing Fenster.
Das Processing Fenster reagiert einmalig auf den Mausklick in das Fenster und sendet dann abwechselnd eine 0 oder 1 an den Arduino. Dieser schaltet die LED um und gibt den LED Status als String zurück. Der String vom Arduino aus println hört mit \n auf. Das wird in Processing auch als Ende des Strings erkannt mit readStringUntil(‚\n‘).
Das Processing Text Ausgabe Feld im Windows Fenster muss erst mit einem leeren Rechteck abgedeckt werden und dann wird neuer Text drüber geschrieben.
Hier das Arduino Programm
// Arduino LED bei Mausklick umschalten
// aus einem Processing 3+ Fenster
// mit Status Rückmeldung vom Arduino
//
// Matthias Busse 19.3.2017 Version 2.0
char wert; // Daten von der seriellen Schnittstelle
int led = 13; // Board LED vom Arduino Uno
void setup() {
pinMode(led, OUTPUT);
Serial.begin(38400);
}
void loop() {
while (Serial.available()) { // Wenn serielle Daten kommen, dann lesen
wert = Serial.read(); // Daten in wert speichern
if (wert== '1') { // 1 heisst einschalten
digitalWrite(led, HIGH); // LED einschalten
Serial.println("LED ist an"); // Rückgabe
}
else {
digitalWrite(led, LOW); // LED ausschalten
Serial.println("LED ist aus"); // Rückgabe
}
}
}
Das Processing 3.3 Programm
// Arduino LED bei Mausklick umschalten
// aus einem Processing 3+ Fenster
// mit Status Rückmeldung vom Arduino
//
// Matthias Busse 19.3.2017 Version 2.0
import processing.serial.*;
Serial myPort; // Serial Objekt anlegen
int ledAn=0;
String ledStatus = null;
void setup() {
textSize(16);
size(400,200); //Fenstergröße festlegen
String portName = Serial.list()[0]; // Seriellen Port festlegen 0, 1, 2 ...
myPort = new Serial(this, portName, 38400);
surface.setTitle("klick mich"); // Fenster Titel
fill(200); // grau wie der Hintergrund
rect(15,58,40,20); // Soll Rchteck
rect(15,153,40,20); // Ist Rechteck
rect(60,153,120,20); // Status Ausgabe Rechteck
fill(0); // schwarz Textfarbe
text("Soll:",20,75);
text("Ist:",20,170);
}
void draw() {
if(ledAn==1) fill(204, 102, 0); // orange > an
else fill(200); // grau > aus
ellipse(120,70,120,120); // Kreis ausgeben
while ( myPort.available() > 0) {
ledStatus = myPort.readStringUntil('\n');
if(ledStatus != null) {
println(ledStatus);
fill(200); // grau
rect(60,153,120,20); // Status Ausgabe Rechteck überschreiben / leeren
fill(0); // schwarz
text(ledStatus,75,170);
}
}
}
void mouseClicked() {
if(ledAn==1) {
myPort.write('0'); //sende 0 zum ausschalten
ledAn=0;
}
else {
myPort.write('1'); //sende 1 zum einschalten
ledAn=1;
}
}
Und das Windows Fenster

Verwendet wurden:
– Arduino SW Stand 1.8.0
– Processing 3.3
– Arduino Uno Board
von Matthias Busse

Arduino kann die gesendete 1 nicht verarbeiten,der Status Led aus wird üertragen.