Assignment 5.1
Post date: Jun 30, 2010 8:3:9 PM
I figured this would be a good time to get some practice with bitwise operators and using as little code / memory as humanly possible.
Arduino Code
const int switch1 = 5; //declare switch button pins
const int switch2 = 4;
void setup() {
pinMode(switch1, INPUT); // set switch pins to input
pinMode(switch2, INPUT);
Serial.begin(9600); // begin serial communication at 9600 bps
}
void loop() {
byte msg = digitalRead(switch2); //declare variable "msg" and set it to the value of digitalRead(switch1) (returns 1 if button is pushed, 0 if not
msg = msg<<1; //shift bits left (ex. 0000 0001 becomes 0000 0010)
msg = msg | digitalRead(switch1); //use bitwise OR to combine the 2 (ex. 0000 0010 | 0000 0001 = 0000 0011)
Serial.print(msg); //prints 0 if neither are pressed, 3 if both, 2 for just switch2 and 1 for just switch1
delay(100); //waits 1/10 second
}
Processing Code
import processing.serial.*; //import all serial libraries
Serial serPort; // Create object from Serial class
void setup() {
size(200, 200);
serPort = new Serial(this, Serial.list()[0], 9600); //create serial port object at port 0 at 9600 bps (not sure what "this" is for though)
}
void draw() {
if (serPort.available() == 0) { //if no data available
return; //stop
}
switch (serPort.read()) { //begin switch-case with serial code
default : background(0); //if nothing pressed, black background
break;
case 1 : background(255, 0, 0); //switch1 pressed, red background
break;
case 2 : background(0, 0, 255); //switch2 pressed, blue background
break;
case 3 : background(0, 255, 0); //both pressed, green background
break;
}
}
Also I'm wondering if "serPort" would need to be released (deleted, dealloced, whatever) because of the use of the "new" command. Not sure though, I have very limited experience with Java.