Skip to content

Instantly share code, notes, and snippets.

@rasschaert
Last active December 17, 2015 19:19
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 rasschaert/5659429 to your computer and use it in GitHub Desktop.
Save rasschaert/5659429 to your computer and use it in GitHub Desktop.
Cylon Centurion / KITT

Cylon Centurion / KITT in Arduino

About

This Arduino sketch controls a series of ten leds similar to the visor of a Cylon Centurion or Knight Rider's car, KITT. Pressing the button cycles through different speed settings.

Cylon KITT

The circuitry on a breadboard

The ten leds are connected to digital pins 1 through 10 and each have a 220Ω resistor. The button has a 10KΩ pull-down resistor. Breadboard

Dependencies

I use the excellent Bounce library to debounce the button.

#include <Bounce.h>
const int ledOne = 1;
const int ledTwo = 2;
const int ledThree = 3;
const int ledFour = 4;
const int ledFive = 5;
const int ledSix = 6;
const int ledSeven = 7;
const int ledEight = 8;
const int ledNine = 9;
const int ledTen = 10;
const int button = 11;
int delayTime = 300;
long lastMillis;
long currentMillis;
Bounce bouncer = Bounce(button,5);
void setup() {
pinMode(ledOne, OUTPUT);
pinMode(ledTwo, OUTPUT);
pinMode(ledThree, OUTPUT);
pinMode(ledFour, OUTPUT);
pinMode(ledFive, OUTPUT);
pinMode(ledSix, OUTPUT);
pinMode(ledSeven, OUTPUT);
pinMode(ledEight, OUTPUT);
pinMode(ledNine, OUTPUT);
pinMode(ledTen, OUTPUT);
pinMode(button, INPUT);
lastMillis = millis();
}
void adjustDelayTime(){
bouncer.update();
if (bouncer.risingEdge()) {
delayTime = delayTime - 100;
if (delayTime <= 0) delayTime = 300;
}
}
void delayUsingMillis() {
currentMillis = millis();
while ((currentMillis - lastMillis) < delayTime) {
currentMillis = millis();
adjustDelayTime();
}
lastMillis = millis();
}
void loop() {
digitalWrite(ledOne, HIGH);
delayUsingMillis();
digitalWrite(ledOne, LOW);
digitalWrite(ledTwo, HIGH);
delayUsingMillis();
digitalWrite(ledTwo, LOW);
digitalWrite(ledThree, HIGH);
delayUsingMillis();
digitalWrite(ledThree, LOW);
digitalWrite(ledFour, HIGH);
delayUsingMillis();
digitalWrite(ledFour, LOW);
digitalWrite(ledFive, HIGH);
delayUsingMillis();
digitalWrite(ledFive, LOW);
digitalWrite(ledSix, HIGH);
delayUsingMillis();
digitalWrite(ledSix, LOW);
digitalWrite(ledSeven, HIGH);
delayUsingMillis();
digitalWrite(ledSeven, LOW);
digitalWrite(ledEight, HIGH);
delayUsingMillis();
digitalWrite(ledEight, LOW);
digitalWrite(ledNine, HIGH);
delayUsingMillis();
digitalWrite(ledNine, LOW);
digitalWrite(ledTen, HIGH);
delayUsingMillis();
digitalWrite(ledTen, LOW);
digitalWrite(ledNine, HIGH);
delayUsingMillis();
digitalWrite(ledNine, LOW);
digitalWrite(ledEight, HIGH);
delayUsingMillis();
digitalWrite(ledEight, LOW);
digitalWrite(ledSeven, HIGH);
delayUsingMillis();
digitalWrite(ledSeven, LOW);
digitalWrite(ledSix, HIGH);
delayUsingMillis();
digitalWrite(ledSix, LOW);
digitalWrite(ledFive, HIGH);
delayUsingMillis();
digitalWrite(ledFive, LOW);
digitalWrite(ledFour, HIGH);
delayUsingMillis();
digitalWrite(ledFour, LOW);
digitalWrite(ledThree, HIGH);
delayUsingMillis();
digitalWrite(ledThree, LOW);
digitalWrite(ledTwo, HIGH);
delayUsingMillis();
digitalWrite(ledTwo, LOW);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment