Binary clock ; just set the RTC ( you can use http://mbed.org/users/roen/notebook/real-time/ ); format: hours, tens of minutes, minute units ; it uses pwm for leds in order to see leds position if not all of them are on

Dependencies:   mbed

main.cpp

Committer:
iaghici
Date:
2010-12-12
Revision:
0:0a4fa6c1adcd

File content as of revision 0:0a4fa6c1adcd:

#include "mbed.h"
#include <stdio.h>

PwmOut led1(LED4);
PwmOut led2(LED3);
PwmOut led3(LED2);
PwmOut led4(LED1);

void ledoff(void)
 { wait(0.6); led4=0.0; led3=0.0; led2=0.0; led1=0.0; wait(0.2); }

void ledon(void)
 { led4=0.05; led3=0.05; led2=0.05; led1=0.05; }
 
int main()
{
 float minf;
 int ora,min;
 char buffer[5];
while (1)
 {
   time_t seconds = time(NULL);
   strftime(buffer, 5, "%I %M", localtime(&seconds));
   sscanf (buffer,"%d %d",&ora, &min);

   ledon();
   if (ora>=8) { led4=0.9 ; ora=ora-8; }
   if (ora>=4) { led3=0.9 ; ora=ora-4; }
   if (ora>=2) { led2=0.9 ; ora=ora-4; }
   if (ora>=1) { led1=0.9 ; ora=ora-1; }
   
   ledoff();
   ledon();
            
   if ((min>=10) & (min<20)) { led1=0.9; }
   if ((min>=20) & (min<30)) { led2=0.9; }
   if ((min>=30) & (min<40)) { led1=0.9 ; led2=0.9; }    
   if ((min>=40) & (min<50)) { led3=0.9; }
   if ((min>=50) & (min<60)) { led3=0.9; led1=0.9; }
    
   ledoff();
   ledon();
            
   minf=fmod(min,10.0);
   if (minf==1) led1=0.9;
   if (minf==2) led2=0.9;
   if (minf==3) { led1=0.9; led2=0.9; }
   if (minf==4) led3=0.9;
   if (minf==5) { led1=0.9; led3=0.9; }
   if (minf==6) { led2=0.9; led3=0.9; }
   if (minf==7) { led1=0.9; led2=0.9; led3=0.9; }
   if (minf==8) led4=0.9;
   if (minf==9) { led1=0.9; led4=0.9; }

   ledoff();
   wait(0.3);

 }
}