/*
  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 <MeetAndroid.h>

// 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, 'L');

  // 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()
{
  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();
  switch (orient_val) {
  case 1:
    //RED RED
    analogWrite(redLed_1, 0);
    analogWrite(greenLed_1, 255);
    analogWrite(blueLed_1, 255);
    analogWrite(redLed_2, 0);
    analogWrite(greenLed_2, 255);
    analogWrite(blueLed_2, 255);
    break;
  case 2:
    //RED YELLOW
    analogWrite(redLed_1, 0);
    analogWrite(greenLed_1, 255);
    analogWrite(blueLed_1, 255);
    analogWrite(redLed_2, 0);
    analogWrite(greenLed_2, 0);
    analogWrite(blueLed_2, 255);
    break;
  case 3:
    //RED GREEN
    analogWrite(redLed_1, 0);
    analogWrite(greenLed_1, 255);
    analogWrite(blueLed_1, 255);
    analogWrite(redLed_2, 255);
    analogWrite(greenLed_2, 0);
    analogWrite(blueLed_2, 255);
    break;
  case 4:
    //YELLOW RED
    analogWrite(redLed_1, 0);
    analogWrite(greenLed_1, 0);
    analogWrite(blueLed_1, 255);
    analogWrite(redLed_2, 0);
    analogWrite(greenLed_2, 255);
    analogWrite(blueLed_2, 255);
    break;
  case 5:
    //YELLOW YELLOW
    analogWrite(redLed_1, 0);
    analogWrite(greenLed_1, 0);
    analogWrite(blueLed_1, 255);
    analogWrite(redLed_2, 0);
    analogWrite(greenLed_2, 0);
    analogWrite(blueLed_2, 255);
    break;
  case 6:
    //YELLOW GREEN
    analogWrite(redLed_1, 0);
    analogWrite(greenLed_1, 0);
    analogWrite(blueLed_1, 255);
    analogWrite(redLed_2, 255);
    analogWrite(greenLed_2, 0);
    analogWrite(blueLed_2, 255);
    break;
  case 7:
    //GREEN RED
    analogWrite(redLed_1, 255);
    analogWrite(greenLed_1, 0);
    analogWrite(blueLed_1, 255);
    analogWrite(redLed_2, 0);
    analogWrite(greenLed_2, 255);
    analogWrite(blueLed_2, 255);
    break;
  case 8:
    //GREEN YELLOW
    analogWrite(redLed_1, 255);
    analogWrite(greenLed_1, 0);
    analogWrite(blueLed_1, 255);
    analogWrite(redLed_2, 0);
    analogWrite(greenLed_2, 0);
    analogWrite(blueLed_2, 255);
    break;
  case 9:
    //GREEN GREEN
    analogWrite(redLed_1, 255);
    analogWrite(greenLed_1, 0);
    analogWrite(blueLed_1, 255);
    analogWrite(redLed_2, 255);
    analogWrite(greenLed_2, 0);
    analogWrite(blueLed_2, 255);
    break;
  }
}