Skip to content

Instantly share code, notes, and snippets.

@tecnocat
Created March 22, 2016 18:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tecnocat/6c4163dbf9d44f443078 to your computer and use it in GitHub Desktop.
Save tecnocat/6c4163dbf9d44f443078 to your computer and use it in GitHub Desktop.
Arduino KnightRider effect more realistic and accurate with 8 Leds and 1 Pot
/**
* I recently buy my first Arduino board, and looking for something to build I found
* in the Arduino tutorials page a funny KnightRider effect with some leds, I really
* love more realistic and accuracy things so... I build this more accurate effect
* in the memory of our lovely Michael Knight and KIT!
*/
// PWM Pins
const int L1 = 2;
const int L2 = 3;
const int L3 = 4;
const int L4 = 5;
const int L5 = 6;
const int L6 = 7;
const int L7 = 8;
const int L8 = 9;
// 10K Pot
const int POT = A0;
// Leds with R220 Ohms
int leds[] = {L1, L2, L3, L4, L5, L6, L7, L8};
int bright;
int timer = 10;
int l;
void setup()
{
pinMode(L1, OUTPUT);
pinMode(L2, OUTPUT);
pinMode(L3, OUTPUT);
pinMode(L4, OUTPUT);
pinMode(L5, OUTPUT);
pinMode(L6, OUTPUT);
pinMode(L7, OUTPUT);
pinMode(L8, OUTPUT);
}
void loop()
{
bright = map(analogRead(POT), 0, 1023, 0, 255);
l = 0;
analogWrite(leds[l], bright);
delay(timer + bright);
analogWrite(leds[l + 1], bright);
delay(timer + bright);
for (l = 0; l < 6; l++)
{
analogWrite(leds[l], bright);
delay(timer);
analogWrite(leds[l + 1], bright);
delay(timer);
analogWrite(leds[l + 2], bright);
delay(timer);
for (int i = bright; i >= 0; i--)
{
analogWrite(leds[l], i);
delay(timer / 10);
}
}
for (int i = bright; i >= 0; i--)
{
analogWrite(leds[l], i);
delay(timer / 10);
}
l = 7;
analogWrite(leds[l], bright);
delay(timer + bright);
analogWrite(leds[l - 1], bright);
delay(timer + bright);
for (l = 7; l > 1; l--)
{
analogWrite(leds[l], bright);
delay(timer);
analogWrite(leds[l - 1], bright);
delay(timer);
analogWrite(leds[l - 2], bright);
delay(timer);
for (int i = bright; i >= 0; i--)
{
analogWrite(leds[l], i);
delay(timer / 10);
}
}
for (int i = bright; i >= 0; i--)
{
analogWrite(leds[l], i);
delay(timer / 10);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment