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
Diff: main.cpp
- Revision:
- 4:a61cdd4e7afa
- Parent:
- 3:dc88b52d526c
- Child:
- 5:60262753a05f
--- a/main.cpp Sat Dec 05 16:43:40 2015 +0000
+++ b/main.cpp Sat Dec 05 19:01:26 2015 +0000
@@ -1,13 +1,17 @@
#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();
@@ -18,62 +22,129 @@
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(b==0b011){n=1;}
- else if(b==0b101){n=2;}
- else if(b==0b110){n=3;}
- else n=0;
- display.getButtonState(n);
- if(display.checkButton1()==1){led=0b100;mode=1;}
- else if(display.checkButton2()==1){led=0b010;mode=2;}
- else if(display.checkButton3()==1){led=0b001;mode=3;}
+ {
+ 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);
- wait_ms(100);
-
- //printf("%d\n",mode);
-
- wait_ms(100);
-
- if(display.checkButton3()==1)
+ 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)
{
- p++;
- if(p==10){p=0;}
- printf("%d\n",p);
- if(p%2==0){opt=1;}
- if(p%2==1){opt=2;}
+ //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;
+ }
}
- 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){buzzer=1;}
- else{buzzer=0;}
-
printf("%f\n",mea);
if(mea>=0.65){min_a=min_a+1;}
