ADS7843 Controller Touch

Dependencies:   TouchADS7843

main.cpp

Committer:
Suky
Date:
2011-02-04
Revision:
0:f014c3cdbc78

File content as of revision 0:f014c3cdbc78:

#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);
	}
}