/* 2x Matrix Output - based on the Amarino Multicolor Lamp tutorial - receives custom events from Amarino changing color accordingly author: Brad Crane - 04.02.10 */ #include // declare MeetAndroid so that you can call functions with it MeetAndroid meetAndroid; // LED_1 control signals int redLed_1 = 14; int greenLed_1 = 12; int blueLed_1 = 13; // LED_2 control signals int redLed_2 = 8; int greenLed_2 = 6; int blueLed_2 = 7; int i = 0; void setup() { // set baud rate of bluetooth module Serial.begin(57600); // register callback functions, which will be called when an associated event occurs. // 'F' is the event flag for amarino compass event meetAndroid.registerFunction(orientation, 'F'); //meetAndroid.registerFunction(location, 'H'); // set all color leds as output pins pinMode(redLed_1, OUTPUT); pinMode(greenLed_1, OUTPUT); pinMode(blueLed_1, OUTPUT); pinMode(redLed_2, OUTPUT); pinMode(greenLed_2, OUTPUT); pinMode(blueLed_2, OUTPUT); } void loop() { if (i > 6) { analogWrite(redLed_2, 255); analogWrite(greenLed_2, 0); analogWrite(blueLed_2, 255); } else { analogWrite(redLed_2, 0); analogWrite(greenLed_2, 255); analogWrite(blueLed_2, 255); } meetAndroid.receive(); // you need to keep this in your loop() to receive events } void orientation(byte flag, byte numOfValues) { int orient_val; // get data after the flag 'F' event orient_val = meetAndroid.getInt(); // check north to northeast and set red if (orient_val<90){ analogWrite(redLed_1, 0); analogWrite(greenLed_1, 255); analogWrite(blueLed_1, 255); i=0; } // check east to south east and set blue else if (orient_val > 90 && orient_val < 180){ analogWrite(redLed_1, 255); analogWrite(greenLed_1, 255); analogWrite(blueLed_1, 0); i=0; } // check south to southwest and set yellow else if (orient_val > 180 && orient_val < 270){ analogWrite(redLed_1, 0); analogWrite(greenLed_1, 0); analogWrite(blueLed_1, 255); i=0; } // check west to northwest and set green else { analogWrite(redLed_1, 255); analogWrite(greenLed_1, 0); analogWrite(blueLed_1, 255); i++; } } //commented out until we know more about what the programming people are doing /*void location(byte flag, byte numOfValues) { int location_val[2] = {meetAndroid.getInt()}; //inverse RGB values because LEDs share common positive // if (location_val[0] < 1){ analogWrite(redLed_2, 0); analogWrite(greenLed_2, 255); analogWrite(blueLed_2, 255); } else if (location_val[0] > 1 && location_val[0] < 3){ analogWrite(redLed_2, 255); analogWrite(greenLed_2, 255); analogWrite(blueLed_2, 0); } else { analogWrite(redLed_2, 255); analogWrite(greenLed_2, 0); analogWrite(blueLed_2, 255); } }*/