ADS7843 Controller Touch
Diff: main.cpp
- Revision:
- 0:f014c3cdbc78
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Fri Feb 04 03:09:49 2011 +0000 @@ -0,0 +1,51 @@ +#include "mbed.h" +#include "Touch.h" +/* ********************************************************************** */ +#define TOUCH_X_MIN 30 +#define TOUCH_X_MAX 230 +#define TOUCH_Y_MIN 15 +#define TOUCH_Y_MAX 240 +/* ********************************************************************** */ +DigitalOut Led1(LED1); +DigitalOut Led2(LED2); +/* ********************************************************************** */ +TOUCH_DATA Coordenadas; +volatile bool kbhit_irq=0; +volatile bool kbhit_tratament=0; + +TouchScreenADS7843 MyTouch(p9,p10,p11,p12,p8); // ADS7843-> SDO,SDI,SCK,CS,IRQ +/* ********************************************************************** */ +void vISRTouchIRQ(void){ + UINT_COORDxy Temp; + + MyTouch.vTestTouchPanel(&Coordenadas); + // Coordenadas dentro del rango de pantalla LCD: + if((Coordenadas.x>TOUCH_X_MIN && Coordenadas.x<TOUCH_X_MAX) && (Coordenadas.y>TOUCH_Y_MIN && Coordenadas.y<TOUCH_Y_MAX)){ + // Cambio de coordenada y escala: + Temp=Coordenadas.y; + Coordenadas.y=((float)((255-TOUCH_X_MIN)-Coordenadas.x)*(320.0/(TOUCH_X_MAX-TOUCH_X_MIN))); + Coordenadas.x=((float)(Temp-TOUCH_Y_MIN)*(240.0/(TOUCH_Y_MAX-TOUCH_Y_MIN))); + kbhit_irq=1; + } +} + + +int main(){ + + + MyTouch.vInitADS7843(USE_8BITS,&vISRTouchIRQ); + + Led1=0; + Led2=0; + + while(1){ + Led2=!Led2; + if(kbhit_irq==1){ + kbhit_irq=0; + if((Coordenadas.x<235 && Coordenadas.x>135) && (Coordenadas.y<320 && Coordenadas.y>250)){ + Led1=!Led1; + } + } + wait_ms(300); + } +}