/** 
 * Switch Colors 
 * by CAMILO VILLEGAS 
 * 
 * Demonstrates how to read multiple input from five switches 
 * and send data using the serial port to a processing application. 
 * The processing application change the color of a rectangle 
 * according to the data sent. 
 */
 
int sent = 0; 
int ledpin = 48;     // LED connected to pin 48 (on-board LED) 
int switchpin_a = 0; // switch connected to pin 0 
int switchpin_b = 1; // switch connected to pin 1 
int switchpin_c = 2; // switch connected to pin 2 
int switchpin_d = 3; // switch connected to pin 3 
int switchpin_e = 4; // switch connected to pin 4 
 
 
void setup() 
{ 
  pinMode(ledpin, OUTPUT); // pin 48 (on-board LED) as OUTPUT 
  pinMode(switchpin_a, INPUT); // pin 0 as INPUT 
  pinMode(switchpin_b, INPUT); // pin 1 as INPUT 
  pinMode(switchpin_c, INPUT); // pin 2 as INPUT 
  pinMode(switchpin_d, INPUT); // pin 3 as INPUT 
  pinMode(switchpin_e, INPUT); // pin 4 as INPUT 
  Serial.begin(9600); // start serial communication at 9600bps 
  digitalWrite(ledpin, HIGH); // turn ON the Wiring board LED 
} 
 
void loop() 
{ 
  if(digitalRead(switchpin_a) == HIGH) // if switch connected to pin 0 is ON 
  { 
    Serial.print('1'); 	// send 1 to Processing 
    sent = 0; 
  } 
  else if(digitalRead(switchpin_b) == HIGH) // if switch connected to pin 1 is ON 
  { 
    Serial.print('2'); 	// send 2 to Processing 
    sent = 0; 
  } 
  else if(digitalRead(switchpin_c) == HIGH) // if switch connected to pin 2 is ON 
  { 
    Serial.print('3'); 	// send 3 to Processing 
    sent = 0; 
  } 
  else if(digitalRead(switchpin_d) == HIGH) // if switch connected to pin 3 is ON 
  { 
    Serial.print('4'); 	// send 4 to Processing 
    sent = 0; 
  } 
  else if(digitalRead(switchpin_e) == HIGH) // if switch connected to pin 4 is ON 
  { 
    Serial.print('5'); 	// send 5 to Processing 
    sent = 0; 
  } 
  else { 
    if (sent == 0) { 
      Serial.print('0'); // send 0 to Processing 
      sent = 1; 
    } 
  } 
  delay(100); 	// wait 100ms for next reading 
} 
 
 
 
/* Processing code for this example 
 
// Switch Colors 
// by CAMILO VILLEGAS 
 
// depending on the data received from Wiring through the serial port it 
// changes the fill color of a rectangle 
 
// Created 1 November 2005 
 
 
 
import processing.serial.*; 
 
Serial port; // create serial port object 
int val; // variable to receive data from the serial port 
 
void setup() 
{ 
  size(200, 200); 
  noStroke(); 
 
  // List all the available serial ports in the output pane. 
  // You will need to choose the port that the Wiring board is 
  // connected to from this list. The first port in the list is 
  // port #0 and the third port in the list is port #2. 
  println(Serial.list()); 
 
  // Open the port that the Wiring board is connected to (in this case #2) 
  // Make sure to open the port at the same speed Wiring is using (9600bps) 
  port = new Serial(this, Serial.list()[2], 9600); 
} 
 
void draw() 
{ 
  if( 0 < port.available() ) // if data is available to read 
  { 
    val = port.read(); // read it and store it in 'val' 
  } 
 
  background(0); // clear background 
 
  if( val == '1' ) // if 1 was received 
  { 
    fill(100); // set fill color 
  } 
  else if( val == '2' ) // if 2 was received 
  { 
    fill(0); // set fill color 
  } 
  else if( val == '3' ) // if 3 was received 
  { 
    fill(0,100,0); // set fill color 
  } 
  else if( val == '4' ) // if 4 was received 
  { 
    fill(0,0,100); // set fill color 
  } 
  else if( val == '5' ) // if 5 was received 
  { 
    fill(100,0,0); // set fill color 
  } 
  else { // if other data was received (in this case 0) 
    fill(255); // set fill to a different color 
  } 
 
  rect(50, 50, 100, 100); // draw rect 
} 
 
*/ 
