Learning Examples | Foundations | Hacking | Links
Ejemplos > Comunicaciones
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.
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
// 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++;
}
}
}
Si cambia el valor del sensor analógico, obtendrás un gráfico del estilo a este:

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