Charlieplexing 6 LEDs

So this is my first project with an arduino, so forgive any grave sins and all that. To cut to the chase: I've been able to successfully light each of the 6 LEDs 'individually.' I put that in quotes because in my circuit the LED I want to light up is lit up very brightly, but there is an LED in each of the other nodes that is lit up to a lesser degree. I know that it has to do with my circuit (which I will upload when I get the chance) and I was wondering where I should start looking to troubleshoot it?

On AVR, you probably have to write a 0 to the IO port as well as setting it to input to turn it off. if you've written a 1 while the port is an input, you'll enable the internal pullup, which might dimly light some LEDs.

My first charlieplexed effort had that problem because i didn't realize i needed resistors on each of my driving pins. They should be half the value you'd normally use with the leds or just a bit more.

Thanks for the input. I’d been using 100ohm resistors on my three input pins, and when I jump to 4.7k ohm I get the same problem (granted the LEDs are quite a bit dimmer). I borrowed some code from a similar post from about a year ago (gasp I forgot the fellow’s name who put it up and I can’t find that post to give him credit) because the kludge I put together failed miserably.

//not mine origionally, but I don't know who to give credit to
unsigned int pinA = 1;
unsigned int pinB = 2;
unsigned int pinC = 3;

unsigned int currentIndex = 0;

unsigned int numPins = 6;
/*
||High  A A B B C C
 ||Low   B C A C A B
 */
boolean states[] = {
  0,0,0,0,0,0};

void setup(){
  setAllOutput();
}//end setup

void setAllOutput(){
  pinMode(pinA, OUTPUT);
  pinMode(pinB, OUTPUT);
  pinMode(pinC, OUTPUT);
  digitalWrite(pinA, HIGH);
  digitalWrite(pinB, HIGH);
  digitalWrite(pinC, HIGH);
}//end setAllOutput

void setLedHigh(unsigned int led){

  for( unsigned int i = 0; i < numPins; i++){
    states[i] = false;
  }

  states[led%numPins] = true;
}//end setLedHigh

void lightLeds(){

  for(unsigned int i = 0; i < numPins; i++){
    if(states[i] == true){
      switch(i){
      case 0:
        {
          pinMode(pinA, INPUT);
          digitalWrite(pinB, LOW);
        }
        break;
      case 1:
        {
          pinMode(pinA, INPUT);
          digitalWrite(pinC, LOW);
        }
        break;
      case 2:
        {
          pinMode(pinB, INPUT);
          digitalWrite(pinA, LOW);
        }
        break;
      case 3:
        {
          pinMode(pinB, INPUT);
          digitalWrite(pinC, LOW);
        }
        break;
      case 4:
        {
          pinMode(pinC, INPUT);
          digitalWrite(pinA, LOW);
        }
        break;
      case 5:
        {
          pinMode(pinC, INPUT);
          digitalWrite(pinB, LOW);
        }
        break;
      }//end switch 
    }
    else{
      //
    }
  }
}//end lightLeds
void loop(){
  setAllOutput();

  lightLeds();
  setLedHigh(currentIndex++);
  delay(1000);
}

Here is my code, and I’ll be putting up the circuit as soon as I draw it out in Eagle.

Problem solved, I rebuilt my circuit and it worked fine. Thanks again for input.