Search In
• More options...
Find results that contain...
Find results in...

# [REL|C] Binary Clock!

## Recommended Posts

With some help, I wrote a binary clock in C.

Thie original to do it came from this image;

One I know made it. And I asked him if I could simply made it in a Console. And it turned out not to be that hard.

But you must remember, this code only works under a Linux Console. In case you know hot to move the cursor around in a DOS prompt, please tell me, and I might be able to convert it to Windows.

`#include <stdio.h>#include <time.h>#include <sys/time.h>#include <unistd.h>int main(int argc,char **argv) {unsigned char columns[6];struct tm *curtm;struct timeval curutm;int r,c;while(1) { gettimeofday(&curutm,NULL); //Get the current time curtm=localtime(&(curutm.tv_sec)); //insert into curtm columns[0] = curtm->tm_hour/10; //Get the first number of the hour in 24 system columns[1] = curtm->tm_hour%10; //Get the second number of the hour. columns[2] = curtm->tm_min/10; //First of minutes columns[3] = curtm->tm_min%10; //second of minutes columns[4] = curtm->tm_sec/10; //first of seconds columns[5] = curtm->tm_sec%10; //second of seconds for(r=0;r<4;r++) { //Since it's only going to have 4 ( 1, 2, 4, 8 ), we'll only use that 	for(c=0;c<6;c++) { //And since there is six numbers ( 11 11 11 )   if( columns[c] & (1<<(3-r)) ) //If the number in the current column is works together with the current row then return the this: **   	printf("##  ");   else //Else   	printf("--  "); 	} 	printf("\n\n"); //Go down two lines } sleep(1); //Pause a second printf("\x1b[8A"); //Move the cursor back up.}}`

** Notice, in order to understand how it works, let me tell you how a binary clock works:

For instance, here is the time 12:43:65:

`----  ----  ----  ----  ----  ----  <- 8----  ----  ##  ----  ##  ##  <- 4----  ##  ----  ##  ##  ----  <- 2##  ----  ----  ##  ----  ##  <- 1 |___|       |___|     |___| hours       mins      secs`

Then add each column. Where it would be:

1 2 4 1+2 2+4 1+4

1 2 4 3 6 5 -> 12:43:65

##### Share on other sites
Just wondering.. how do you get 65 seconds? as far as I know a minute only has 60, which means it would go up to 59..
##### Share on other sites
Just wondering.. how do you get 65 seconds? as far as I know a minute only has 60, which means it would go up to 59..

Yes, I know. But the code doesn't get to 65 though, so don't worry about that.

## Create an account

Register a new account

• ### 2 Users Currently Viewing 0 members, 0 Anonymous, 2 Guests

×

• #### Activity

×
• Create New...