Learning   Examples | Foundations | Hacking | Links

Ejemplos > Comunicaciones

Gráfico

Un ejemplo sencillo de comunicaciones desde la placa Arduino al ordenador: el valor de una entrada analógica es visualizado. Llamomos a esto comunicación "serie" porque la conexión tanto en Arduino como en el ordenador es un tradicional y modernizado puerto serie, aunque en realidad actualmente uses un cable USB.

Puedes utilizar el monitor serie de Arduino para ver los datos enviados, o pueden ser leidos mediante Processing (ver código mas abajo), Flash, PD, Max/MSP, etc.

Circuito

Una entrada analógica conectada al pin 0 analógico.

haz click en la imagen para ampliarla

imagen desarrollada utilizando Fritzing. Para más circuitos de ejemplo, visita la página del proyecto Fritzing

Esquema

haz click en la imagen para ampliarla

Código

 
     
     
       
  

     
     

Código de Processing


// Graphing sketch


// Este programa recoge cadenas codificadas en ASCII
// desde el puerto serie a 9600 baudios y hace gráficos con ellos. Espera valores del
// rango de 0 a 1023, seguidos por un salto de línea, o de salto de línea y retorno de carro

// Created 20 Apr 2005
// Updated 18 Jan 2008
// by Tom Igoe
// This example code is in the public domain.

import processing.serial.*;

Serial myPort;        // El puerto serie
int xPos = 1;         // posición horizontal del gráfico

void setup () {
  // establece el tamaño de la ventana:
  size(400, 300);        

  // lista los puertos serie disponibles
  println(Serial.list());
  // Sé que el primer puerto serie de la lista en mi mac
  // es siempre mi Arduino, así que abro Serial.list()[0].
  // Abre el puerto que estás usando.
  myPort = new Serial(this, Serial.list()[0], 9600);
  // no genera un serialEvent() a menos que reciba un caracter de salto de linea:
  myPort.bufferUntil('\n');
  // Establece el fondo inicial:
  background(0);
}
void draw () {
  // todo se hace en serialEvent()
}

void serialEvent (Serial myPort) {
  // recoge la cadena ASCII:
  String inString = myPort.readStringUntil('\n');

  if (inString != null) {
    // elimina cualquier espacio en blanco:
    inString = trim(inString);
    // convierte a entero y mapea al alto de la pantalla:
    float inByte = float(inString); 
    inByte = map(inByte, 0, 1023, 0, height);

    // traza la linea:
    stroke(127,34,255);
    line(xPos, height, xPos, height - inByte);

    // en el borde de la pantalla, vuelve al principio:
    if (xPos >= width) {
      xPos = 0;
      background(0); 
    } 
    else {
      // incrementa la posición horizontal:
      xPos++;
    }
  }
}


Salida

Si cambia el valor del sensor analógico, obtendrás un gráfico del estilo a este:

Código Max

El resultado de un programa Max se vería como esto. El texto del programa está enlazado en la imagen.

Share