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: N5110 SoftPWM mbed
Revision 1:12803d645d32, committed 2016-03-07
- Comitter:
- Nikollao
- Date:
- Mon Mar 07 12:09:22 2016 +0000
- Parent:
- 0:2d0f77943105
- Child:
- 2:af5b5d42e835
- Commit message:
- good progress! keep working on obstacles!
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Mon Mar 07 09:38:00 2016 +0000
+++ b/main.cpp Mon Mar 07 12:09:22 2016 +0000
@@ -7,12 +7,13 @@
#define DIRECTION_TOLERANCE 0.05
-DigitalIn button(PTB2);
+InterruptIn button(PTB2);
AnalogIn xPot(PTB3);
AnalogIn yPot(PTB10);
Ticker ticker;
-Ticker game_timer;
+Ticker game_ticker;
+Timeout timeout;
DigitalOut r_led(LED_RED);
DigitalOut g_led(LED_GREEN);
@@ -28,15 +29,18 @@
LEFT,
RIGHT,
CENTRE,
- UNKNOWN
+ UP_LEFT,
+ UP_RIGHT,
+ DOWN_LEFT,
+ DOWN_RIGHT
};
typedef struct JoyStick Joystick;
struct JoyStick {
- float x; // current x value
- float x0; // 'centred' x value
- float y; // current y value
- float y0; // 'centred' y value
+ double x; // current x value
+ double x0; // 'centred' x value
+ double y; // current y value
+ double y0; // 'centred' y value
int button; // button state (assume pull-down used, so 1 = pressed, 0 = unpressed)
DirectionName direction; // current direction
};
@@ -58,6 +62,8 @@
volatile int g_timer_flag = 0;
volatile int g_game_timer_flag = 0;
volatile int g_sw2_flag = 0;
+volatile int g_sw3_flag = 0;
+volatile int g_button_flag = 0;
void error();
// setup serial port
@@ -68,6 +74,10 @@
void timer_isr();
void game_timer_isr();
void sw2_isr();
+void sw3_isr();
+void button_isr();
+void timeout_isr();
+
void calibrateJoystick();
void updateJoystick();
@@ -86,6 +96,8 @@
init_K64F();
init_serial();
sw2.fall(&sw2_isr);
+ button.fall(&button_isr);
+ sw3.fall(&sw3_isr);
init_game();
calibrateJoystick();
@@ -147,10 +159,17 @@
pc.printf(" RIGHT\n");
if (joystick.direction == CENTRE)
pc.printf(" CENTRE\n");
- if (joystick.direction == UNKNOWN)
- pc.printf(" Unsupported direction\n");
+ if (joystick.direction == UP_RIGHT)
+ pc.printf(" UP - RIGHT\n");
+ if (joystick.direction == UP_LEFT)
+ pc.printf(" UP - LEFT\n");
+ if (joystick.direction == DOWN_RIGHT)
+ pc.printf(" DOWN - RIGHT\n");
+ if (joystick.direction == DOWN_LEFT)
+ pc.printf(" DOWN - LEFT\n");
}
updateJoystick();
+ //callibrateJoystick();
lcd.refresh();
sleep();
}
@@ -194,6 +213,26 @@
g_sw2_flag = 1;
}
+void sw3_isr() {
+
+ g_sw3_flag = 1;
+}
+
+void button_isr()
+{
+
+ g_button_flag =1;
+}
+
+void timeout_isr()
+{
+
+ if (button) {
+
+ pc.printf("button is pressed!!!");
+ }
+}
+
void enemyRect()
{
@@ -232,12 +271,13 @@
circleY = rand() %48 + 1;
circleX = 0;
lcd.setBrightness(0.5); // put LED backlight on 50%
-
+ timeout.attach(&timeout_isr,2);
lcd.printString("Welcome to",11,1);
lcd.printString("Treasure Hunt!",1,3);
lcd.refresh();
- wait(1);
+ sleep();
lcd.clear();
+ game_ticker.attach(game_timer_isr,0.5);
while (1) {
@@ -246,6 +286,7 @@
g_game_timer_flag = 0;
updateJoystick();
lcd.clear();
+ menu();
int option = menu();
if (option == 0) {
@@ -264,12 +305,29 @@
lcd.printString("Settings",0,2);
lcd.printString("Exit <",0,4);
}
+
+ if (g_sw3_flag) {
+
+ g_sw3_flag = 0;
+
+ if (option == 0) {
+
+ pc.printf("continue!");
+ } else if (option == 1) {
+
+ pc.printf("display Settings!");
+ } else if (option == 2) {
+
+ lcd.turnOff();
+ }
+ }
}
if (g_sw2_flag) {
+
+ game_ticker.detach();
break;
}
-
- sleep();
+ sleep();
}
}
void guidance()
@@ -325,9 +383,22 @@
} else if (level == 4) {
lcd.drawRect(10 + rand() %4 - 2,15 + rand() &4 -2,2,2,1);
- lcd.drawRect(74,15,2,2,1);
- lcd.drawRect(10,28,2,2,1);
- lcd.drawRect(74,28,2,2,1);
+ lcd.drawRect(74 + rand() %4 - 2,15 + rand() %4 - 2,2,2,1);
+ lcd.drawRect(10 + rand() %4 - 2,28 + rand() %4 - 2,2,2,1);
+ lcd.drawRect(74 + rand() %4 - 2,28 + rand() %4 - 2,2,2,1);
+ lcd.drawRect(30 + rand() %4 - 2,15,2,2,1);
+ lcd.drawRect(54,15 + rand() %4 - 2,2,2,1);
+ lcd.drawRect(30,28 + rand() %4 - 2,2,2,1);
+ lcd.drawRect(54 + rand() %4 - 2,28,2,2,1);
+ }else if ( level == 5) {
+
+ lcd.drawLine(50,35,65,35,1);
+ lcd.drawLine(38,30,28,30,1);
+ lcd.drawLine(60,25,70,25,1);
+ lcd.drawLine(28,25,18,25,1);
+ lcd.drawLine(70,20,80,20,1);
+ lcd.drawLine(18,20,8,20,1);
+
}
}
@@ -358,8 +429,14 @@
joystick.direction = RIGHT;
} else if ( joystick.x < DIRECTION_TOLERANCE && fabs(joystick.y) < DIRECTION_TOLERANCE) {
joystick.direction = LEFT;
- } else {
- joystick.direction = UNKNOWN;
+ } else if (joystick.y > DIRECTION_TOLERANCE && joystick.x < DIRECTION_TOLERANCE) {
+ joystick.direction = UP_LEFT;
+ } else if (joystick.y > DIRECTION_TOLERANCE && joystick.x > DIRECTION_TOLERANCE) {
+ joystick.direction = UP_RIGHT;
+ } else if (joystick.y < DIRECTION_TOLERANCE && joystick.x < DIRECTION_TOLERANCE) {
+ joystick.direction = DOWN_LEFT;
+ } else if (joystick.y < DIRECTION_TOLERANCE && joystick.x > DIRECTION_TOLERANCE) {
+ joystick.direction = DOWN_RIGHT;
}
}