-
        

Ergebnis 1 bis 3 von 3

Thema: Touch entprellen

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    26.09.2007
    Beiträge
    11

    Touch entprellen

    Anzeige

    Hi Leute,
    Ich hab hier ein Touchpanel für ein 128x64 LCD. Es funktioniert alles auch schon soweit gut, allerdings hab ich ein Problem.
    Das Touch prellt nämlich bzw. die Spannung ist nicht sofort auf dem richtigen Wert, wenn man drückt und wenn man loslässt erhällt man auch Werte, die nicht der position entsprechen.

    Jetzt brauch ich eine Idee, wie ich die falschen Werte (die ja trotzdem im gültigen Bereich liegen) ausschließen kann.

    Ich hatte es schon mit mehrfach abtasten versucht, also ein Wert muss mehrmals erfasst werden, damit er gültig ist. leider ohne erfolg.

    vielleicht hat ja jemand ne idee oder schon etwas code (am besten in c)
    hab im moment n brett vorm kopf

    greetz

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    08.11.2006
    Ort
    olargues
    Beiträge
    776
    hallo hixc..
    da hab ich gerade auch ein brett vor dem kopf, da ich eigentlich keine idee hatte und noch nie drüber nachgedacht habe, wie son touchscreen eigentlich arbeitet.
    wieviel ausgänge hast du denn für die 128x64 pixels ?

    meine spontane antwort wäre ja eigentlich "fensterkomparator" gewesen.


    aber .... will ich wirklich, dass du 128x64 komparatoren aufbaust ? nein..
    ich glaube nicht.

    aber.... wenn diese touch-eigenschaft in reihen und spalten angeordnet ist, wäre eine fenterkomparator wohl keine falsche antwort auf das problem:

    1. alle zeilen signale addieren
    2. wenn die summe ein positiv ergibt...
    3. nen INT ausklösen
    4. schnell per ADC die spalten auslesen

    vielleicht irgenwie so ?

    was meinst du ?

    gruss

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    26.09.2007
    Beiträge
    11
    dank dir kolission, dass du dich mit dem Thema beschäftigt hast.
    Habs jetzt hinbekommen, indem ich mehrfach abfrage, ob ein gültiger Wert sich wiederholt (zumindest ungefähr).
    Funktioniert sehr gut.
    hier mal der code, ist vielleicht etwas schwierig zu durchblicken, aber vom prinzip her sollte mans verstehen.

    Code:
    void get_pos_pixel(void)
    {
    	struct touch_position t_pos;
    	unsigned int xmax, ymax;
    	unsigned int prell_min, prell_max;
    	char count;	
    	xmax = x[2] - x[0];
    	ymax = y[2] - y[3];	
    	get_pos_AD(&t_pos);
    	
    	if((t_pos.y < y[2]) | (t_pos.x < x[2])) {
    	get_pos_AD(&t_pos);
    	
    	count = 0;
    	do{		
    		if (count == 0) {
    			prell_min = t_pos.x - 8;
    			prell_max = t_pos.x + 8;
    		}
    		
    		get_pos_AD(&t_pos);
    
    		if (count < 0x20) {
    			if((t_pos.x < prell_max) & (t_pos.x > prell_min))
    				count++;
    			else if (count == 0)
    				count = 0;
    			else
    				count--;
    		}
    		else { // count == 0xFF
    			positionX = (((t_pos.x - x[0])* 0x80) / xmax); 
    			positionY = (((t_pos.y - y[3])* 0x40) / ymax);
    			count--;
    		}
    	}
    	while((t_pos.y < y[2]) | (t_pos.x < x[2]));
    	}
    	else{
    	positionX = 0x3FF;
    	positionY = 0x3FF;
    	}
    }
    also bis dann

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •