# Problema dibujando líneas

**URL:** <https://discourse.processing.org/t/problema-dibujando-lineas/4188>\
**Category:** Español\
**Created:** [October 6, 2018, 2:08pm UTC](https://discourse.processing.org/t/problema-dibujando-lineas/4188 "2018-10-06T14:08:42Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![fer650](https://avatars.discourse-cdn.com/v4/letter/f/7feea3/32.png) [@fer650](https://discourse.processing.org/u/fer650)\
**Post date:** [October 6, 2018, 2:08pm UTC](https://discourse.processing.org/t/problema-dibujando-lineas/4188/1 "2018-10-06T14:08:42Z")

</div>

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:

```auto
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:

 ![problema1](https://canada1.discourse-cdn.com/flex036/uploads/processingfoundation1/original/2X/4/4121a4e228dbdbf509604a7e7806c55511f29083.jpeg)

---

<div class="post-metadata">

**Author:** ![hamoid](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/hamoid/32/58_2.png) [@hamoid](https://discourse.processing.org/u/hamoid)\
**Post date:** [October 8, 2018, 8:10pm UTC](https://discourse.processing.org/t/problema-dibujando-lineas/4188/2 "2018-10-08T20:10:01Z")

</div>

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

```auto
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?

---

<div class="post-metadata">

**Author:** ![fer650](https://avatars.discourse-cdn.com/v4/letter/f/7feea3/32.png) [@fer650](https://discourse.processing.org/u/fer650)\
**Post date:** [October 8, 2018, 10:51pm UTC](https://discourse.processing.org/t/problema-dibujando-lineas/4188/3 "2018-10-08T22:51:51Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![hamoid](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/hamoid/32/58_2.png) [@hamoid](https://discourse.processing.org/u/hamoid)\
**Post date:** [October 9, 2018, 8:15am UTC](https://discourse.processing.org/t/problema-dibujando-lineas/4188/4 "2018-10-09T08:15:49Z")

</div>

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.
