Knight Rider LED Project with Arduino Nano (11 LEDs, Multiple Patterns)

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

  1. Startup Blink → All LEDs flash together.
  2. Sweep Right → Left → Right → Left → Classic Knight Rider motion.
  3. Sequential Fill → LEDs turn ON one by one until all are lit.
  4. 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:

  1. Classic Sweep LEDs light up one by one from left to right, then reverse.
  2. Bounce Effect LEDs move back and forth with a fading trail.
  3. Center-Out Start from the middle LED and expand outward symmetrically.
  4. Alternate Blink Odd and even LEDs blink alternately for a strobe effect.
  5. 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.