Learning   Examples | Foundations | Hacking | Links

Ejemplos > Comunicaciones

Conmutador Virtual

Un ejemplo del uso de la placa Arduino para recibir datos desde el ordenador. En este caso, la placa Arduino enciende un LED cuando recibe el carácter 'H', y apaga el LED cuando recibe el carácter 'L'.

Los datos pueden ser enviados desde el monitor serie de Arduino u otro programa como Processing (ver el código de abajo), Flash (a través de un proxy serial-net), PD o Max/MSP.

Circuito

Un LED en el pin 13.

Código

int outputPin = 13;
int val;

void setup()
{
  Serial.begin(9600);
  pinMode(outputPin, OUTPUT);
}

void loop()
{
  if (Serial.available()) {
    val = Serial.read();
    if (val == 'H') {
      digitalWrite(outputPin, HIGH);
    } 
    if (val == 'L') {
      digitalWrite(outputPin, LOW);
    }
  }
}

Código de Processing

// mouseover serial 
// by BARRAGAN <http://people.interaction-ivrea.it/h.barragan> 

// Muestra cómo enviar datos a la placa de E/S Arduino, con el fin de
// encender una luz si el ratón está sobre un rectángulo y apagarlo 
// si no lo está.

// created 13 May 2004 

import processing.serial.*; 

Serial port; 

void setup() 
{ 
  size(200, 200); 
  noStroke(); 
  frameRate(10); 

  // Lista todos los puertos serie disponibles. 
  // Puedes necesitar elegir el puerto de la lista al que 
  // está conectado tu Arduino. El primer puerto de la lista
  // es el puerto #0 y el tercero de la lista es el puerto #2. 
  println(Serial.list()); 

  // Abre el puerto al que Arduino está conectado (en este caso #0) 
  // Asegúrate de abrir el puerto a la misma velocidad que está usando Arduino (9600bps) 
  port = new Serial(this, Serial.list()[0], 9600); 
} 

// función que chequea si el ratón esta sobre el área
boolean mouseOverRect() 
{ 
  return ((mouseX >= 50)&&(mouseX <= 150)&&(mouseY >= 50)&(mouseY <= 150)); 
} 

void draw() 
{ 
  background(#222222); 
  if(mouseOverRect())      // si el ratón está sobre el área
  { 
    fill(#BBBBB0);         // cambia el color
    port.write('H');       // envía una 'H' que indica que el ratón está sobre el área
  } else { 
    fill(#666660);         // cambia el color
    port.write('L');       // envía una 'L' en otro caso
  } 
  rect(50, 50, 100, 100);  // traza el área 
} 

Share