Contains the main execution of the clock uses headers to import functions

Dependencies:   RTC-DS1307 SPI_TFT_ILI9341 TFT_fonts mbed tsi_sensor

Fork of TFT_Mikroelectronika_IL9341_sketchpad by Oxford CWM Team

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?

UserRevisionLine numberNew 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 }