I have a simple project with a close deadline.
I am trying to light up 5 LEDs as part of the project. The first 4 light up in sequence fine, and if I light up just the last one it lights up fine, but if all 5 are lit at once the very last LED is very dim. I swapped out cables, the pin on the Arduino, resistor, LED.
What would explain that? Input amperage? Too strong a resistor?
I have a 330 ohm resistor in between each LED and ground. I am using one of the neat resistors from SparkFun that packages up the 5 330 ohm resistors together, with a common ground wire. I bought two and tried swapping it out with no change.
https://i.stack.imgur.com/QZ4qU.jpg
Here is my code:
/* Blink without Delay
http://www.arduino.cc/en/Tutorial/BlinkWithoutDelay
*/
const int startButtonPin = 6;
const int reedSwitchPin = 7;
const int ledPins[] = {8,9,10,11,13};
const int numLeds = 5;
const long interval = 1000; // interval at which to blink (milliseconds)
const int revolutionsPerStage = 15;
int debounceDelay = 500; // for switches--interval to ignore short button presses/reed switch open/close
long lastDebounce = 0;
int buttonState = LOW;
int mapStage = 0;
unsigned long previousMillis = 0; // will store last time LED was updated
void setup() {
// set pin modes
for (int thisPin = 0; thisPin < (sizeof(ledPins)/sizeof(int)) - 1; thisPin++) {
pinMode(ledPins[thisPin], OUTPUT);
}
pinMode(startButtonPin, INPUT);
pinMode(reedSwitchPin,INPUT);
digitalWrite(reedSwitchPin,HIGH); // activate the pull-up resistor
}
// Main program loop
void loop()
{
buttonState = digitalRead(startButtonPin);
//digitalWrite(8,HIGH);
// wait for button press to begin program proper. we won't get back to this state except on first boot or if program finishes
if (buttonState == HIGH) {
digitalWrite(8,HIGH);
chasingLEDs();
//trackProgress();
}
}
void trackProgress() {
int blinkState = LOW;
unsigned long currentMillis = millis();
unsigned int numRevolutions = 0;
do {
digitalWrite(ledPins[mapStage], HIGH);
// blink the current goal LED at constant interval specified earlier
if(currentMillis - previousMillis >= interval) {
// save the last time you blinked the LED
previousMillis = currentMillis;
blinkState = !blinkState;
digitalWrite(ledPins[mapStage], blinkState);
}
} while (mapStage < numLeds);
}
// perform a simple welcome sequence to indicate we are ready to start pedalling
void chasingLEDs() {
// turn LEDs on in sequence, then back off
for (int i = 0; i < numLeds; i++){
digitalWrite(ledPins[i], HIGH);
delay(333);
}
for (int j = numLeds; j > 0; j--) {
digitalWrite(ledPins[j], LOW);
delay(333);
}
// flash the LEDs twice
for (int k = 0; k < 2; k++) {
for (int l = 0; l < numLeds; l++) {
digitalWrite(ledPins[l], HIGH);
}
delay(500);
for (int m = 0; m < numLeds; m++) {
digitalWrite(ledPins[m], LOW);
}
}
}