Willkommen auf unserem Seminar-Blog

Immer auf dem aktuellen Stand bleiben

Dieser Seminar-Blog befindet sich noch im Aufbau und wird in den kommenden Tagen entsprechend verfeinert.

Member Login

Lost your password?

Registration is closed

Sorry, you are not allowed to register by yourself on this site!

You must either be invited by one of our team member or request an invitation by email at viad.info {at} zhdk {dot} ch.

09 AnalogIn

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:   Processingcode:

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
}