- LiFePO4 Speicher Test         
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
    40
    Beiträge
    24

    Resistives Touchpanel am ADC

    Anzeige

    Praxistest und DIY Projekte
    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