Problema dibujando líneas


#1

Hola, tengo datos almacenados que fueron capturados de la entrada ADC de un Arduino.
Los datos están bien, pero cuando quiero graficarlos en pantalla como una línea seguida de otra línea y así hasta terminar el gráfico, algunas líneas no las dibuja.
Si borro la pantalla y los grafico nuevamente, sale bien o problema con otra línea de más o menos.

La parte conflictiva sería esta:

for (contador = 0; contador < 470; contador = contador+1) {
      altura = valor[contador];
      line(contador, altura_old, contador+1, altura);
      altura_old = altura;
      contador = contador+1;
  }

Acá como se ve a veces el problema:


#2

Hola! Si usas beginShape() / vertex() / endShape() ocurre lo mismo?

void setup() {
  size(470, 200);

  int contador;
  int valor[] = new int[470];
  
  // generar datos de prueba
  for (contador = 0; contador < 470; contador = contador+1) {
    valor[contador] = (int)(200 * noise(contador * 0.1));
  }

  // dibujar
  noFill();
  beginShape();
  for (contador = 0; contador < 470; contador = contador+1) {
    vertex(contador, valor[contador]);
  }
  endShape();
}
void draw() {
}

Es posible que haya algo blanco cubriendo la gráfica?


#3

Hola, soy nuevo en el tema de Processing y viene bien toda ayuda. Nunca usé esas instrucciones pero voy a investigar para que sirven.
Me parece que encontré el problema.
La captura de datos del Arduino la hago con serialEvent(Serial myPort)
Parece que en algunos momentos recibe algo del puerto serie y me sobre escribe los valores almacenados. ¿Tengo manera de apagar - encender el puerto serie o los eventos para que no me capture más?
Porque si uso myPort.stop() no se si lo puedo abrir nuevamente de manera sencilla.
Muchas gracias


#4

Podrías tener una variable booleana para decidir si hacer algo con los datos recibidos o no.

boolean escuchando = false;
...
if(escuchando) {
  // aqui almacena datos
}

Y luego cuando pulsas el botón para activar o desactivar puedes hacer

escuchando = !escuchando; 

que es como “pulsar el interruptor de la luz” (enciende o apaga).

Así puedes tener siempre encendido el puerto serie, pero decidir si hacer algo con los datos o no.

También, si piensas que los datos pueden sobre escribirse quizás deberías validar los datos. O sea, antes de guardarlos comprobar que están dentro del rango esperado. Y si no lo están, quizás mostrar algún aviso.