Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Fork of zProject_RTC_display_alarm by
main.cpp
- Committer:
- NamSom
- Date:
- 2015-12-05
- Revision:
- 4:a61cdd4e7afa
- Parent:
- 3:dc88b52d526c
- Child:
- 5:60262753a05f
File content as of revision 4:a61cdd4e7afa:
#include "mbed.h"
#include "DS1307.h"
#include "DigitDisplay.h"
#include "Game.h"
DS1307 myrtc(I2C_SDA,I2C_SCL);
DigitDisplay display(D7,D8);
Game game;
DigitalOut buzzer(D6);
BusIn b(D9,D10,D11);
BusOut led(D2,D3,D4,D5);
AnalogIn analog_value(A2);
const bool bcd[16][4] = {{0,0,0,0},{0,0,0,1},{0,0,1,0},{0,0,1,1},{0,1,0,0},{0,1,0,1},{0,1,1,0},{0,1,1,1},
{1,0,0,0},{1,0,0,1},{1,0,1,0},{1,0,1,1},{1,1,0,0},{1,1,0,1},{1,1,1,0},{1,1,1,1}};
void DisplayTime();
int mode=0;
int main()
{
b.mode(PullUp);
int sec=45,min=59,hour=6,day=7,date=5,month=12,year=15;
int n=0,opt=1,p=0,ten_hour,nu_hour,ten_min,nu_min,hour_a=7,min_a=0;
float mea;
int state=0;
int hexnum[4];
int currenthex=0, checkbcd=0, gameround=0, changehex=1;
myrtc.settime(sec,min,hour,day,date,month,year);
//DisplayTime();
//display.Displayset((hour-(hour%10))/10,hour%10,(min-(min%10))/10,min%10);
while(1)
{
mea=analog_value.read();
/*if(state==0)
{
mea=analog_value.read();
if(b==0b011){n=1;}
else if(b==0b101){n=2;}
else if(b==0b110){n=3;}
else n=0;
display.getButtonState(n);
wait_ms(100);
//printf("%d\n",mode);
wait_ms(100);
if(display.checkButton3()==1)
{
p++;
if(p==10){p=0;}
printf("%d\n",p);
if(p%2==0){opt=1;}
if(p%2==1){opt=2;}
}
myrtc.gettime(&sec,&min,&hour,&day,&date,&month,&year);
if(opt==1)
{
display.setColon(1);
display.Displayset((hour-(hour%10))/10,hour%10,(min-(min%10))/10,min%10);
}
if(opt==2)
{
ten_hour=(hour_a-(hour_a%10))/10;
nu_hour=hour_a%10;
ten_min=(min_a-(min_a%10))/10;
nu_min=min_a%10;
display.Displayset(ten_hour,nu_hour,ten_min,nu_min);
if(display.checkButton1()==1){hour_a++;}
if(display.checkButton2()==1){min_a++;}
if(hour_a==24){hour_a=0;}
if(min_a==60){min_a=0;}
}
}
if(hour==hour_a&&min==min_a)
else*/ if(mode==0)
{
//buzzer=1;
state = 1;
int gamelevel=game.getlevel();
if(changehex==1)
{
for(int i=0;i<gamelevel;i++)
{
hexnum[i] = game.randomHex(mea);
}
if(gamelevel==1) display.Displayset(0xFF,0xFF,hexnum[0],0xFF);
else if(gamelevel==2) display.Displayset(0xFF,hexnum[0],hexnum[1],0xFF);
else if(gamelevel==3) display.Displayset(0xFF,hexnum[0],hexnum[1],hexnum[2]);
else if(gamelevel==4) display.Displayset(hexnum[0],hexnum[1],hexnum[2],hexnum[3]);
changehex = 0;
}
if(b==0b011){n=1;}
else if(b==0b101){n=2;}
else if(b==0b110){n=3;}
else n=0;
display.getButtonState(n);
if((bcd[hexnum[currenthex]][checkbcd]==0 && display.checkButton1()==1)||(bcd[hexnum[currenthex]][checkbcd]==1 && display.checkButton2()==1))
{
if(checkbcd<4) checkbcd++;
else
{
checkbcd=0;
currenthex++;
if(currenthex==gamelevel)
{
gameround++;
currenthex = 0;
changehex = 1;
display.A();
}
}
}
else if((bcd[hexnum[currenthex]][checkbcd]==1 && display.checkButton1()==1)||(bcd[hexnum[currenthex]][checkbcd]==0 && display.checkButton2()==1))
{
checkbcd=0;
game.pluslevel();
changehex = 1;
display.F();
}
else if(display.checkButton3()==3)
{
checkbcd=0;
currenthex==0;
}
if(gameround==4)
{
mode=1;
state=0;
buzzer=0;
game.resetlevel();
checkbcd=0;
currenthex==0;
gameround=0;
changehex=1;
}
}
printf("%f\n",mea);
if(mea>=0.65){min_a=min_a+1;}
}
}
