Can't write multiple pins HIGH why?

Unless there is a typo I am missing, your code should run fine. I agree though, your delays are really long. lol.

Did you really intend it to take 30 seconds to cycle through one loop?

Hey the delay is just the default blink I was going to slim it down but was halted in the code development! My wife would fall asleep LOL

The last two lines is what I was having issues with. Dunno why I didn't copy them in first!

int ledI = 13;
int ledL = 12;
int ledO = 11;
int ledV = 10;
int ledE = 9;
int ledY = 8;
int ledo = 7;
int ledU = 6;

void setup() {                
  
  pinMode(ledI, OUTPUT);  
  pinMode(ledL, OUTPUT);
  pinMode(ledO, OUTPUT);
  pinMode(ledV, OUTPUT);
  pinMode(ledE, OUTPUT);
  pinMode(ledY, OUTPUT); 
  pinMode(ledo, OUTPUT);
  pinMode(ledU, OUTPUT);
}

// the loop routine runs over and over again forever:
void loop() {
  delay(100);
  digitalWrite(ledI, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);               // wait for a second
  digitalWrite(ledI, LOW);    // turn the LED off by making the voltage LOW
  delay(3000);               // wait for a second
  digitalWrite(ledL, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);               // wait for a second
  digitalWrite(ledL, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);               // wait for a second
  digitalWrite(ledO, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(3000);               // wait for a second
  digitalWrite(ledO, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);               // wait for a second
  digitalWrite(ledV, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(3000);               // wait for a second
  digitalWrite(ledV, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);               // wait for a second
  digitalWrite(ledE, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(3000);               // wait for a second
  digitalWrite(ledE, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);               // wait for a second
  digitalWrite(ledY, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(3000);               // wait for a second
  digitalWrite(ledY, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);               // wait for a second
  digitalWrite(ledo, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(3000);               // wait for a second
  digitalWrite(ledo, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);               // wait for a second
  digitalWrite(ledU, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(3000);               // wait for a second
  digitalWrite(ledU, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);               // wait for a second
  digitalWrite(ledI, ledL, ledO, ledV, ledE, ledY, ledo, ledU, HIGH);    // turn the LED off by making the voltage LOW
  delay(1000);               // wait for a second
  digitalWrite(ledI, ledL, ledO, ledV, ledE, ledY, ledo, ledU, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);               // wait for a second
}

Ahhh... lol. Yeah, you can't do that. Just put each one on it's own line without any delays in between. It will happen so fast, that it will appear to all turn on at once. The human eye couldn't capture it.

Also, if they are all using the 8 bits (you have 8 letters) of one port, you could just do this:

PORTn = 0xFF and that would turn on all bits at once. n = whatever port they are on. PORTD is pins 0-7. But you will lose your serial port. If you aren't using it, no big deal. It's the only full 8-bit port available.

However, my first suggestion would happen so fast, the results will look the same.

Awesome thanks! :astonished:

Retro

I deleted all delays and it blinked for a tiny fraction of a second but was almost unnoticeable so I deleted the delay after the low and it blinks left to right really fast which is not what I want. Thoughts?

int ledI = 13;
int ledL = 12;
int ledO = 11;
int ledV = 10;
int ledE = 9;
int ledY = 8;
int ledo = 7;
int ledU = 6;

void setup() {                
  
  pinMode(ledI, OUTPUT);  
  pinMode(ledL, OUTPUT);
  pinMode(ledO, OUTPUT);
  pinMode(ledV, OUTPUT);
  pinMode(ledE, OUTPUT);
  pinMode(ledY, OUTPUT); 
  pinMode(ledo, OUTPUT);
  pinMode(ledU, OUTPUT);
}

// the loop routine runs over and over again forever:
void loop() {
  delay(1000);
  digitalWrite(ledI, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(500);               // wait for a second
  digitalWrite(ledI, LOW);    // turn the LED off by making the voltage LOW
  delay(500);               // wait for a second
  digitalWrite(ledL, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(500);               // wait for a second
  digitalWrite(ledL, LOW);    // turn the LED off by making the voltage LOW
  delay(500);               // wait for a second
  digitalWrite(ledO, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(500);               // wait for a second
  digitalWrite(ledO, LOW);    // turn the LED off by making the voltage LOW
  delay(500);               // wait for a second
  digitalWrite(ledV, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(500);               // wait for a second
  digitalWrite(ledV, LOW);    // turn the LED off by making the voltage LOW
  delay(500);               // wait for a second
  digitalWrite(ledE, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(500);               // wait for a second
  digitalWrite(ledE, LOW);    // turn the LED off by making the voltage LOW
  delay(500);               // wait for a second
  digitalWrite(ledY, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(500);               // wait for a second
  digitalWrite(ledY, LOW);    // turn the LED off by making the voltage LOW
  delay(500);               // wait for a second
  digitalWrite(ledo, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(500);               // wait for a second
  digitalWrite(ledo, LOW);    // turn the LED off by making the voltage LOW
  delay(500);               // wait for a second
  digitalWrite(ledU, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(500);               // wait for a second
  digitalWrite(ledU, LOW);    // turn the LED off by making the voltage LOW
  delay(500);               // wait for a second
  digitalWrite(ledI, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(50);
  digitalWrite(ledI, LOW);    // turn the LED off by making the voltage LOW
  
  digitalWrite(ledL, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(50);
  digitalWrite(ledL, LOW);    // turn the LED off by making the voltage LOW
 
  digitalWrite(ledO, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(50);
  digitalWrite(ledO, LOW);    // turn the LED off by making the voltage LOW

  digitalWrite(ledV, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(50);
  digitalWrite(ledV, LOW);    // turn the LED off by making the voltage LOW

  digitalWrite(ledE, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(50);
  digitalWrite(ledE, LOW);    // turn the LED off by making the voltage LOW
 
  digitalWrite(ledY, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(50);
  digitalWrite(ledY, LOW);    // turn the LED off by making the voltage LOW
 
  digitalWrite(ledo, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(50);
  digitalWrite(ledo, LOW);    // turn the LED off by making the voltage LOW
 
  digitalWrite(ledU, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(50);
  digitalWrite(ledU, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);
}

I'm going to take a wild guess.

Each pin has multiple LEDs on it that spell out each letter?

Remember that the Arduino pins are only rated for 40mA max. If you are trying to drive a number of LEDs in parallel then your poor Arduino just can't keep up. If you are driving them in series, then the voltage across the string would have to be much larger than 5V.

If, indeed, the LEDs are in parallel be sure that each LED has its own individual current-limiting resistor and place an NPN transistor from ground to the cathodes of the LEDs and then place the current-limiting resistors from the anode to +5V. Use a 10k resistor from the each Arduino pin to the base of each transistor.

With 330 ohm resistors, each LED will draw about 10mA. So a 2n2222 should be fine. It has a max current of 200mA so it would drive 20 LEDs.

I hope that this helps but it is a wild guess.

led_driver.jpg

I put one LED to one pin.

https://docs.google.com/file/d/0Bx_sFejXsULPZm9BMFloRW5UWjQ/edit?usp=sharing

Your resistors are not in the breadboard correctly.

From the Arduino pin to one end of the resistor
The other end should be in another row, with the (looks like) anodode of the LED
The other end of the LED should go to ground

These LEDs are probably burned, so try new ones

The LED's are working just fine what did I do?! $)

If you move each wire from an Arduino pin one breadboard row to the left and the move the near end of the resistor over to the row with the wire, you'll be gold. Of course the left-most will need a custom swap, but you get the idea...

Ok I see what I did... put each resistor on the same line as the led so essentially muting the resistor. This correct? :fearful:

Exactly. Good luck!

If I understand correctly, even after fixing the circuit there will be issues with the program. I'm NOT saying you shouldn't rewire the circuit, please DO it, but I think it won't change the timing issue.

I deleted all delays and it blinked for a tiny fraction of a second but was almost unnoticeable

If you delete all delays each LED is switched on for a tiny fraction of a second then is switched immediately off, so it's almost unnoticeable.

so I deleted the delay after the low and it blinks left to right really fast which is not what I want

Here you allowed each LED to stay on for some noticeable time, but you switched it off immediately before you switched on the next. What you want, I guess, is to switch all the LEDs on, without any delay between one and the next, stay on for a while (some delay), then switch them off at the same time.

Thanks for the help first of all! I know it can be a pain sometimes but I have corrected the coded/wiring and am pretty happy how this came out. This way it goes through the letters then turns it all on one letter at a time holds for a second then takes each letter down one at a time and then rinse and repeats.

Any other tips for this?

int ledI = 13;
int ledL = 12;
int ledO = 11;
int ledV = 10;
int ledE = 9;
int ledY = 8;
int ledo = 7;
int ledU = 6;

void setup() {                
  
  pinMode(ledI, OUTPUT);  
  pinMode(ledL, OUTPUT);
  pinMode(ledO, OUTPUT);
  pinMode(ledV, OUTPUT);
  pinMode(ledE, OUTPUT);
  pinMode(ledY, OUTPUT); 
  pinMode(ledo, OUTPUT);
  pinMode(ledU, OUTPUT);
}

// the loop routine runs over and over again forever:
void loop() {
  delay(1000);
  digitalWrite(ledI, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(500);               // wait for a second
  digitalWrite(ledI, LOW);    // turn the LED off by making the voltage LOW
  delay(500);               // wait for a second
  digitalWrite(ledL, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(500);               // wait for a second
  digitalWrite(ledL, LOW);    // turn the LED off by making the voltage LOW
  delay(500);               // wait for a second
  digitalWrite(ledO, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(500);               // wait for a second
  digitalWrite(ledO, LOW);    // turn the LED off by making the voltage LOW
  delay(500);               // wait for a second
  digitalWrite(ledV, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(500);               // wait for a second
  digitalWrite(ledV, LOW);    // turn the LED off by making the voltage LOW
  delay(500);               // wait for a second
  digitalWrite(ledE, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(500);               // wait for a second
  digitalWrite(ledE, LOW);    // turn the LED off by making the voltage LOW
  delay(500);               // wait for a second
  digitalWrite(ledY, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(500);               // wait for a second
  digitalWrite(ledY, LOW);    // turn the LED off by making the voltage LOW
  delay(500);               // wait for a second
  digitalWrite(ledo, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(500);               // wait for a second
  digitalWrite(ledo, LOW);    // turn the LED off by making the voltage LOW
  delay(500);               // wait for a second
  digitalWrite(ledU, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(500);               // wait for a second
  digitalWrite(ledU, LOW);    // turn the LED off by making the voltage LOW
  delay(500);               // wait for a second
  digitalWrite(ledI, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(500); 
  digitalWrite(ledL, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(500);
  digitalWrite(ledO, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(500);
  digitalWrite(ledV, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(500);
  digitalWrite(ledE, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(500);
  digitalWrite(ledY, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(500);
  digitalWrite(ledo, HIGH);  // turn the LED on (HIGH is the voltage level)
  delay(500);
  digitalWrite(ledU, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(500);
  digitalWrite(ledI, LOW);   // turn the LED on (HIGH is the voltage level)
  delay(500); 
  digitalWrite(ledL, LOW);   // turn the LED on (HIGH is the voltage level)
  delay(500);
  digitalWrite(ledO, LOW);   // turn the LED on (HIGH is the voltage level)
  delay(500);
  digitalWrite(ledV, LOW);   // turn the LED on (HIGH is the voltage level)
  delay(500);
  digitalWrite(ledE, LOW);   // turn the LED on (HIGH is the voltage level)
  delay(500);
  digitalWrite(ledY, LOW);   // turn the LED on (HIGH is the voltage level)
  delay(500);
  digitalWrite(ledo, LOW);   // turn the LED on (HIGH is the voltage level)
  delay(500);
  digitalWrite(ledU, LOW);   // turn the LED on (HIGH is the voltage level)
  delay(500);
  
}

Glad to know. And special thanks to MaJiG on behalf of your LEDs :wink:

steinklatre:
Any other tips for this?

Imagining how this would look, I would have thought it would be more visually appealing if you took out the periods where everything was off. In other words, as you turn one LED off turn the next one on immediately without any delay, so you don't get all those periods when the whole thing is off. Then delay for a second or so, turn the current LED off and immediately turn the next one on, and so on.

OP, you should post a video of the effect.

I will when I get home. I finished the project thanks to you guys in the nick of time!

Lance

Here you guys go!

The video didn't come out the best but the hint is there.

Picture of the plexi https://docs.google.com/file/d/0Bx_sFejXsULPczZRYzRyMUd1bTg/edit?usp=sharing

Picture of the LED holder https://docs.google.com/file/d/0Bx_sFejXsULPMW5YMXdtWW9tLWs/edit?usp=sharing

Picture of the board https://docs.google.com/file/d/0Bx_sFejXsULPMWljTTdEU2wyRHc/edit?usp=sharing