

The LM3914 is an LED bar graph or LED dot display driver that can control up to 10 LEDs, providing a visual representation of analog signals. It is capable of operating in either bar mode (all LEDs up to a certain level are lit) or dot mode (only one LED at the corresponding level is lit). The component is highly versatile and can be configured for linear or logarithmic scale operation, making it ideal for applications such as audio level meters, battery level indicators, and voltage monitoring systems.








The LM3914 is designed to simplify the process of driving LEDs for visual feedback. Below are its key technical details:
| Parameter | Value |
|---|---|
| Operating Voltage Range | 3V to 25V |
| LED Drive Current | Adjustable, up to 30mA per LED |
| Input Signal Range | 0V to 1.2V (expandable with resistors) |
| Power Dissipation | 1365mW (maximum) |
| Operating Temperature Range | 0°C to 70°C |
| Modes of Operation | Bar mode or Dot mode |
The LM3914 is available in a 18-pin Dual Inline Package (DIP). Below is the pinout and description:
| Pin Number | Pin Name | Description |
|---|---|---|
| 1 | LED1 | Output for LED 1 |
| 2 | LED2 | Output for LED 2 |
| 3 | LED3 | Output for LED 3 |
| 4 | LED4 | Output for LED 4 |
| 5 | LED5 | Output for LED 5 |
| 6 | LED6 | Output for LED 6 |
| 7 | LED7 | Output for LED 7 |
| 8 | LED8 | Output for LED 8 |
| 9 | LED9 | Output for LED 9 |
| 10 | LED10 | Output for LED 10 |
| 11 | VLED | LED supply voltage (can be separate from VCC) |
| 12 | RLO | Low reference voltage for the input signal |
| 13 | RHI | High reference voltage for the input signal |
| 14 | REF OUT | Reference voltage output (used for external circuits) |
| 15 | REF ADJ | Reference voltage adjustment (sets the LED current and input voltage range) |
| 16 | SIG IN | Signal input (analog voltage to be displayed) |
| 17 | MODE SELECT | Selects between bar mode (connected to VCC) or dot mode (left unconnected) |
| 18 | VCC | Power supply voltage |
The LM3914 can be used with an Arduino UNO to display an analog signal, such as a potentiometer's position. Below is an example:
// LM3914 Example with Arduino UNO
// This code demonstrates how to drive the LM3914 using an analog signal
// from a potentiometer connected to pin A0.
const int signalPin = A0; // Analog input pin for the potentiometer
void setup() {
pinMode(signalPin, INPUT); // Set the signal pin as input
}
void loop() {
int sensorValue = analogRead(signalPin); // Read the potentiometer value
int outputValue = map(sensorValue, 0, 1023, 0, 255);
// Map the 10-bit ADC value (0-1023) to an 8-bit range (0-255)
analogWrite(9, outputValue); // Output the signal to the LM3914
delay(10); // Small delay for stability
}
LEDs Not Lighting Up:
Incorrect LED Behavior:
Overheating:
Q: Can I use fewer than 10 LEDs with the LM3914?
A: Yes, you can use fewer LEDs by leaving the unused LED pins unconnected.
Q: How do I switch between bar and dot mode?
A: Connect the MODE SELECT pin (Pin 17) to VCC for bar mode. Leave it unconnected for dot mode.
Q: Can the LM3914 drive other types of displays?
A: The LM3914 is specifically designed for LEDs. However, it can drive other low-current devices with proper interfacing.
Q: What is the maximum input signal voltage?
A: The maximum input signal voltage is determined by the reference voltage range set by RLO and RHI.