Learning   Examples | Foundations | Hacking | Links

Ejemplos > Comunicacion

Al PC

Un simple ejemplo de comunicación desde la placa Arduino al PC : el valor de una entrada analógica se imprime en pantalla. A esto se le llama comunnicación "serial" por que la conexión se muestra tanto para el PC como para el Arduino como uno de esos antiguos puertos serie, aun cuando se usa un cable USB.

Puedes usar el monitor serial del software de Arduino para ver los datos enviados. Tambien se puede usar Processing (mirar el código de abajo),Flash, PD, Max/MSP, etc.

Circuito

Una entrada analógica conectada al pin 0.

Código

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

void loop()
{
  Serial.println(analogRead(0));
  delay(100);
}

Código Processing

// Entrada analógica 
// por <a href="http://itp.jtnimoy.com">Josh Nimoy</a>. 

// Lee un valor de puerto serial y cambia el color del fondo. 

// Creado el 8 de Febrero 2003. 
// Actualizado el 2 de Abril de 2005.
// Modificado el 25 Marzo 2007 por David A. Mellis.

import processing.serial.*;

String buff = "";
int val = 0;
int NEWLINE = 10;

Serial port;

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

  // Imprime una lista en caso que el COM1 no funcione
  println("Puertos serie disponibles:");
  println(Serial.list());

  // Usa el primer puerto de la lista (numero 0).  Cambie esto a
  // el puerto correspondiente a la placa Arduino. El último 
  // parámetro (p.e 9600) es la velocidad de la comunicación.  It
  // Tiene que ser el mismo que hayas configurado con la función Serial.begin() en el programa de tu
  // Arduino.
  port = new Serial(this, Serial.list()[0], 9600);  

  // Si conoces el nombre del puerto que esta usando la placa Arduino, 
  // puedes especificarlo directamente de esta manera.
  //port = new Serial(this, "COM1", 9600);
}

void draw()
{
  while (port.available() > 0) {
    serialEvent(port.read());
  }
  background(val);
}

void serialEvent(int serial) 
{ 
  // Si la variable "serial" es diferente del valor para  
  // una nueva linea, añade el valor a la variable "buff". Si el 
  // valor "serial" es igual al valor para una nueva linea ,
  //  guarda el valor del buffer en la variable "val".
  if(serial != NEWLINE) { 
    buff += char(serial);
  } else {
    // el final de cada linea viene dado por dos caracteres,
el retorno
    // de carro y nueva linea. Estamos aquí por que ha habido una nueva linea,
    // but aun necesitamos quitarl el retorno de carro
    buff = buff.substring(0, buff.length()-1);
    // Convertir la cadena de texto en un entero
    val = Integer.parseInt(buff)/4;
    println(val);
    // Limpiar el valor de "buff"
    buff = "";
  }
}

Share