Thursday, November 6, 2008

Blazing the trail of Awesome!

As we started our trek we had many unknown foes, the arduino, max msp, audio inputs. We tackled an easy an output


int ledPin_01=2;
int ledPin_02=3;
int ledPin_03=4;
int ledPin_04=5;
void setup()
{ pinMode(ledPin_01, OUTPUT);
pinMode(ledPin_02, OUTPUT);
pinMode(ledPin_03, OUTPUT);
pinMode(ledPin_04, OUTPUT); }

void loop() { digitalWrite(ledPin_01, HIGH);
delay(500); digitalWrite(ledPin_01, LOW);
delay(500); digitalWrite(ledPin_02, HIGH);
delay(500); digitalWrite(ledPin_02, LOW);
delay(500); digitalWrite(ledPin_03, HIGH);
delay(500); digitalWrite(ledPin_03, LOW);
delay(500); digitalWrite(ledPin_04, HIGH);
delay(500); digitalWrite(ledPin_04, LOW); delay(500); }


As we realized the true task ahead was really much greater. The input we wanted had to be processed through another software proving to be in a cunning disguise of cute gui buttons. But nothing is to great for our heroes.
First we found a patch for the arduino to send an input to MAX|MSP
#include


/*
---- SimpleMessageSystem Example 1 ----
Control Arduino board functions with the following messages:

r a -> read analog pins
r d -> read digital pins
w d [pin] [value] -> write digital pin
w a [pin] [value] -> write analog pin


Base: Thomas Ouellet Fredericks
Additions: Alexandre Quessy

*/

// Include de SimpleMessageSystem library
// REMOVE THE FOLLOWING LINE IF USING WIRING


void setup()
{

// The following command initiates the serial port at 9600 baud. Please note this is VERY SLOW!!!!!!
// I suggest you use higher speeds in your own code. You can go up to 115200 with the USB version, that's 12x faster
Serial.begin(115200); //Baud set at 9600 for compatibility, CHANGE!


}

void loop()
{

if (messageBuild() > 0) { // Checks to see if the message is complete and erases any previous messages
switch (messageGetChar()) { // Gets the first word as a character
case 'r': // Read pins (analog or digital)
readpins(); // Call the readpins function
break; // Break from the switch
case 'w': // Write pin
writepin(); // Call the writepin function
}

}

}

void readpins(){ // Read pins (analog or digital)

switch (messageGetChar()) { // Gets the next word as a character

case 'd': // READ digital pins

messageSendChar('d'); // Echo what is being read
for (char i=2;i<14;i++) {
messageSendInt(digitalRead(i)); // Read pins 2 to 13
}
messageEnd(); // Terminate the message being sent
break; // Break from the switch

case 'a': // READ analog pins

messageSendChar('a'); // Echo what is being read
for (char i=0;i<6;i++) {
messageSendInt(analogRead(i)); // Read pins 0 to 5
}
messageEnd(); // Terminate the message being sent

}

}

void writepin() { // Write pin

int pin;
int state;

switch (messageGetChar()) { // Gets the next word as a character

case 'a' : // WRITE an analog pin

pin = messageGetInt(); // Gets the next word as an integer
state = messageGetInt(); // Gets the next word as an integer
pinMode(pin, OUTPUT); //Sets the state of the pin to an output
analogWrite(pin, state); //Sets the PWM of the pin
break; // Break from the switch


// WRITE a digital pin
case 'd' :

pin = messageGetInt(); // Gets the next word as an integer
state = messageGetInt(); // Gets the next word as an integer
pinMode(pin,OUTPUT); //Sets the state of the pin to an output
digitalWrite(pin,state); //Sets the state of the pin HIGH (1) or LOW (0)

}

}

Then we figured out how to read that input in MAX and start to manipulate an input.



Which we then took and made more little flashy lights.




_Laura and Jessica!

Comments: Post a Comment



<< Home

This page is powered by Blogger. Isn't yours?