Assignment 5.4
Post date: Jul 01, 2010 3:35:1 AM
Here is the Arduino code:
char val; // Data received from the serial port
int ledPin4 = 4; // Set the pin to digital I/O 4
int ledPin12 = 12;
void setup()
{
pinMode(ledPin4, OUTPUT); // Set pin as OUTPUT
pinMode(ledPin12, OUTPUT);
Serial.begin(9600); // Start serial communication at 9600 bps
}
void loop()
{
if (Serial.available())
{ // If data is available to read,
val = Serial.read(); // read it and store it in val
}
if (val == 'H')
{ // If H was received
digitalWrite(ledPin4, HIGH); // turn the LED on
digitalWrite(ledPin12, HIGH);
}
else if (val == 'J') {
digitalWrite(ledPin12, HIGH);
digitalWrite(ledPin4, LOW);
}
else if (val == 'K') {
digitalWrite(ledPin4, HIGH); // If L turn it OFF
digitalWrite(ledPin12, LOW);
}
else if (val == 'L') {
digitalWrite(ledPin4, LOW);
digitalWrite(ledPin12, LOW);
}
delay(10); // Wait 10 milliseconds for next reading
}
and the Processing code:
import processing.serial.*;
Serial myPort; // Create object from Serial class
int val; // Data received from the serial port
void setup()
{
size(400, 400);
String portName = Serial.list()[0];
myPort = new Serial(this, portName, 9600);
}
void draw() {
background(0);
if ((mouseX >= 175) && (mouseX <= 225) && (mouseY >= 175) && (mouseY <= 225)) {
// If mouse is over the red square,
stroke(0);
fill(0, 0, 225); // draw this and
rect(50, 50, 300, 300);
fill(0, 225, 0);
rect(125, 125, 150, 150);
fill(225, 0, 0);
rect(175, 175, 50, 50);
myPort.write("H"); // send an H
}
else if((mouseX >= 125) && (mouseX <= 275) && (mouseY >= 125) && (mouseY <= 275))
{
stroke(0); // If mouse is over the green square,
fill(0, 0, 225); // draw this and
rect(50, 50, 300, 300);
fill(0, 225, 0);
rect(125, 125, 150, 150);
fill(0, 0, 0, 0);
stroke(225, 0, 0);
rect(175, 175, 50, 50);
myPort.write("J"); // send a J
}
else if((mouseX >= 50) && (mouseX <= 350) && (mouseY >= 50) && (mouseY <= 350))
{ // If mouse is over the blue square
stroke(0);
fill(0, 0, 225); // draw this and
rect(50, 50, 300, 300);
fill(0, 0, 0, 0);
stroke(0, 225, 0);
rect(125, 125, 150, 150);
stroke(225, 0, 0);
rect(175, 175, 50, 50);
myPort.write("K"); // send a K
}
else // If mouse is not over any square
{
fill(0, 0, 0, 0); // draw this and
stroke(0, 0, 225);
rect(50, 50, 300, 300);
stroke(0, 225, 0);
rect(125, 125, 150, 150);
stroke(225, 0, 0);
rect(175, 175, 50, 50);
myPort.write("L"); // send an L
}
}
This code expands on the basic code given. Instead of having only one square, there are 3. When the cursor is moved into the first (blue) square, the LED connected to pin 4 is turned on and the square is filled in. When the cursor is moved into the second (green) square, the LED attached to pin 12 is turned on and the first two squares are filled in. When the cursor is moved into the third (red) square, both LEDs are turned on and all three squares are filled in.