Zoom графика обработки 2.2.1 - PullRequest
0 голосов
/ 02 декабря 2018

помогите пожалуйста, в Arduino Uno я получаю сигнал от датчика и строю график, используя обработку 2.2.1, но вам нужно увеличивать масштаб без потери пропорций.Мои попытки не увенчались успехом, пропорция рассыпалась (я пытался умножить значения) Код:

    Serial myPort; 
int xPos = 1;  
int yPos = 100;
float yOld = 0;
float yNew = 0;
float inByte = 0;
int lastS = 0;
PFont f;
void setup () {
  size(1200, 500);
  println(Serial.list());
  myPort = new Serial(this, Serial.list()[0], 9600);
  myPort.bufferUntil('\n');
  background(0xff);
}
void draw () {
  int s = second();
  PFont f = createFont("Arial",9,false);
  textFont(f,9);
  fill(0);
  if (s != lastS){
    stroke(0xcc, 0xcc, 0xcc);
    line(xPos, yPos+10, xPos, yPos+30);
    text(s + " Sec.", xPos+5, yPos+30);
    lastS = s;
  }
}
void mousePressed(){
  save(lastS + "-heart.jpg");
}
void serialEvent (Serial myPort) {
  String inString = myPort.readStringUntil('\n');
  if (inString != null) {
    inString = trim(inString);
    if (inString.equals("!")) {
      stroke(0, 0, 0xff); // blue
      inByte = 1023; 
    } else {
      stroke(0xff, 0, 0); //Set stroke to red ( R, G, B)
      inByte = float(inString);
    }
    inByte = map(inByte, 0, 1023, 0, height);
    yNew = inByte;
    line(xPos-1, yPos-yOld, xPos, yPos-yNew);
    yOld = yNew;
    if (xPos >= width) {
      xPos = 1;
      yPos+=200;
      if (yPos > height-200){
        xPos = 1;
        yPos=100;
        background(0xff);
      }
    } else {
      xPos++;
    }
  }
}

1 Ответ

0 голосов
/ 02 декабря 2018

Существует несколько способов масштабирования графики.

Простой способ - просто scale() рендеринг (система координат рисования).

Голый вИмейте в виду, что в настоящее время буфер очищается только тогда, когда xPos достигает правой части экрана.

Значение из Arduino отображается на Обработка здесь:

inByte = map(inByte, 0, 1023, 0, height);
    yNew = inByte;

, вам следует попытатьсяизмените карту height на другое значение по вашему усмотрению.Это, однако, будет масштабировать только значение Y.Здесь значение x увеличивается:

xPos++;

Вы можете изменить это приращение на другое значение, которое работает с пропорцией, которую вы пытаетесь поддерживать между x и y.

...