15. November 2011
Aufgabe: Lest die Werte des Sensors in Processing ein und visualisiert diese. Achtet dabei auf eine nachvollziehbare Art der Visualisierung. Material: Sensor, Widerstand, Processing Für diese Aufgabe habe ich auf einen Code vom Processing-Basis-Kurs zurückgegriffen, da ich mir eine gute Verbindung zwischen einer analogen Steuerung und der "rekursiven Funktion / Fraktale" vorstellen konnte. Nach stundenlangem Ausprobieren und Patricks sehr geschätzter Hilfe konnte ich dann die "random"-Funktion in Processing über das Potentiometer steuern. So kann mit dem Drehregler-Potentiometer das Wachstum des "Baumes" gesteuert werden. Das sieht dann wie folgt aus:import processing.serial.*; // import the serial library Serial myPort; // make an instance of the serial library int potiValue = 0; // Variable to store the incoming value void setup() { size(500, 500); randomSeed(millis()); smooth(); strokeWeight(5); stroke(77, 114, 240, 150); println(Serial.list()); // Print all available Ports myPort = new Serial(this, Serial.list()[0], 9600); } void draw() { background(255); println(potiValue); pushMatrix(); translate(width *.4, height - 20); wurzel(5); popMatrix(); } // Funktion void wurzel(int tiefe) { if (tiefe <=0) { return; } // Zeichne Zweige int x; int y; int count = 5; for (int i = 0; i < count;i++) { x = (int)random(potiValue); y = -(int)random(potiValue); line(0, 0, x, y); pushMatrix(); translate(x, y); scale(.9); wurzel(tiefe-1); popMatrix(); } } // Steuerung Potentiometer void serialEvent(Serial myPort) { if (myPort.available() > 0) { String completeString = myPort.readStringUntil(10); if (completeString != null) { trim(completeString); String[] seperateValues = split(completeString, ","); potiValue = int(seperateValues[0]); } } }Arduinocode:
#define POTI_PIN 0 #define LED_PIN 11 int potiValue = 0; void setup() { pinMode(LED_PIN, OUTPUT); Serial.begin(9600); } void loop() { potiValue = analogRead(POTI_PIN); // Read the Analog Pin analogWrite(LED_PIN, potiValue/4); // 0-1023 Normalwert bei Poti | 0-255 das was man braucht // analogWrite(POTI_PIN, map(potiValue, 0, 1023, 0, 255)); Serial.print(potiValue); // print the value Serial.print(","); // print the value Serial.println(); // print linefeed }