Code und Material

Grundlagen: Code

Eine Familie: processing, mobile, arduino

eine Vorgeschichte: DBN

Paper 100
Pen 0
Line 10 70 80 30
und eine Ästhetik.

Sequenzen

Zeilenweise Befehle erteilen...

point(30,35);
line(10,70,80,30);
ellipse(60,65,20,20);
... bei tückischer Syntax (Worte zusammen, viele Leerzeichen oder Zeilenumbrühe entsprechen einem Leerzeichen) ...
point(30,35);
point (30,35);
point    (         30,     35);
point 
(         30,     

35);
(nicht:)
poi nt(30,35);
...und Reihenfolge.
line(10,70,80,30);
ellipse(60,40,20,20);
ellipse(60,40,20,20);
line(10,70,80,30);

Kommentare

// kurze Kommentare

/* lange
   ...
   Kommentare */

Variablen

Deklarieren, initialisieren, benutzen.


int px;
px = 30;

int py = 35;

point(px,py);
ellipse(px+30,py+30,20,20);

Mit dem Ergebnis einer Funktion füllen.
float px;
px = random(100);

int py = random(100);

ellipse(px+30,py+30,20,20);

Fallunterscheidungen - Entweder: if...

Fragen stellen

if (Ja/Nein-Frage)
Es folgt eine Sequenz mit Anweisungen. Damit kenntlich ist, dass die Sequenz zur Frage gehört, wird sie in {} eingeschlossen.
if (Ja/Nein-Frage) 
{
  Anweisung1;
  Anweisung2;
  Anweisung3;
}
Zum Beispiel
float zahl = random(100);
if (zahl < 50) 
{
  point(30,35);
  line(10,70,80,30);
  ellipse(60,65,20,20);
}
Tipp: STRG+T oder CMD+T

...oder: else

Wenn die Frage mit ja beantwortet wird, führe den ersten Block aus, ansonsten den zweiten.

if (Ja/Nein-Frage) 
{
  Anweisung1;
  Anweisung2;
  Anweisung3;
} 
else
{
  AndereAnweisung1;
  AndereAnweisung2;
  AndereAnweisung3;
}
Zum Beispiel
float zahl = random(100);
if (zahl < 50) 
{
  ellipse(60,65,20,20);
}
else 
{
  rect(60,65,20,20);
}

Mehrere Alternativen: if, else if, else

Wenn die Frage mit ja beantwortet wird, führe den ersten Block aus, ansonsten den zweiten, aber nur, wenn eine weitere Frage mit ja beantwortet wird. Usw.

if (Ja/Nein-Frage) 
{
  Anweisung1;
  Anweisung2;
  Anweisung3;
} 
else if (neue Frage)
{
  AndereAnweisung1;
  AndereAnweisung2;
  AndereAnweisung3;
}
Zum Beispiel
float zahl = random(100);
if (zahl < 30) 
{
  ellipse(60,65,20,20);
}
else if (zahl < 60)
{
  rect(60,65,20,20);
}

Schleifen: Wiederholung

Statt:

ellipse(5,5,5,5); 
ellipse(15,5,5,5);
ellipse(25,5,5,5);
ellipse(35,5,5,5);
ellipse(45,5,5,5);
ellipse(55,5,5,5);
// usw...
eine Sequenz, die wiederholt wird:
for (Variable zum Zählen; Frage wann Ende; Art des Zählens) 
{
  Anweisung1;
  Anweisung2;
  Anweisung3;
}
for (int i=0; i < 100; i = i+10) 
{
  ellipse(i+5,5,5,5);
}

Setup und Draw

Zwei Blöcke. Und die Zeilen davor. Zunächst werden Variablen festgelegt (deklariert und eventuell initialisiert).
Im setup werden Einstellungen vorgenommen.
Im draw-Loop wird gezeichnet (oder alles andere gemacht, was sich wiederholt).

float y = 50;

void setup()
{
  frameRate(25);
}

void draw()
{
  point(50,y);
}
Durch das wiederholte Zeichnen wird Bewegung möglich.
float y = 50;

void setup()
{
  frameRate(25);
  background(255);
}

void draw()
{
  y = random(0,100);
  point(50,y);
}
float y = 50;

void setup()
{
  frameRate(25);
}

void draw()
{
  background(255);
  y = random(0,100);
  point(50,y);
}
Interaktion entsteht am einfachsten durch das Nutzen fertiger Variablen - z.B. mouseX und mouseY.
float x, y;

void setup()
{
  frameRate(25);
}

void draw()
{
  background(255);
  x = mouseX;
  y = mouseY;
  point(x,y);
}
float x, y;

void setup()
{
  frameRate(25);
}

void draw()
{
  background(255);
  x = mouseX;
  y = mouseY;
  line(0,y,100,y);
  line(x,0,x,100);
}

Arduino

draw wird zu loop

void setup()
{
  pinMode(led1, OUTPUT);
}

void loop()
{
  digitalWrite(led1, HIGH);
  delay(500);
  digitalWrite(led1, LOW);
  delay(500);
}