ELEC2645 (2018/19) / Mbed 2 deprecated el16y2m

Dependencies:   mbed

Committer:
MYY
Date:
Sun Apr 21 00:38:13 2019 +0000
Revision:
5:fe1f5b231446
Parent:
4:b52a0d2925df
Child:
6:7d0e05c39c22
Finally we can fetch a gold/rock and make it disappear and never be detected again. The job remain is to set a logic to decide whether we win or not and add other levels.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MYY 0:4ada39fe4ffc 1 #include "mbed.h"
MYY 0:4ada39fe4ffc 2 #include "Image.h"
MYY 0:4ada39fe4ffc 3 #include "Rotate.h"
MYY 1:7a3eed610fea 4 #include "Release.h"
MYY 5:fe1f5b231446 5 #include "Global_my.h"
MYY 0:4ada39fe4ffc 6 #include "Gamepad.h"
MYY 0:4ada39fe4ffc 7 #define PI 3.1415
MYY 0:4ada39fe4ffc 8
MYY 0:4ada39fe4ffc 9 Image Image;
MYY 0:4ada39fe4ffc 10
MYY 0:4ada39fe4ffc 11 N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11);
MYY 0:4ada39fe4ffc 12
MYY 0:4ada39fe4ffc 13
MYY 0:4ada39fe4ffc 14 Rotate Rotate;
MYY 1:7a3eed610fea 15 Release Release;
MYY 4:b52a0d2925df 16 Detect detect;
MYY 0:4ada39fe4ffc 17
MYY 5:fe1f5b231446 18
MYY 0:4ada39fe4ffc 19 InterruptIn A(PTB9);
MYY 1:7a3eed610fea 20 InterruptIn B(PTD0);
MYY 0:4ada39fe4ffc 21
MYY 0:4ada39fe4ffc 22 void A_isr();
MYY 1:7a3eed610fea 23 void B_isr();
MYY 0:4ada39fe4ffc 24
MYY 0:4ada39fe4ffc 25 void init_K64F();
MYY 0:4ada39fe4ffc 26
MYY 0:4ada39fe4ffc 27 volatile int g_A_flag = 0;
MYY 1:7a3eed610fea 28 volatile int g_B_flag = 0;
MYY 0:4ada39fe4ffc 29
MYY 5:fe1f5b231446 30
MYY 0:4ada39fe4ffc 31 int main()
MYY 0:4ada39fe4ffc 32 {
MYY 0:4ada39fe4ffc 33 // first need to initialise display
MYY 0:4ada39fe4ffc 34 lcd.init();
MYY 0:4ada39fe4ffc 35 // change set contrast in range 0.0 to 1.0
MYY 0:4ada39fe4ffc 36 // 0.4 appears to be a good starting point
MYY 0:4ada39fe4ffc 37 lcd.setContrast(0.5);
MYY 1:7a3eed610fea 38
MYY 0:4ada39fe4ffc 39 A.mode(PullDown);
MYY 0:4ada39fe4ffc 40 A.rise(&A_isr);
MYY 1:7a3eed610fea 41 B.mode(PullDown);
MYY 1:7a3eed610fea 42 B.rise(&B_isr);
MYY 1:7a3eed610fea 43
MYY 0:4ada39fe4ffc 44 // since SW2 has an external pull-up, we should disable to internal pull-down
MYY 0:4ada39fe4ffc 45 // resistor that is enabled by default using InterruptIn
MYY 0:4ada39fe4ffc 46 Rotate.return_flag=1;
MYY 0:4ada39fe4ffc 47 Rotate.return_angle=PI;
MYY 0:4ada39fe4ffc 48
MYY 0:4ada39fe4ffc 49 while(1) {
MYY 0:4ada39fe4ffc 50 int detector=A.read();
MYY 0:4ada39fe4ffc 51 // these are default settings so not strictly needed
MYY 0:4ada39fe4ffc 52 lcd.normalMode(); // normal colour mode
MYY 0:4ada39fe4ffc 53 lcd.setBrightness(0.4); // put LED backlight on 50%
MYY 0:4ada39fe4ffc 54 // x origin, y origin, rows, cols, sprite
MYY 0:4ada39fe4ffc 55 if(g_A_flag) {
MYY 0:4ada39fe4ffc 56 detector=1;
MYY 0:4ada39fe4ffc 57 }
MYY 0:4ada39fe4ffc 58
MYY 1:7a3eed610fea 59 if(g_B_flag) {
MYY 1:7a3eed610fea 60 g_A_flag=0;
MYY 1:7a3eed610fea 61 detector=2;
MYY 1:7a3eed610fea 62 }
MYY 1:7a3eed610fea 63
MYY 0:4ada39fe4ffc 64 switch(detector) {
MYY 0:4ada39fe4ffc 65 case 0 :
MYY 0:4ada39fe4ffc 66 lcd.clear();
MYY 0:4ada39fe4ffc 67 lcd.printString("Misery Miner!",0,0);
MYY 0:4ada39fe4ffc 68 lcd.refresh();
MYY 0:4ada39fe4ffc 69 wait(0.1);
MYY 0:4ada39fe4ffc 70 break;
MYY 0:4ada39fe4ffc 71 case 1 :
MYY 0:4ada39fe4ffc 72 Rotate.rotate(lcd,Image, Rotate.return_angle, PI, Rotate.return_flag);
MYY 0:4ada39fe4ffc 73 //printf("f%", Rotate.return_angle);
MYY 4:b52a0d2925df 74 // int i=0;
MYY 4:b52a0d2925df 75 // i=i+1
MYY 4:b52a0d2925df 76 //int catched(i)=(n,n)
MYY 4:b52a0d2925df 77 // int ii
MYY 4:b52a0d2925df 78 //for (ii=0; ii<i; ii=ii+1)
MYY 4:b52a0d2925df 79 // draw blank(i)
MYY 4:b52a0d2925df 80 // end
MYY 0:4ada39fe4ffc 81 break;
MYY 1:7a3eed610fea 82 case 2 :
MYY 5:fe1f5b231446 83 Release.release(detect, lcd,Image, Rotate.return_angle, (int*)level_1_X, (int*)level_1_Y);
MYY 1:7a3eed610fea 84 //printf("f%", Rotate.return_angle);
MYY 1:7a3eed610fea 85 g_A_flag = 1;
MYY 1:7a3eed610fea 86 g_B_flag = 0;
MYY 1:7a3eed610fea 87 break;
MYY 0:4ada39fe4ffc 88 }
MYY 1:7a3eed610fea 89
MYY 1:7a3eed610fea 90
MYY 0:4ada39fe4ffc 91 }
MYY 0:4ada39fe4ffc 92 }
MYY 0:4ada39fe4ffc 93
MYY 0:4ada39fe4ffc 94 void A_isr()
MYY 0:4ada39fe4ffc 95 {
MYY 0:4ada39fe4ffc 96 g_A_flag = 1;
MYY 0:4ada39fe4ffc 97 }
MYY 0:4ada39fe4ffc 98
MYY 1:7a3eed610fea 99 void B_isr()
MYY 1:7a3eed610fea 100 {
MYY 1:7a3eed610fea 101 g_B_flag = 1;
MYY 1:7a3eed610fea 102 }