Physical Pixel

Um exemplo do uso da placa Arduino para receber dados a partir do computador. Neste caso, a placa Arduino liga um LED quando receber o caractere 'H' e desliga quando receber 'L'.

Os dados podem ser transmitidos a partir do Arduino serial monitor ou um outro programa, tal como Processing (veja o código abaixo), Flash (via um proxy serial-rede), PD ou Max/MSP.

Circuito

Um LED no pino 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 Processing


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

// Demonstra como transmitir dados à placa de E/S Arduino de forma
// a acender uma luz caso o rato/mouse esteja sobre um retângulo e
// desligá-la caso contrário. 

// criado em 13 Maio 2004 

import processing.serial.*; 

Serial port; 

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

  // Lista no painel de saída todas as portas seriais disponíveis.
  // Você precisará escolher nesta lista a porta a qual a placa 
  // Arduino vai conectada. A primeira porta da lista é a de 
  // número 0 e a terceira porta, a de número 2. 
  println(Serial.list()); 

  // Abra a porta a qual a placa Arduino vai conectada (aqui, a 0) 
  // Certifique-se de abrir a porta à mesma velocidade do Arduino (9600bps) 
  port = new Serial(this, Serial.list()[0], 9600); 
} 

// função a testar se o rato/mouse está sobre o retângulo
boolean mouseOverRect() 
{ 
  return ((mouseX >= 50)&&(mouseX <= 150)&&(mouseY >= 50)&(mouseY <= 150)); 
} 

void draw() 
{ 
  background(#222222); 
  if(mouseOverRect())      // se rato/mouse estiver sobre o retângulo
  { 
    fill(#BBBBB0);         // mude a cor 
    port.write('H');       // envie um 'H' como indicação 
  } else { 
    fill(#666660);         // mude a cor 
    port.write('L');       // transmita 'L', caso contrário
  } 
  rect(50, 50, 100, 100);  // desenhe o retângulo
}

Share