Hallo habe ein Ledsee 320x240 display mit integrierten Touch Controller. ich habe diesen code erstellt Mega 2561 16Mhz typedef struct { uint16_t x; uint16_t y; } tvalues; void spi_init(void) { ss_high(); TOUCH_cs_high(); SPCR=(1<<SPE)|(1<<MSTR); SPSR=(1<<SPI2X); } void get_touch(tvalues *touchvalues) { //read Y TOUCH_cs_low(); spi_putc(0x9c); touchvalues->y = spi_putc(0x00); TOUCH_cs_high(); //read x TOUCH_cs_low(); spi_putc(0xdc); touchvalues->x = spi_putc(0x00); TOUCH_cs_high(); } ich bekomme als wert x von 40 bis 60 bei y bekomme ich im ruhe modus 127. in richtung pixel x 0 ist der y wert 40 in richtung pixel x 320 ist es 50 dort sollte auch 40 sein. hat jemand vileicht ein Beispiel??? Vielen Dank
Hallo wie initialisiert da steht nichts im datenblatt??? Gruß andy
naja,initialisieren ist zuviel gesagt, aber du musst vor jeder Wandlung erst ein Control-Byte senden. Aber ok, machst du ja. Sorry, hatte nicht richtig hingeschaut. Kann noch sein, dass der Touch verschiedene Innenwiderstände in x-bzw.y-Richtung hat, dann bekommst du auch unterschiedliche Werte.
Hallo geht jetzt void get_touch(tvalues *touchvalues); void spi_init_Touch(void) { ss_high(); TOUCH_cs_high();//CS auf high SPCR=(1<<SPE)|(1<<MSTR)|(1<<SPR0)|(1<<SPR1); SPSR=(1<<SPI2X); } void get_touch(tvalues *touchvalues) { spi_init_Touch(); //read Y TOUCH_cs_low(); spi_putc(0x98); touchvalues->y = spi_putc(0x00); TOUCH_cs_high(); //read x TOUCH_cs_low(); spi_putc(0xd8); touchvalues->x = spi_putc(0x00); TOUCH_cs_high(); } muß jetzt nur noch eine Calibrierung schreiben damit ich pixelgenau arbeiten kann. Ich versuche dann auch mal die 12 bit auflösung. aber so funktioniert es ziemlich gut. Will das Display mit den fingern bedienen. Gruß Andy
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.