KRITSADA icon

Processing Serial Control

KRITSADA | PRO | 09/19/19 04:06:01 AM UTC | 0 ⭐ | 915 👁️ | Never ⏰ | []
Java |

1.31 KB

|

None

|

0 👍

/

0 👎

import processing.serial.*;
 
Serial myPort;
 
int windowWidth = 1280;
int windowHeight = 700;
 
int upperValue = 700;
 
int[] valueArray = new int[windowWidth];
 
void setup() {
  size(1280, 700);
  println(Serial.list());
 
  myPort = new Serial(this, Serial.list()[2], 9600);
  myPort.bufferUntil('\n');
}
 
void draw() {
  background(0);
  if (valueArray != null) {
    for (int i=0; i<valueArray.length; i++) {
      stroke(127, 34, 255);
      line(i, height, i, height - valueArray[i]);
    }
  }
  
  textSize(10);
  for (int i=0; i<height; i++) {
    if (i % (50) == 0) {
      text(int((map(i, 0, height, upperValue, 0))) + " W", 10, i);
      stroke(60);
      line(0, i, width, i);
    }
  }
}
 
void serialEvent(Serial myPort) {
  String inString = myPort.readStringUntil('\n');
  println(inString);
  if (inString != null) {
    if (inString.startsWith("W ")) {
      println("Watt value!");
      String val = inString.substring(2);
      val = trim(val);
 
      float inByte = float(val); 
      inByte = map(inByte, 0, upperValue, 0, height);
      
      // Add last value to array
      shiftAndAdd(valueArray, int(inByte));
    }
  }
}
 
void shiftAndAdd(int a[], int val) {
  int a_length = a.length;
  System.arraycopy(a, 1, a, 0, a_length-1);
  a[a_length-1] = val;
}

Comments