Visual Sensor Test/es

From Wiring

Jump to: navigation, search

por Jaime Patarroyo

Para los diseñadores y artistas es más fácil comprender los datos, si los pueden ver de alguna manera. Una visualización gráfica por lo general ayuda a tomar decisiones sobre cómo manejar la información.

Este código simplemente lee el valor captado por un sensor conectado al pin análogo 0 de la tarjeta Wiring y lo envía a través del puerto serial.

Processing recibe el valor y lo muestra al lado de las últimas 599 lecturas. También imprime en el puerto serial el valor mínimo y el valor máximo desde la última vez que se hizo clic en la ventana del programa.

Código de Wiring

/**
 * Wiring visual sensor test
 * por Jaime Patarroyo
 * 
 * Lee el valor de un sensor conectado al pin análogo 0 de Wiring.
 * El valor es enviado a través del puerto serial para ser visualizado
 * en processing.
 */

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

void loop() {
  int sensorValue = analogRead(0);

  Serial.println(sensorValue);

  delay(100);
}

Código de Processing

/**
 * Wiring visual sensor test
 * por Jaime Patarroyo
 *
 * Visualización de las lecturas de un sensor para la interpretación
 * de los datos y calibración del dispositivo, muestra los últimos 600
 * valores e imprime en el puerto serial en último valor, el valor máximo
 * y el valor mínimo. El máximo y el mínimo se pueden restablecer
 * haciendo clic en la ventana del programa.
 */

import processing.serial.*;
Serial port;
int linefeed = 10;

int[] posX;
int[] posY;

int valMax = 0;
int valMin = 400;

void setup() {
  size(600, 400);

  println(Serial.list());
  port = new Serial(this, Serial.list()[0], 9600);
  port.bufferUntil(linefeed);

  posX = new int[width];
  for (int i=0;i<width;i++) {
    posX[i]=510;
  }

  posY = new int[width];
  for (int i=0;i<width;i++) {
    posY[i]=width-i;
  }
}

void draw() {
  background(25);
  smooth();
  stroke(255, 200);

  if ((posX != null)&&(posY != null)) {
    for (int i=0;i<width-2;i++) {
      line (posY[i], height - map(posX[i], 0, 1024, 0, height), 
      posY[i+1], height - map(posX[i+1], 0, 1024, 0, height));
    }
  }
  
  if(mousePressed){
    valMax = 0;
    valMin = 1024;
  }
}


void serialEvent(Serial port) {
  String myString = port.readStringUntil(linefeed);
  if (myString != null) {
    myString = trim(myString);

    for (int i=width-1;i>0;i--) {
      posX[i]= posX[i-1];
    }
    posX[0] = int(myString);
    if (posX[0] > valMax)
      valMax = posX[0];
    if (posX[0] < valMin)
      valMin = posX[0];
    println(posX[0]+ "  min: "+ valMin+ "  max: "+ valMax);
  }
}
Idioma: English  • Español
Personal tools