pong game added to the main sketch
Dependencies: RTC-DS1307 SPI_TFT_ILI9341 TFT_fonts mbed tsi_sensor
Fork of MainSketch by
poll.h@10:9d9b3b9b28b8, 2017-05-24 (annotated)
- Committer:
- mlin
- Date:
- Wed May 24 11:21:37 2017 +0000
- Revision:
- 10:9d9b3b9b28b8
- Child:
- 11:1da15361a35b
Working Render of states
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mlin | 10:9d9b3b9b28b8 | 1 | #include "stdio.h" |
mlin | 10:9d9b3b9b28b8 | 2 | |
mlin | 10:9d9b3b9b28b8 | 3 | #include "SPI_TFT_ILI9341.h" |
mlin | 10:9d9b3b9b28b8 | 4 | |
mlin | 10:9d9b3b9b28b8 | 5 | |
mlin | 10:9d9b3b9b28b8 | 6 | |
mlin | 10:9d9b3b9b28b8 | 7 | |
mlin | 10:9d9b3b9b28b8 | 8 | |
mlin | 10:9d9b3b9b28b8 | 9 | |
mlin | 10:9d9b3b9b28b8 | 10 | // example to test the TFT Display from Mikroelectronika |
mlin | 10:9d9b3b9b28b8 | 11 | |
mlin | 10:9d9b3b9b28b8 | 12 | |
mlin | 10:9d9b3b9b28b8 | 13 | |
mlin | 10:9d9b3b9b28b8 | 14 | // the display has a backlight switch on board |
mlin | 10:9d9b3b9b28b8 | 15 | //DigitalOut LCD_LED(PTA4); // may not be needed on mikroelectronika board |
mlin | 10:9d9b3b9b28b8 | 16 | //DigitalOut pwr(PTD7); // ditto |
mlin | 10:9d9b3b9b28b8 | 17 | |
mlin | 10:9d9b3b9b28b8 | 18 | // the TFT is connected to SPI pin 5-7 |
mlin | 10:9d9b3b9b28b8 | 19 | //SPI_TFT_ILI9341 TFT(p5, p6, p7, p8, p9, p10,"TFT"); // mosi, miso, sclk, cs, reset, dc for lpc1768 |
mlin | 10:9d9b3b9b28b8 | 20 | SPI_TFT_ILI9341 TFT(PTD6, PTD7, PTD5, PTD2, PTD4, PTA13, "TFT"); // mosi, miso, sclk, cs, reset, dc for frdmkl25z |
mlin | 10:9d9b3b9b28b8 | 21 | //NB better combination to use a coherent 2x4 block for lcd |
mlin | 10:9d9b3b9b28b8 | 22 | // SPI_TFT_ILI9341 TFT(PTD2, PTD3, PTD1, PTA16, PTA17, PTC16,"TFT"); // mosi, miso, sclk, cs, reset, dc for frdmkl25z |
mlin | 10:9d9b3b9b28b8 | 23 | // DigitalOut LCD_LED(PTC17); |
mlin | 10:9d9b3b9b28b8 | 24 | int touching = 0; |
mlin | 10:9d9b3b9b28b8 | 25 | |
mlin | 10:9d9b3b9b28b8 | 26 | // Subroutine to read the x location of the touch point |
mlin | 10:9d9b3b9b28b8 | 27 | // need to set x+ to 3V and ground x- then read analogue voltage on ym |
mlin | 10:9d9b3b9b28b8 | 28 | //nb need to add a check for actual touch as opposed to random crap |
mlin | 10:9d9b3b9b28b8 | 29 | |
mlin | 10:9d9b3b9b28b8 | 30 | |
mlin | 10:9d9b3b9b28b8 | 31 | |
mlin | 10:9d9b3b9b28b8 | 32 | |
mlin | 10:9d9b3b9b28b8 | 33 | |
mlin | 10:9d9b3b9b28b8 | 34 | int readX() |
mlin | 10:9d9b3b9b28b8 | 35 | { |
mlin | 10:9d9b3b9b28b8 | 36 | int delta = 0, xv1 = 0, xv2 = 0, k = 0; |
mlin | 10:9d9b3b9b28b8 | 37 | int temp1 = 0, temp2 = 0; |
mlin | 10:9d9b3b9b28b8 | 38 | |
mlin | 10:9d9b3b9b28b8 | 39 | AnalogIn yp(PTB3); |
mlin | 10:9d9b3b9b28b8 | 40 | AnalogIn ym(PTB2); |
mlin | 10:9d9b3b9b28b8 | 41 | DigitalOut xp(PTB0); |
mlin | 10:9d9b3b9b28b8 | 42 | DigitalOut xm(PTB1); |
mlin | 10:9d9b3b9b28b8 | 43 | |
mlin | 10:9d9b3b9b28b8 | 44 | xp = 1; // set positive sdie of x high |
mlin | 10:9d9b3b9b28b8 | 45 | xm = 0; |
mlin | 10:9d9b3b9b28b8 | 46 | // dont need to do anyhting to set low side as it should be fine. |
mlin | 10:9d9b3b9b28b8 | 47 | // but do need to disconnect yp |
mlin | 10:9d9b3b9b28b8 | 48 | //yp.PinMode(PullNone) |
mlin | 10:9d9b3b9b28b8 | 49 | delta = 0; |
mlin | 10:9d9b3b9b28b8 | 50 | for(k = 0; k < 10; k++) { // make 10 readings to average |
mlin | 10:9d9b3b9b28b8 | 51 | temp1 = (int)ym.read_u16(); |
mlin | 10:9d9b3b9b28b8 | 52 | temp2 = (int)yp.read_u16(); |
mlin | 10:9d9b3b9b28b8 | 53 | xv1 += temp1; // get value |
mlin | 10:9d9b3b9b28b8 | 54 | xv2 += temp2; // get other value |
mlin | 10:9d9b3b9b28b8 | 55 | delta += abs(temp1 - temp2) / 10; //gets individual differences |
mlin | 10:9d9b3b9b28b8 | 56 | // pc.printf("val1 = %d - val2 = %d-diff = %d\n\r",temp1,temp2,temp1-temp2); |
mlin | 10:9d9b3b9b28b8 | 57 | //observing behaviour when touching / nt touching |
mlin | 10:9d9b3b9b28b8 | 58 | |
mlin | 10:9d9b3b9b28b8 | 59 | } |
mlin | 10:9d9b3b9b28b8 | 60 | //delta=abs(xv2-xv1)/10; |
mlin | 10:9d9b3b9b28b8 | 61 | if(delta < 300) touching = 1; |
mlin | 10:9d9b3b9b28b8 | 62 | else touching = 0; |
mlin | 10:9d9b3b9b28b8 | 63 | pc.printf("delta=%d \t %d\n\r",delta,touching); |
mlin | 10:9d9b3b9b28b8 | 64 | xp = 0; |
mlin | 10:9d9b3b9b28b8 | 65 | xm = 0; |
mlin | 10:9d9b3b9b28b8 | 66 | return (240 - (240 * ((xv2) / 1 / 10 - 5800)) / 51200); //returns the average of both |
mlin | 10:9d9b3b9b28b8 | 67 | //return(xv2/10); //maybe better to return the average of both.... |
mlin | 10:9d9b3b9b28b8 | 68 | } |
mlin | 10:9d9b3b9b28b8 | 69 | // subroutine to read y values - has different pin functions .. |
mlin | 10:9d9b3b9b28b8 | 70 | int readY() |
mlin | 10:9d9b3b9b28b8 | 71 | { |
mlin | 10:9d9b3b9b28b8 | 72 | DigitalOut yp(PTB3); |
mlin | 10:9d9b3b9b28b8 | 73 | DigitalOut ym(PTB2); |
mlin | 10:9d9b3b9b28b8 | 74 | AnalogIn xp(PTB0); |
mlin | 10:9d9b3b9b28b8 | 75 | AnalogIn xm(PTB1); |
mlin | 10:9d9b3b9b28b8 | 76 | int delta = 0, yv1 = 0, yv2 = 0, k = 0; |
mlin | 10:9d9b3b9b28b8 | 77 | int temp1 = 0, temp2 = 0; |
mlin | 10:9d9b3b9b28b8 | 78 | yp = 1; // set positive sdie of x high |
mlin | 10:9d9b3b9b28b8 | 79 | ym = 0; |
mlin | 10:9d9b3b9b28b8 | 80 | // dont need to do anyhting to set low side as it should be fine. |
mlin | 10:9d9b3b9b28b8 | 81 | // but do need to disconnect yp |
mlin | 10:9d9b3b9b28b8 | 82 | //yp.PinMode(PullNone) |
mlin | 10:9d9b3b9b28b8 | 83 | delta = 0; |
mlin | 10:9d9b3b9b28b8 | 84 | for(k = 0; k < 10; k++) { // make 10 readings to average |
mlin | 10:9d9b3b9b28b8 | 85 | temp1 = (int)xm.read_u16(); |
mlin | 10:9d9b3b9b28b8 | 86 | temp2 = (int)xp.read_u16(); |
mlin | 10:9d9b3b9b28b8 | 87 | yv1 += temp1; // get value |
mlin | 10:9d9b3b9b28b8 | 88 | yv2 += temp2; // get other value |
mlin | 10:9d9b3b9b28b8 | 89 | delta += abs(temp1 - temp2) / 10; |
mlin | 10:9d9b3b9b28b8 | 90 | //pc.printf("val1 = %d - val2 = %d-diff = %d\n\r",temp1,temp2,temp1-temp2); |
mlin | 10:9d9b3b9b28b8 | 91 | } |
mlin | 10:9d9b3b9b28b8 | 92 | //int yval=(int)xm.read_u16(); // get value |
mlin | 10:9d9b3b9b28b8 | 93 | //pc.printf("yval=%d",yval); |
mlin | 10:9d9b3b9b28b8 | 94 | yp = 0; |
mlin | 10:9d9b3b9b28b8 | 95 | ym = 0; |
mlin | 10:9d9b3b9b28b8 | 96 | return (320 - (320 * ((yv2) / 1 / 10 - 3000)) / 58300); // returns Y |
mlin | 10:9d9b3b9b28b8 | 97 | // return(yval); |
mlin | 10:9d9b3b9b28b8 | 98 | |
mlin | 10:9d9b3b9b28b8 | 99 | } |
mlin | 10:9d9b3b9b28b8 | 100 | |
mlin | 10:9d9b3b9b28b8 | 101 | |
mlin | 10:9d9b3b9b28b8 | 102 | |
mlin | 10:9d9b3b9b28b8 | 103 | void poll(){ |
mlin | 10:9d9b3b9b28b8 | 104 | int xp,yp = 0; |
mlin | 10:9d9b3b9b28b8 | 105 | xp=readX(); |
mlin | 10:9d9b3b9b28b8 | 106 | yp=readY(); |
mlin | 10:9d9b3b9b28b8 | 107 | } |