////////////////////////////////////

// SerialInput_1 (Arduino)
//
// Illustrates reading from the serial port.
//
// Opens the serial port (Serial.begin), flushes the serial port buffer by continually 
// reading (Serial.read) until Serial.available is 0.
//
// The program then continually loops.  If Serial.available is not zero, a character
// is read and if an 'H' or 'L' brings output 12 high or low.
//
// copyright, Peter H Anderson, Baltimore, MD,  Nov 3, '09

#define DIR_OUT(pin) pinMode(pin, OUTPUT)
#define DIR_IN(pin)   pinMode(pin, INPUT)
#define O_HIGH(pin) digitalWrite(pin, HIGH)
#define O_LOW(pin) digitalWrite(pin, LOW)
#define IN(pin) digitalRead(pin)


#define TRUE !0
#define FALSE 0

void flush_buffer(void);
int is_num(char ch);

void setup()
{
  Serial.begin(9600);
  delay(100); 
  flush_buffer();
  DIR_OUT(12);
  DIR_OUT(13);
}

void loop()
{
  int  num_chars, num, n;
  char ch;
  
  while(1)
  {
     if (Serial.available())
     {
        ch = Serial.read();
     // Serial.print(ch); // used for debugging
        if (ch=='H')
        {
           O_HIGH(12);
           O_HIGH(13);
        }
        else if (ch == 'L')
        {
           O_LOW(12);       
           O_LOW(13);
        }
        else
        {
           flush_buffer();
        }
     }                   
  }
}

void flush_buffer(void)
{
  int num;
  while(1)
  {
    num = Serial.available();
    if (num == 0)
    {
      break;
    }
    else
    {
       Serial.read();
    }
  }
}