-
اشکال در تاچ lpc 1768
سلام مهندسین
من برای تاچ از هدر آماده در سایت ها بود استفاده میکنم و تاچ را در تایمر میخونم و مشکلی که دارم مختصات های من قاطی می شوند یعنی کلیدی که در سمت راست گذاشته شده هم در جای خودش عمل میکند و هم در سمت دیگر (البته کمی بالا یا پایین تر)
کد:
else if( ( (X > 2800)&&(X < 2900 ))&& ( (Y>2820)&&(Y<3000) ) )
کد:
if( ( (X > 2500)&&(X < 2700 ))&& ( (Y>2900)&&(Y<3260) ) )
مخصات ها مربوط به گوشه سمت راست بالا و سمت چپ پایین میباشند
جالب اینجا است که هر چند بار امتحان کنم دقیقا همان دو جا این اتفاق می افتد!!!
از دوستان اگر هدر خوبی داردند یا روش بهتری برای راه اندازی و یا رفع این مشکل دارند لطفا کمک کنند که خیلی فوری هستش.
باتشکر
-
1 فایل پیوست
خدمت شما
x- adc7
x+ adc6
y- adc0
y+ adc1
-
دستتون درد نکنه خیلی ممنون
فقط چند تا نکته پایه هی مدار چاپی رو این طوری وصل کردم باید تغییرات زیادی بدم؟:
کد:
#define XP 23
#define YP 24
#define XN 25
#define YN 26
درباره فرمول خطی سازی هم اگر امکان داره توضیح بدین من تو این پروژه خطی سازی انجام ندادم .
شما تو مقدار دهی یک علامت گذاشتین ولی تو کامنت یک عدد دیگه ؛ کومشون درست هستش؟
با تشکر
- - - Updated - - -
دستتون درد نکنه خیلی ممنون
فقط چند تا نکته پایه هی مدار چاپی رو این طوری وصل کردم باید تغییرات زیادی بدم؟:
کد:
#define XP 23
#define YP 24
#define XN 25
#define YN 26
درباره فرمول خطی سازی هم اگر امکان داره توضیح بدین من تو این پروژه خطی سازی انجام ندادم .
شما تو مقدار دهی یک علامت گذاشتین ولی تو کامنت یک عدد دیگه ؛ کومشون درست هستش؟
با تشکر
-
مهم این هست
char xp=3, xn=23, YP=24 , YN=2 ;
بقیش الکیه!!!
خطی سازی من نمیدونم چی هست!! اگه توضیح بدین منم بدونم خوشحال میشم!!!
-
این طور که من شنیدم برای تبدیل اعداد به پیکسل وخطی سازی آنها از فورمول زیر استفاده می شود که تو برنامه شما هم هست ولی این ضرایب از کجا آمده اند رو نمیدانم:
*x= (80*(a-820))/2500;
راستی پایه هارو کجا و چه طوری تنظیم کنم؟
char xp=3, xn=23, YP=24 , YN=2 اینا چی هستند؟
-
اهان
این خطی سازی بدرد نمیخوره اخه تاچ رو عوض کنید دیگه ممکنه بهم بخوره و نیاز به تنظیم دباره هست بهتره برید دنبال تنظیم 5 نقطه ای یعنی نقاطی که روی ال سی دی رو نشون میده شما تاچ میکنید و برنامه خودش تنظیم میکنه!!
حال ان روش
اول قلم رو میزای سمت راست(یا چپ) میشکی به سمت مخالف و کمترین عدد رو بدست میاری ( که مال من شده 820) حالا این عدد رو همیشه از عدد که ا تو دی هست کم میکنی تا رنج تغیراتت از صفر تا فلان بشه!!
مرحله بعد بیشترین مقدار رو با کشیدن روی صفحه پیدا و تقسیم بر تعداد پیکسل صفحه میکنی و دیگه از این به بعد همیشه عدد بدست امده رو تقسیم بر این عدد میکنیم!!
فکر میکنیم x بین 820 تا 3300 هست!
ال سی دی 320 در 240 پیکسلی
برای صفر کردن مقادیر
پس
حالا رنج شده از 0 تا 320 همین!!!
برای y هم همین طور!!!!
این پایه ها میشن ورودی های ا تو دی که داخل میکرو شما برای این که بگی فلان ا تو دی باید بگی فلان پایه رو بزار روی فلان کاربرد حالا باید بری ریجستر اون کاربردت رو بخونی با بنویسی!!
برای تغیر کارایی ها هم میتونی زیر برنامه adc رو بخونی و متوجه میشی!!!
-
کسی میدونه اون اشکال برای چی هست؟
این هدر همون هدریه که من استفاده میکردم
من وقتی صفحه رو تست میکنم و در یک راستا حرکت میکنم هم xو هومy تغییر میکند! چرا؟
راستی یک نکته احتمال این وجود داره که از برد برد باشه؟
-
برنامت رو بزار ی نگاهی بهش بندازیم!!!
-
خیلی ممنون که جواب میدین
این هم تابع تاچ من:
کد:
void touch(int *x , int *y){
int a,b;
LPC_GPIO0->FIODIR |= (1<<23)|(1<<25) ;
LPC_PINCON->PINMODE1 |= (1UL<<17)|(1UL<<21);//17=P0.24MODE(YP),21=P0.26MODE= pin has repeater mode enabled
LPC_GPIO0->FIOSET |= (1<<25) ;
LPC_GPIO0->FIOCLR |= (1<<23) ;
Del();
b= ADC(1);
*y=b;//(320*(3373-b))/2483; //
LPC_PINCON->PINSEL1 &= ~(1<<16) ;//pul up P0.24MODE(YP)
LPC_PINCON->PINMODE1 &= ~((1UL<<17)|(1UL<<21));//HZ
LPC_GPIO0->FIODIR &= ~((1<<23)|(1<<25)) ;
LPC_GPIO0->FIOSET &= ~(1<<23) ;
LPC_GPIO0->FIOCLR &= ~((1<<25)|(1<<26)) ;
LPC_GPIO0->FIODIR |= (1<<24)|(1<<26) ;
LPC_PINCON->PINMODE1 |= (1UL<<15)|(1UL<<19);
LPC_GPIO0->FIOSET |= (1<<24) ;
LPC_GPIO0->FIOCLR |= (1<<26) ;
Del();
a= ADC(2);
*x=a;// (240*(3400-a))/2733; //
LPC_PINCON->PINSEL1 &= ~(1<<18) ;
LPC_PINCON->PINMODE1 &= ~((1UL<<15)|(1UL<<19));
LPC_GPIO0->FIODIR &= ~((1<<24)|(1<<26)) ;
LPC_GPIO0->FIOSET &= ~(1<<26) ;
LPC_GPIO0->FIOCLR &= ~((1<<24)|(1<<23)) ;
}
من وقتی پایه ها رو پشت سر هم وصل میکنم چرت میگه و وقتی جای پایه 26 و 27 را جاه جا میکنم اعداد نسبا تا منطقی هستند ولی وقتی در یک راستا حرکت میکنم هم X و هم Y تغییراتی در حد 1000 دارند.
-
اوه چه تغیرات زیادی!! منم همین مشکل رو داشتم و یک خازن 104 روی دو پین سمت راست تاچ زدم تغیرات تقریبا صفر شد! شما هم بزار و روی پایه ها جابجا کن ببین چی میشه!!
اگه نشد بگو برنامت رو دقیق تر نگاه کنم:wink:
-
با خازن هم فرقی نکرد
من تغییرات ناگهانی ندارم و همیشه نقاطی که اشتباه میشه ثابت هستند
من فکر میکنم پایه هارو اشتباه میزنم ولی نمیدونم چه طور بزنم !!!!
-
ببین دوست من
شما قلم رو بزار سمت چپ و بکش به سمت راست باید عددت به کل منظم تغیر کنه یعنی مثلا از 100 تا 1000 بره و یا بر عکس
حالا از پایین به بالا ....
اگر تغیراتت منظم بود که مشکلی نداری!!
و اگر هم قلم رو در یک نقطه نگه داشتی نیاید تغیرات انچنانی داشته باشی نهایتا باید 5 واحد تغیرات داشته باشه!!
حالا کمترین عدد رو از کل کم کن در 128 (پیکسل) ضرب کن تقسیم بر بیشترین عدد کن!!