Introduction
This project recreates the famous Knight Rider LED
scanner effect using 11 red LEDs controlled by an Arduino Nano.
The code cycles through multiple lighting patterns: sweeping left to right,
right to left, sequential fills, and flashing all LEDs together.
Components Required
- Arduino
Nano
- 11
× Red LEDs
- 11
× 330Ω
resistors (current limiting)
- Breadboard
or PCB
- Jumper
wires
- USB
cable for programming
Pin Configuration
Each LED is connected to a specific digital pin on the
Arduino Nano:
|
LED |
Arduino Pin |
|
LED_1 |
3 |
|
LED_2 |
2 |
|
LED_3 |
5 |
|
LED_4 |
4 |
|
LED_5 |
6 |
|
LED_6 |
7 |
|
LED_7 |
9 |
|
LED_8 |
8 |
|
LED_9 |
10 |
|
LED_10 |
12 |
|
LED_11 |
11 |
Circuit Connections
Why No Loops used for patterns?
In this project, the code is written in
a straightforward, beginner‑friendly style.
- Each
LED has its own dedicated function (led1On(), led2On(), etc.).
- Patterns
like swipeToRight() simply call these functions one after another.
- This
avoids the complexity of arrays, indexing, and for loops, which can
sometimes confuse beginners.
By doing this, the code becomes:
- Easy
to read — you can follow the LED sequence
line by line.
- Easy
to modify — want to change LED 5’s behaviour?
Just edit led5On().
- Educational
— beginners learn how digitalWrite() works before moving on to advanced
techniques.
Code Working
1. Setup Section
void setup() {
pinMode(LED_1,
OUTPUT);
pinMode(LED_2,
OUTPUT);
...
pinMode(LED_11,
OUTPUT);
// Ensure all LEDs
are OFF at startup
digitalWrite(LED_1,
LOW);
...
digitalWrite(LED_11,
LOW);
// Blink all LEDs 5
times as a startup animation
for(int i=0; i<5; i++){
allLedOn();
delay(100);
allLedOff();
delay(100);
}
}
- Configures
all pins as outputs.
- Turns
off all LEDs initially.
- Runs
a quick startup blink animation.
2. Loop Section
void loop() {
swipeToRight(50);
swipeToLeft(50);
swipeToRight(50);
swipeToLeft(50);
allLedOff();
onToRight(100);
allLedOff();
onToLeft(100);
// Repeat some
sequences
onToRight(100);
allLedOff();
onToLeft(100);
// Blink all LEDs 5
times
for(int i=0; i<5; i++){
allLedOn();
delay(100);
allLedOff();
delay(100);
}
}
- Runs
sweeping animations (right and left).
- Executes
sequential fill patterns (onToRight, onToLeft).
- Ends
with flashing all LEDs together.
3. Helper Functions
- allLedOn()
/ allLedOff() → Turn all LEDs ON or OFF.
- ledXOn()
→ Turn on a single LED while turning off the rest.
- swipeToRight()
/ swipeToLeft() → Create the classic Knight Rider sweep effect.
- onToRight()
/ onToLeft() → Sequentially light LEDs one by one until all are ON.
Lighting Patterns in Action
- Startup
Blink → All LEDs flash together.
- Sweep
Right → Left → Right → Left → Classic Knight Rider motion.
- Sequential
Fill → LEDs turn ON one by one until all are lit.
- Full
Blink → All LEDs flash together multiple times.
Full Code:
//This is the Full Code for Knight Rider Project, just uploaded
it to Arduino Nano
int LED_1 = 3;
int LED_2 = 2;
int LED_3 = 5;
int LED_4 = 4;
int LED_5 = 6;
int LED_6 = 7;
int LED_7 = 9;
int LED_8 = 8;
int LED_9 = 10;
int LED_10 = 12;
int LED_11 = 11;
void setup() {
// put your setup code here, to run once:
pinMode(LED_1, OUTPUT);
pinMode(LED_2, OUTPUT);
pinMode(LED_3, OUTPUT);
pinMode(LED_4, OUTPUT);
pinMode(LED_5, OUTPUT);
pinMode(LED_6, OUTPUT);
pinMode(LED_7, OUTPUT);
pinMode(LED_8, OUTPUT);
pinMode(LED_9, OUTPUT);
pinMode(LED_10, OUTPUT);
pinMode(LED_11, OUTPUT);
//To make all LEDs Low at start up
digitalWrite(LED_1, LOW);
digitalWrite(LED_2, LOW);
digitalWrite(LED_3, LOW);
digitalWrite(LED_4, LOW);
digitalWrite(LED_5, LOW);
digitalWrite(LED_6, LOW);
digitalWrite(LED_7, LOW);
digitalWrite(LED_8, LOW);
digitalWrite(LED_9, LOW);
digitalWrite(LED_10, LOW);
digitalWrite(LED_11, LOW);
for(int i= 0; i<5; i++){
allLedOn();
delay(100);
allLedOff();
delay(100);
}
}
void loop() {
// put your main code here, to run repeatedly:
swipeToRight(50);
swipeToLeft(50);
swipeToRight(50);
swipeToLeft(50);
allLedOff();
onToRight(100);
allLedOff();
onToLeft(100);
allLedOff();
onToRight(100);
allLedOff();
onToLeft(100);
for(int i= 0; i<5; i++){
allLedOn();
delay(100);
allLedOff();
delay(100);
}
}
void allLedOn(){
digitalWrite(LED_1, HIGH);
digitalWrite(LED_2, HIGH);
digitalWrite(LED_3, HIGH);
digitalWrite(LED_4, HIGH);
digitalWrite(LED_5, HIGH);
digitalWrite(LED_6, HIGH);
digitalWrite(LED_7, HIGH);
digitalWrite(LED_8, HIGH);
digitalWrite(LED_9, HIGH);
digitalWrite(LED_10, HIGH);
digitalWrite(LED_11, HIGH);
}
void allLedOff(){
digitalWrite(LED_1, LOW);
digitalWrite(LED_2, LOW);
digitalWrite(LED_3, LOW);
digitalWrite(LED_4, LOW);
digitalWrite(LED_5, LOW);
digitalWrite(LED_6, LOW);
digitalWrite(LED_7, LOW);
digitalWrite(LED_8, LOW);
digitalWrite(LED_9, LOW);
digitalWrite(LED_10, LOW);
digitalWrite(LED_11, LOW);
}
void led1On(){
digitalWrite(LED_1, HIGH);
digitalWrite(LED_2, LOW);
digitalWrite(LED_3, LOW);
digitalWrite(LED_4, LOW);
digitalWrite(LED_5, LOW);
digitalWrite(LED_6, LOW);
digitalWrite(LED_7, LOW);
digitalWrite(LED_8, LOW);
digitalWrite(LED_9, LOW);
digitalWrite(LED_10, LOW);
digitalWrite(LED_11, LOW);
}
void led2On(){
digitalWrite(LED_1, LOW);
digitalWrite(LED_2, HIGH);
digitalWrite(LED_3, LOW);
digitalWrite(LED_4, LOW);
digitalWrite(LED_5, LOW);
digitalWrite(LED_6, LOW);
digitalWrite(LED_7, LOW);
digitalWrite(LED_8, LOW);
digitalWrite(LED_9, LOW);
digitalWrite(LED_10, LOW);
digitalWrite(LED_11, LOW);
}
void led3On(){
digitalWrite(LED_1, LOW);
digitalWrite(LED_2, LOW);
digitalWrite(LED_3, HIGH);
digitalWrite(LED_4, LOW);
digitalWrite(LED_5, LOW);
digitalWrite(LED_6, LOW);
digitalWrite(LED_7, LOW);
digitalWrite(LED_8, LOW);
digitalWrite(LED_9, LOW);
digitalWrite(LED_10, LOW);
digitalWrite(LED_11, LOW);
}
void led4On(){
digitalWrite(LED_1, LOW);
digitalWrite(LED_2, LOW);
digitalWrite(LED_3, LOW);
digitalWrite(LED_4, HIGH);
digitalWrite(LED_5, LOW);
digitalWrite(LED_6, LOW);
digitalWrite(LED_7, LOW);
digitalWrite(LED_8, LOW);
digitalWrite(LED_9, LOW);
digitalWrite(LED_10, LOW);
digitalWrite(LED_11, LOW);
}
void led5On(){
digitalWrite(LED_1, LOW);
digitalWrite(LED_2, LOW);
digitalWrite(LED_3, LOW);
digitalWrite(LED_4, LOW);
digitalWrite(LED_5, HIGH);
digitalWrite(LED_6, LOW);
digitalWrite(LED_7, LOW);
digitalWrite(LED_8, LOW);
digitalWrite(LED_9, LOW);
digitalWrite(LED_10, LOW);
digitalWrite(LED_11, LOW);
}
void led6On(){
digitalWrite(LED_1, LOW);
digitalWrite(LED_2, LOW);
digitalWrite(LED_3, LOW);
digitalWrite(LED_4, LOW);
digitalWrite(LED_5, LOW);
digitalWrite(LED_6, HIGH);
digitalWrite(LED_7, LOW);
digitalWrite(LED_8, LOW);
digitalWrite(LED_9, LOW);
digitalWrite(LED_10, LOW);
digitalWrite(LED_11, LOW);
}
void led7On(){
digitalWrite(LED_1, LOW);
digitalWrite(LED_2, LOW);
digitalWrite(LED_3, LOW);
digitalWrite(LED_4, LOW);
digitalWrite(LED_5, LOW);
digitalWrite(LED_6, LOW);
digitalWrite(LED_7, HIGH);
digitalWrite(LED_8, LOW);
digitalWrite(LED_9, LOW);
digitalWrite(LED_10, LOW);
digitalWrite(LED_11, LOW);
}
void led8On(){
digitalWrite(LED_1, LOW);
digitalWrite(LED_2, LOW);
digitalWrite(LED_3, LOW);
digitalWrite(LED_4, LOW);
digitalWrite(LED_5, LOW);
digitalWrite(LED_6, LOW);
digitalWrite(LED_7, LOW);
digitalWrite(LED_8, HIGH);
digitalWrite(LED_9, LOW);
digitalWrite(LED_10, LOW);
digitalWrite(LED_11, LOW);
}
void led9On(){
digitalWrite(LED_1, LOW);
digitalWrite(LED_2, LOW);
digitalWrite(LED_3, LOW);
digitalWrite(LED_4, LOW);
digitalWrite(LED_5, LOW);
digitalWrite(LED_6, LOW);
digitalWrite(LED_7, LOW);
digitalWrite(LED_8, LOW);
digitalWrite(LED_9, HIGH);
digitalWrite(LED_10, LOW);
digitalWrite(LED_11, LOW);
}
void led10On(){
digitalWrite(LED_1, LOW);
digitalWrite(LED_2, LOW);
digitalWrite(LED_3, LOW);
digitalWrite(LED_4, LOW);
digitalWrite(LED_5, LOW);
digitalWrite(LED_6, LOW);
digitalWrite(LED_7, LOW);
digitalWrite(LED_8, LOW);
digitalWrite(LED_9, LOW);
digitalWrite(LED_10, HIGH);
digitalWrite(LED_11, LOW);
}
void led11On(){
digitalWrite(LED_1, LOW);
digitalWrite(LED_2, LOW);
digitalWrite(LED_3, LOW);
digitalWrite(LED_4, LOW);
digitalWrite(LED_5, LOW);
digitalWrite(LED_6, LOW);
digitalWrite(LED_7, LOW);
digitalWrite(LED_8, LOW);
digitalWrite(LED_9, LOW);
digitalWrite(LED_10, LOW);
digitalWrite(LED_11, HIGH);
}
void swipeToRight(int delayTime){
led1On();
delay(delayTime);
led2On();
delay(delayTime);
led3On();
delay(delayTime);
led4On();
delay(delayTime);
led5On();
delay(delayTime);
led6On();
delay(delayTime);
led7On();
delay(delayTime);
led8On();
delay(delayTime);
led9On();
delay(delayTime);
led10On();
delay(delayTime);
led11On();
delay(delayTime);
}
void swipeToLeft(int delayTime){
led11On();
delay(delayTime);
led10On();
delay(delayTime);
led9On();
delay(delayTime);
led8On();
delay(delayTime);
led7On();
delay(delayTime);
led6On();
delay(delayTime);
led5On();
delay(delayTime);
led4On();
delay(delayTime);
led3On();
delay(delayTime);
led2On();
delay(delayTime);
led1On();
delay(delayTime);
}
//in this function LEDs get ON one by one from 1 to 11
void onToRight(int delayTime){
digitalWrite(LED_1, HIGH);
delay(delayTime);
digitalWrite(LED_2, HIGH);
delay(delayTime);
digitalWrite(LED_3, HIGH);
delay(delayTime);
digitalWrite(LED_4, HIGH);
delay(delayTime);
digitalWrite(LED_5, HIGH);
delay(delayTime);
digitalWrite(LED_6, HIGH);
delay(delayTime);
digitalWrite(LED_7, HIGH);
delay(delayTime);
digitalWrite(LED_8, HIGH);
delay(delayTime);
digitalWrite(LED_9, HIGH);
delay(delayTime);
digitalWrite(LED_10, HIGH);
delay(delayTime);
digitalWrite(LED_11, HIGH);
}
void onToLeft(int delayTime){
digitalWrite(LED_11, HIGH);
delay(delayTime);
digitalWrite(LED_10, HIGH);
delay(delayTime);
digitalWrite(LED_9, HIGH);
delay(delayTime);
digitalWrite(LED_8, HIGH);
delay(delayTime);
digitalWrite(LED_7, HIGH);
delay(delayTime);
digitalWrite(LED_6, HIGH);
delay(delayTime);
digitalWrite(LED_5, HIGH);
delay(delayTime);
digitalWrite(LED_4, HIGH);
delay(delayTime);
digitalWrite(LED_3, HIGH);
delay(delayTime);
digitalWrite(LED_2, HIGH);
delay(delayTime);
digitalWrite(LED_1, HIGH);
}
Pattern Ideas
You can create multiple Knight Rider patterns by controlling
the LEDs in different sequences. Here are a few examples:
- Classic
Sweep LEDs light up one by one from left to right, then reverse.
- Bounce
Effect LEDs move back and forth with a fading trail.
- Center-Out
Start from the middle LED and expand outward symmetrically.
- Alternate
Blink Odd and even LEDs blink alternately for a strobe effect.
- Wave
Motion LEDs light up in groups of 3, shifting across the strip.
Finishing Touch
Once wired and programmed, you’ll see your 11 red LEDs
sweeping like Knight Rider’s scanner. Experiment with different delays,
brightness levels (using analogWrite on PWM pins), and custom sequences to make
your project unique.
