Showing posts with label LED Project. Show all posts
Showing posts with label LED Project. Show all posts

Saturday, April 17, 2010

LED Binary 60 Seconds 2.0 - refined code

I have done some research and have  found a much simpler yet more complex code to out put exactly the same pattern with seven LEDs.

Here is the new code:

const int nbr10SecBits = 3;  //10 seconds' number of pins.
const int first10SecPin = 2;  //First 10 seconds pin.

const int nbr1SecBits = 4;  //1 seconds' number of pins.
const int first1SecPin = 8;  //First 1 seconds pin.

// macros from DateTime.h
/* Useful Constants */
#define SECS_PER_MIN  (60UL)
#define SECS_PER_HOUR (3600UL)
#define SECS_PER_DAY  (SECS_PER_HOUR * 24L)

/* Useful Macros for getting elapsed time */
#define numberOfSeconds(_time_) (_time_ % SECS_PER_MIN) 
#define numberOfMinutes(_time_) ((_time_ / SECS_PER_MIN) % SECS_PER_MIN)
#define numberOfHours(_time_) (( _time_% SECS_PER_DAY) / SECS_PER_HOUR)
#define elapsedDays(_time_) ( _time_ / SECS_PER_DAY)

void setup()
{
  Serial.begin(9600);
  for(int i=0; i < nbr10SecBits; i++)
    pinMode(i+first10SecPin, OUTPUT);
  for(int i=0; i < nbr1SecBits; i++)
    pinMode(i+first1SecPin, OUTPUT);   
}

void loop()
{
  unsigned long time = millis() / 1000;
  int tenSeconds = ((numberOfSeconds(time) - (numberOfSeconds(time) % 10))/ 10);
  int oneSeconds = numberOfSeconds(time) % 10 ;

  showBinary(tenSeconds,nbr10SecBits,first10SecPin);
  showBinary(oneSeconds,nbr1SecBits,first1SecPin);
 
  Serial.print(numberOfSeconds(time));
  Serial.print(tenSeconds);
  Serial.print(oneSeconds);
  Serial.println();
  delay(1000);
}

// this function sets the pins starting from firstPin to the binary value of the given number
void showBinary( int number, int nbrPins, int firstPin)
{
  for(int bit=0; bit < nbrPins; bit++)
  {
    boolean isBitSet =  bitRead(number, bit); // isBitSet will be true if given bit is set in this channel
    digitalWrite(bit + firstPin, isBitSet);
  } 
}

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: