Sunday, March 7, 2010

LED Binary 60 Seconds Project

For my LED project, i intend to create a binary representation of the seconds of a clock. This will be done by using seven LEDs, set up in two parallel lines -- one line of three, and one line of four. The first line of three LEDs represent the first digit, and the second line of four LEDs represent the second digit. Each LED represents a binary value; starting at the bottom the values are 1, 2, 4 & 8.

Layout:

This is the program i wrote for the project, which shows the sequence of the LEDs turning on:

int ledPin2 = 2;
int ledPin3 = 3;
int ledPin4 = 4;
int ledPin5 = 5;
int ledPin6 = 6;
int ledPin7 = 7;
int ledPin8 = 8;
int del = 970;

void setup() {
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
pinMode(ledPin4, OUTPUT);
pinMode(ledPin5, OUTPUT);
pinMode(ledPin6, OUTPUT);
pinMode(ledPin7, OUTPUT);
pinMode(ledPin8, OUTPUT);
}

void loop()
{

digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
digitalWrite(ledPin5, LOW);
digitalWrite(ledPin6, LOW);
digitalWrite(ledPin7, LOW);
digitalWrite(ledPin8, LOW);
delay(del);

digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
digitalWrite(ledPin5, HIGH);
digitalWrite(ledPin6, LOW);
digitalWrite(ledPin7, LOW);
digitalWrite(ledPin8, LOW);
delay(del);

digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, HIGH);
digitalWrite(ledPin5, LOW);
digitalWrite(ledPin6, LOW);
digitalWrite(ledPin7, LOW);
digitalWrite(ledPin8, LOW);
delay(del);

digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, HIGH);
digitalWrite(ledPin5, HIGH);
digitalWrite(ledPin6, LOW);
digitalWrite(ledPin7, LOW);
digitalWrite(ledPin8, LOW);
delay(del);

digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, HIGH);
digitalWrite(ledPin4, LOW);
digitalWrite(ledPin5, LOW);
digitalWrite(ledPin6, LOW);
digitalWrite(ledPin7, LOW);
digitalWrite(ledPin8, LOW);
delay(del);

digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, HIGH);
digitalWrite(ledPin4, LOW);
digitalWrite(ledPin5, HIGH);
digitalWrite(ledPin6, LOW);
digitalWrite(ledPin7, LOW);
digitalWrite(ledPin8, LOW);
delay(del);

digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, HIGH);
digitalWrite(ledPin4, HIGH);
digitalWrite(ledPin5, LOW);
digitalWrite(ledPin6, LOW);
digitalWrite(ledPin7, LOW);
digitalWrite(ledPin8, LOW);
delay(del);

digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, HIGH);
digitalWrite(ledPin4, HIGH);
digitalWrite(ledPin5, HIGH);
digitalWrite(ledPin6, LOW);
digitalWrite(ledPin7, LOW);
digitalWrite(ledPin8, LOW);
delay(del);

digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
digitalWrite(ledPin5, LOW);
digitalWrite(ledPin6, LOW);
digitalWrite(ledPin7, LOW);
digitalWrite(ledPin8, LOW);
delay(del);

digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
digitalWrite(ledPin5, HIGH);
digitalWrite(ledPin6, LOW);
digitalWrite(ledPin7, LOW);
digitalWrite(ledPin8, LOW);
delay(del);

digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
digitalWrite(ledPin5, LOW);
digitalWrite(ledPin6, LOW);
digitalWrite(ledPin7, LOW);
digitalWrite(ledPin8, HIGH);
delay(del);

...

}

Videos:






3 comments:

  1. Hi Tim :-)

    Thank you for the video. Much appreciated!

    ReplyDelete
  2. Hi Tim

    It's a bit late, i spose, but in return for the video, i've been thinking about your Clock Project software (it's been annoying me - hehe)..

    There IS a pattern, several patterns in fact;
    for numerals 1 2 3 4 5 6 7 8 9
    the LSB goes 1 0 1 0 1 0 1 0 1
    2nd LSB goes 0 1 1 0 0 1 1 0 0
    3rd LSB goes 0 0 0 1 1 1 1 0 0
    and MSB goes 0 0 0 0 0 0 0 1 1

    i've been mucking about with multiple
    if-conditions & stuff like
    mod (%)
    & i think i've made some progress but i haven't cracked it yet.. :-)

    ReplyDelete
  3. Here's a bit of code for Clock pin1

    int pinVal = 1;
    // pinVal = 1/0, == HIGH/LOW
    .
    .
    .
    if (pinVal == 1)
    //if LED is ON..
    pinVal = 0; //..turn it OFF..
    else
    //..or if LED is OFF..
    pinVal = 1; //..turn it ON
    //now write to on-board LED
    digitalWrite(ledPin, pinVal);
    delay(50);

    ReplyDelete