-         
Ergebnis 1 bis 2 von 2

Thema: Resistives Touchpanel am ADC

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    23.10.2007
    Ort
    Aalen
    Alter
    38
    Beiträge
    24

    Resistives Touchpanel am ADC

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo,

    Ich hab eine Frage bezüglich meines Codes zum auslesen, von den Werten eines Touchpanels.

    Eingesetzter Atmel: Atmega16
    Genutzt: Interne AREF Spannung. 2.56V
    Gesetzt habe ich den Teilungsfaktor 128, da mein Atmel mit 14,3 Mhz läuft.

    Mein Touchpanel hat 4 PINs (X+, X-, Y+, Y-)
    Die Pins sind mit PA0-PA3 an meinem Atmega verbunden, jedoch mit Vorschaltung von 4x 470 Ohm Widerständen

    Ich lege High auf X+ und X- und messe den Wert mit folgendem Code:

    Code:
    void debug()
    {
    	char String[100];
    	uint16_t	xval;
    	uint16_t	yval;
    	
    	DDRA	|=	(1<<PA0)	| (1<<PA2); // ADC0 und ADC2 auf Output
    	PORTA	|=	(1<<PA0); 				// ADC0 auf HIGH
    	PORTA	&=	~(1<<PA2);				// ADC2 auf LOW
    	DDRA	=	~(1<<PA1)	| (1<<PA3);	// ADC1 und ADC3 auf Eingang
    	_delay_ms(20);						// Warten bis Port Stabil (20ms)
    	yval = readADC(3);
    	yval = 1024 - yval;
    
    	DDRA	|=	(1<<PA1)	| (1<<PA3); // ADC1 und ADC3 auf Output
    	PORTA	|=	(1<<PA1); 				// ADC0 auf HIGH
    	PORTA	&=	~(1<<PA3);				// ADC2 auf LOW
    	DDRA	=	~(1<<PA0)	| (1<<PA2);	// ADC0 und ADC0 auf Eingang
    	_delay_ms(20);						// Warten bis Port Stabil (20ms)
    	xval = readADC(2);
    	xval = 1024 - xval;
    
    	lcd_ClearScreen();
    	lcd_GotoXY(1,1);
    	lcd_SelectFont(Arial, lcd_ReadFontData, BLACK);
    	sprintf(String, "Y: %i\nX: %i", yval, xval);
    	lcd_Puts(String);
    }
    Nun, wenn ich auf meinem Touchpanel rum drücke, ändert sich Y nicht.
    Aber X Ändert sich in kleinen Werten.

    Bsp.

    Mitte vom Touchpanel: Zeigt den Wert X 1005 an.
    Links unten vom Touchpanel: Zeigt den Wert X 1000 an.
    Rechts unten vom Touchpanel: Zeigt den Wert X 1007 an.
    Links oben vom Touchpanel: Zeigt den Wert X 1005 an.
    Rechts oben vom Touchpanel: Zeigt den Wert X 1010 an.

    Aber die Werte von Y ändern sich nicht...

    Nun meine Frage, Touchscreen falsch angeschlossen oder fehler im Code?
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken p1100655_188.jpg  

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Beiträge
    2.731
    Hallo,

    ich weiss auf die schnelle nur mal diese Seite:
    http://www.mcselec.com/index.php?opt...=189&Itemid=57
    Da steht wie das mit dem auslesen usw. funktioneren soll.

Berechtigungen

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

Labornetzteil AliExpress