IDE Monitor to Multiple LEDS

Hi

I want to be able to enter, as required, a number (1-20) in IDE monitor and have that number LED turn on momentarily using 3 of the multiplexing SH74HC595N. Have found similar projects but not using the entry as required into the monitor.

The info on the multiplexer is ok and the flash rates etc, all leds will be the same single flash rate so do I use a variable? Need the most simple code for having the entry in the monitor (single number or say 4 numbers in series) processed thru multiplexer to specific leds

Any advice on where I can locate suitable code

Thanks
Charlie

if (Serial.available()>1){
tensDigit = Serial.read() - 0x30; // result is 0 to 9
onesDigit = Serial.read() - 0x30; // result is 0 to 9
ledNumber = (tensDigit x 10) + onesDigit; // result is 00 to 19
unsigned ledTurnOn = 0x01 << ledNumber; // put a 1 in the correct  bit location of a 32-bit unsigned long
// now break up the 4 bytes and send them out, left as an an exercise for the reader
}

The examples in serial input basics may be useful. They are simple and reliable. There is also a parse function.

...R

Servo test code where a numeric command and a servo designator are sent from the serial monitor. You might use a similar approach for your LEDs.

//zoomkat 11-22-12 simple delimited ',' string parse 
//from serial port input (via serial monitor)
//and print result out serial port
//multi servos added 
// Powering a servo from the arduino usually *DOES NOT WORK*.

String readString;
#include <Servo.h> 
Servo myservoa, myservob, myservoc, myservod;  // create servo object to control a servo 

void setup() {
  Serial.begin(9600);

  //myservoa.writeMicroseconds(1500); //set initial servo position if desired

  myservoa.attach(6);  //the pin for the servoa control
  myservob.attach(7);  //the pin for the servob control
  myservoc.attach(8);  //the pin for the servoc control
  myservod.attach(9);  //the pin for the servod control 
  Serial.println("multi-servo-delimit-test-dual-input-11-22-12"); // so I can keep track of what is loaded
}

void loop() {

  //expect single strings like 700a, or 1500c, or 2000d,
  //or like 30c, or 90a, or 180d,
  //or combined like 30c,180b,70a,120d,

  if (Serial.available())  {
    char c = Serial.read();  //gets one byte from serial buffer
    if (c == ',') {
      if (readString.length() >1) {
        Serial.println(readString); //prints string to serial port out

        int n = readString.toInt();  //convert readString into a number

        // auto select appropriate value, copied from someone elses code.
        if(n >= 500)
        {
          Serial.print("writing Microseconds: ");
          Serial.println(n);
          if(readString.indexOf('a') >0) myservoa.writeMicroseconds(n);
          if(readString.indexOf('b') >0) myservob.writeMicroseconds(n);
          if(readString.indexOf('c') >0) myservoc.writeMicroseconds(n);
          if(readString.indexOf('d') >0) myservod.writeMicroseconds(n);
        }
        else
        {   
          Serial.print("writing Angle: ");
          Serial.println(n);
          if(readString.indexOf('a') >0) myservoa.write(n);
          if(readString.indexOf('b') >0) myservob.write(n);
          if(readString.indexOf('c') >0) myservoc.write(n);
          if(readString.indexOf('d') >0) myservod.write(n);
        }
         readString=""; //clears variable for new input
      }
    }  
    else {     
      readString += c; //makes the string readString
    }
  }
}