Do the math on the currents. That transistor only has a gain of 20 that you can count on. With 1 kΩ base resistors to 5V, the base current will be about 4.3 mA. That times 20 is only 86 mA. That will be shared by all the LEDs that the transistor is driving. Since you say there are 15 LEDs in parallel, that means each only gets 5.7 mA, which will be visible but dim.
What current do you want to run each LED at? That times 15 is the current the transistor needs to be able to sink. That divided by the transistor's gain is the minimum base current required.
There are several solutions that come to mind:
- Use a transistor with more gain.
- Give it more base current. The limit is what the arduino can supply. You'll have to check the arduino datasheet for that. Probably in the 10-20 mA range, but I haven't checked.
- Use a FET instead. This is actually a good application for a FET. I like the IRLML2502 for low side swithing from 5V logic. In this case you drive the gate of the FET directly from the microcontroller digital output without a resistor in series.
It would help if you said what the max current per LED is intended to be.
Since you've not accepted an answer I'll chuck in my suggestions.
Most of the complexity here will be in the software and given your background you should have no issues there.
From the hardware point of view I recommend testing with one LED first with a resistor in series to the UNO pin that it is connected to. The LEDs you link to don't state a current draw, if you can't find this out I would suggest setting your resistor to 2.2K ohms (don't ask why, I just always start there). If it is too dim then reduce the resistance until you find a brightness you are happy with.
Get your hands on a volt meter and measure the voltage drop across the resistor - it should be about about 1.4 V less than your supply voltage but it is always worth checking. (see Martin's answer for more detail on this bit)
Divide this voltage by the resistance you choose and now you know the current that one LED needs to reach the brightness you want. Make sure that this number is less than the maximum output current that the UNO can supply. If it isn't then you'll need to either increase your resistance or use the UNO to drive a MOSFET to switch the LED on and off - to be honest if it is too much then the UNO may well have died by this point or at least be getting hot.
If you wan to drive more than one LED from the pin then you will need to decrease your resistance to make sure there is enough current flowing through the LEDs to make sure that the LEDs are at the brightness you want. Again, be careful not to draw more than the UNO can supply - it's basically going to be a multiple of the current you worked out for the single LED.
If it does increase above the maximum current output of the UNO then you could either spread the LEDs across more output pins or use a MOSFET to drive the LEDs.
Other than that you shouldn't have too many problems.
Best Answer
All Arduinos and compatible boards can work with multiple LEDs, and have multiple timers.
For the programming capability of providing time, which presumably means a precision real-time clock, battery-backed RTC clock ICs and ready-to-use modules are ubiquitous and inexpensive. Connecting one to the Arduino is simple, and libraries are available for using the date/time/calendar/alarm functions.
The basic Arduino Uno for instance uses the Atmel ATmega328 microcontroller, and exposes 14 digital IO pins - thus supporting up to 14 LEDs directly off digital IO, more through various means such as adding an LED controller or multiplexer. Of the digital IO pins, 6 have native PWM support, usable for LED dimming.
The ATmega328 has two 8-bit and one 16-bit timer. Of these, Timer 0 (8-bit) is best not used for applications, as it is internally used by the Arduino base code for functions like
millis()
.If a larger number of LEDs are to be directly programmed, or more timers are required, the Arduino Mega 2560, based on the ATmega2560 MCU, exposes 54 digital IO pins, 15 of them with native PWM support that can be used for LED dimming.
The ATmega2560 has two 8-bit and four 16-bit timers, and again the Timer 0 caveat applies.
Without additional detail on the specific design requirements, a specific Arduino recommendation is not feasible.