arduino i processing



Dzisiaj postanowiłem zgłębić tajniki środowiska Processing. Warto się mu przyjrzeć przy poznawaniu Arduino. Razem mogą stanowić ciekawe połączenie. Najnowszą wersję Processing 1.0.9 można pobrać tu. Po rozpakowaniu (nie wymaga instalacji) i uruchomieniu naszym oczom ukazuje się środowisko bardzo podobne do Arduino IDE.




Postanowiłem na początek zmodyfikować przykładową aplikację mouse1D, która będzie korzystała z potencjometru podłączonego do Arduino. Poniżej schemat stworzony w Eagle 5.7.0 z wykorzystaniem biblioteki pobranej tu.
 

Kod Arduino:
int sensorPin = 0;   
int sensorValue = 0;

void setup() {
  Serial.begin(9600);
}

void loop() {
  sensorValue = analogRead(sensorPin); 
  Serial.println(sensorValue,DEC);  
  delay(500);
}

Kod Processing:
import processing.serial.*;
Serial port; 

int val; 
int val2;
int gx = 15;
int gy = 35;
float leftColor = 1.0;
float rightColor = 0.0;

void setup() {
  println(Serial.list());
  port = new Serial(this, Serial.list()[2], 9600);
  size(200, 200);
  colorMode(RGB, 1.0); 
  noStroke();
}
void draw() {
  background(0.0);
  while (port.available() >= 3) {
    if (port.read() == 0xff) {
      val = (port.read() << 8) | (port.read());
    }
  }
  val2 = val / 5;
  update(val2);

  fill(0.0, leftColor + 0.4, leftColor + 0.6); 
  rect(width/4-gx, width/2-gx, gx*2, gx*2); 
  fill(0.0, rightColor + 0.2, rightColor + 0.4); 
  rect(width/1.33-gy, width/2-gy, gy*2, gy*2);
}

void update(int x) {
  leftColor = -0.002 * x/2 + 0.06;
  rightColor =  0.002 * x/2 + 0.06;
    
  gx = x/2;
  gy = 100-x/2;

  if (gx < 10) {
    gx = 10;
  } else if (gx > 90) {
    gx = 90;
  }

  if (gy > 90) {
    gy = 90;
  } else if (gy < 10) {
    gy = 10;
  }
}

Komentarze