اطلاعیه

Collapse
No announcement yet.

مشکل در راه اندازی تاچ اسکرین

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    مشکل در راه اندازی تاچ اسکرین

    با سلام خدمت همه دوستان
    من می خوام بک صفحه کلید تاچ اسکرین آماده کنم. که مختصات محل لمس شده را به من نشان دهد. اما زمانهایی هم که محلی را لمس نمی کنم برای مختصات یکسری عدد که مرتب تغییر می کند نسان می دهد.مدار نویز گیر هم گذاشته ام. نویز کنسلر adc را هم فعال کردم. اصلا زمانیکه مختصات لمس شده را روی lcd می بینیم اگر جایی لمس نشود چه عددی را باید نشان دهد؟
    بالا
    سوال بعدیم اینست که این عدد به صورت ولتاژ است چطور می تونم آن را تبدیل به مختصات صفحه lcd تبدیل کنم که مثلا اگر گوشه سمت چپ بالا لمس شد مختصات (0و0) را نشان دهد.
    لطفا کمکم کنید
    ممنون :

    #2
    پاسخ : مشکل در راه اندازی تاچ اسکرین

    با سلام
    در مورد سوال اول یک توصیه: بهتر بود از ای سی های مخصوص تاچ استفاده کنید، برای مثال Xpt2046(تاچ مقاومتی) در این صورت کارتون راحت تر می شد.
    برای سوال دوم
    این کار یک مپینگ هستش شما چند نقطه که مختصاتشو می دونین تعیین کنید و با خوندن مقادیر تاچ در اون نقاط، تاچ رو کالیبره کنید.
    The healthy human mind doesn't wake up in the morning thinking this is his last day on earth.

    دیدگاه


      #3
      پاسخ : مشکل در راه اندازی تاچ اسکرین

      سلام
      با تشکر از راهنماییتون
      اگر امکانش هست در مورد نحوه ی کارکرد این آی سی بیشتر توضیح می دید؟
      یا اگر لینک مفیدی در این زمینه می شناسید بهم معرفی کنید
      با تشکر

      دیدگاه


        #4
        پاسخ : مشکل در راه اندازی تاچ اسکرین

        خواهش می کنم
        میتونید برای اطلاعات بیشتر به دیتا شیت این ای سی مراجعه کنید
        ftp://192.155.89.131/LCD_Panel/IM120905004/DS_XPT2046.pdf
        اما مختصر اینکه این ای سی برای چند کاربرد خاص نظیر تاچ ساخته شده و فیلتر ها و موارد لازم برای اون رو داراست. شما بعد از اتصال تاچ به ای سی می تونید با رابط spi با اون اتباط بگیرید این ای سی از دو 8 یا 12 بیتی برای تبدیل پشتیبانی می کنه.
        The healthy human mind doesn't wake up in the morning thinking this is his last day on earth.

        دیدگاه


          #5
          پاسخ : مشکل در راه اندازی تاچ اسکرین

          سلام دوست عزیز منم این مشکل رو داشتم که نهایتا با وصل یه خازن 100nf بین دوتا ورودی ADC مشکلم حل شد.
          اینم کدی که برای خوندن x , y استفاده کردم شاید به دردت بخوره. برای دقت بیشتر 10 بار خوندم و میانگین گرفتم که عددی که میخونم دقیق باشه
          کد:
          unsigned int Read_X(void){
            float X=0;
            DDRF=0x5;
            PORTF=0x1;
            delay_ms(10);
            read_adc(1);
            delay_ms(10);
            read_adc(1);
              delay_ms(10);
              X+=read_adc(1);
              X-=lx;
              X/=xd;
            return X;
          }
          
          unsigned int Read_Y(void){
            float Y=0;
            DDRF=0xa;
            PORTF=0x2;
            delay_ms(10);
            read_adc(0);
            delay_ms(10);
            read_adc(0);
              delay_ms(10);
              Y+=read_adc(0);
              Y-=ty;   
              Y/=yd;
            return Y;
          }

          دیدگاه


            #6
            پاسخ : مشکل در راه اندازی تاچ اسکرین

            سلام
            ضمن تشکر از راهنماییتون

            من 4تا پایه ADC دارم منظورتون اینه که بین هر دو پایه این خازن رو قرار بدم؟اگر ممکنه نحوه ی اتصال خازن رو به این چهار پایه بیشتر توضیح بدید.
            ضمن اینکه من یک مستطیل روی LCD در نظر می گیرم. وقتی از یک گوشه به گوشه دیگر حرکت میکنم مثلا در راستای طول مستطیل عدد Y به صورت خطی افزایشی نیست مثلا اول روند صعودی داره بعد نزولی.همینطور در راستای عرض در مورد X. اینطوری نمی تونم برای کلید محدوده تعریف کنم. ممنون میشم بگید باید چه کار کنم؟

            دیدگاه


              #7
              پاسخ : مشکل در راه اندازی تاچ اسکرین

              نوشته اصلی توسط sm.km
              سلام
              ضمن تشکر از راهنماییتون

              من 4تا پایه ADC دارم منظورتون اینه که بین هر دو پایه این خازن رو قرار بدم؟اگر ممکنه نحوه ی اتصال خازن رو به این چهار پایه بیشتر توضیح بدید.
              ضمن اینکه من یک مستطیل روی LCD در نظر می گیرم. وقتی از یک گوشه به گوشه دیگر حرکت میکنم مثلا در راستای طول مستطیل عدد Y به صورت خطی افزایشی نیست مثلا اول روند صعودی داره بعد نزولی.همینطور در راستای عرض در مورد X. اینطوری نمی تونم برای کلید محدوده تعریف کنم. ممنون میشم بگید باید چه کار کنم؟
              راستش کدی که براتون نوشتم با Atmega2560 بود به همین خاطر رو پورت f نوشتم برای میکرو خودتون ختما تغییرش بدین. در مورد نحوه اتصال x , y مثبت و منفی داره باید درست وصل بشه و اینطوری دیگه بالا پایین نمیشه چون مقاومت هستش و باید افزایش و یا کاهش پیدا کنه مگه اینکه اشتباه وصل کرده باشیدطبق شماتیک زیر ببندید و تو قطعه کدی که براتون فرستادم، F رو به A تبدیل کنید. مطمئنم جواب میگیرید. فقط دقت کنید lx و xd دو تا مقداری هستند که که من بصورت آزمایش و خطا برای اندازه تاچ خودم پیدا کردم و ممکنه برای شما تغییر کنه، اولی فاصله از ابتدای تاچ تا اولین نقطه ال سی دی هستش و دومی برای تبدیل مقدار خونده شده به مختصات x . همینطور تو y

              خازن 104 رو هم بین X+ و Y+ ببندید


              دیدگاه


                #8
                پاسخ : مشکل در راه اندازی تاچ اسکرین

                سلام
                دوستان اگه با ای سی تاچ کار کردین و نحوه اتصال به میکرو و برنامش را با بی سیک دارین ممنون میشم قرار بدین تا استفاده کنیم . من میخوام با تاچ بزرگ کار کنم و اتصالش بدم به این ای سی :nerd: :nerd:

                دیدگاه


                  #9
                  پاسخ : مشکل در راه اندازی تاچ اسکرین

                  نوشته اصلی توسط c384104
                  راستش کدی که براتون نوشتم با Atmega2560 بود به همین خاطر رو پورت f نوشتم برای میکرو خودتون ختما تغییرش بدین. در مورد نحوه اتصال x , y مثبت و منفی داره باید درست وصل بشه و اینطوری دیگه بالا پایین نمیشه چون مقاومت هستش و باید افزایش و یا کاهش پیدا کنه مگه اینکه اشتباه وصل کرده باشیدطبق شماتیک زیر ببندید و تو قطعه کدی که براتون فرستادم، F رو به A تبدیل کنید. مطمئنم جواب میگیرید. فقط دقت کنید lx و xd دو تا مقداری هستند که که من بصورت آزمایش و خطا برای اندازه تاچ خودم پیدا کردم و ممکنه برای شما تغییر کنه، اولی فاصله از ابتدای تاچ تا اولین نقطه ال سی دی هستش و دومی برای تبدیل مقدار خونده شده به مختصات x . همینطور تو y

                  خازن 104 رو هم بین X+ و Y+ ببندید


                  سلام
                  ضمن تشکر فراوان از راهنماییهایتون

                  مگر پایه های صفحه تاچ به ترتیب نیستند؟ممکنه ترتیبش متفاوت باشه؟من به ترتیب به پایه ها وصل کردم. از دو طرف هم تست کردم یکبار پایه اول را X+ گرفتم و دفعه بعدی Y- گرفتم.
                  در مورد برنامتون راستش درست نفهمیدم چطوری مقدار خونده شده را به مختصات تبدیل می کنید؟
                  با تشکر

                  دیدگاه


                    #10
                    پاسخ : مشکل در راه اندازی تاچ اسکرین

                    نوشته اصلی توسط sm.km

                    سلام
                    ضمن تشکر فراوان از راهنماییهایتون

                    مگر پایه های صفحه تاچ به ترتیب نیستند؟ممکنه ترتیبش متفاوت باشه؟من به ترتیب به پایه ها وصل کردم. از دو طرف هم تست کردم یکبار پایه اول را X+ گرفتم و دفعه بعدی Y- گرفتم.
                    در مورد برنامتون راستش درست نفهمیدم چطوری مقدار خونده شده را به مختصات تبدیل می کنید؟
                    با تشکر
                    خواهش میکنم دوست عزیز بلاخره هرکس یه تجربه ای داره باید در اختیار بقیه قرار بده تا علم پیشرفت کنه :nerd:
                    در مورد ترتیب پایه ها باید به مدل تاچتون توجه کنید و از اینترنت پیداش کنید
                    در مورد تبدیل مقدار اگه adc رو به صورت 8 بیتی راه اندازی کنید یه مقدار بین 0 تا 255 بهتون میده اگه به صورت 16 بیتی راه اندازی کنید بین 0 تا 1023، در هر دو حالت مقدار خونده شده باید به تعداد پیکسل در اون راستا تقسیم بشه مثلا من از یه lcd 240*320 استفاده میکنم بنابراین در راستای x عددی که میخونم تقسیم بر 240 میکنم تا ببینم چندمین پیکسل از ابتدای lcd فشار داده شده.
                    اون مقدار lx هم در واقع فاصله ابتدای تاچ تا قسمت شروع lcd هستش که فضایی هستش که تاچ بزرگتر از lcd هستش.

                    دیدگاه


                      #11
                      پاسخ : مشکل در راه اندازی تاچ اسکرین

                      من هم آی سی XPT2046 فروشگاه رو خریدم ولی کار با اونو بلد نیستم. :sad: اگه کسی برنامه راه اندازی اونو داره با کدویژن و یا بسکام فرقی نداره بگذاره!!!! :mrgreen:
                      آی سی راه اندازی تاچه و ADC اون 12bit هستش.نویز هم نمیگیره.
                      معيار واقعي بودن تصميم، آن است که دست به عمل بزنيم.

                      دیدگاه


                        #12
                        پاسخ : مشکل در راه اندازی تاچ اسکرین

                        نوشته اصلی توسط alidehghan288
                        من هم آی سی XPT2046 فروشگاه رو خریدم ولی کار با اونو بلد نیستم. :sad: اگه کسی برنامه راه اندازی اونو داره با کدویژن و یا بسکام فرقی نداره بگذاره!!!! :mrgreen:
                        آی سی راه اندازی تاچه و ADC اون 12bit هستش.نویز هم نمیگیره.
                        دوست عزیز کدویژن اصلا خودش کتابخونه XPT2046 رو داره البته ورژن جدیدش، قدیمیشو نمیدونم و تو سایت خودش هم سمپل واسش داره. هرچند ADC خود میکرو هم خوب جواب میده فقط نکات گفته شده رو رعایت کنید

                        دیدگاه


                          #13
                          پاسخ : مشکل در راه اندازی تاچ اسکرین

                          سلام دوستان خسته نباشید، این 2 تا مقاله در مورد تاچ مقاومتی و راه اندازی اون باadc خود میکرو هست امیدوارم مشکلتون حل بشه.
                          s5.picofile.com/file/8145997268/Touch_Screen_Code_Vision.pdf.html
                          s5.picofile.com/file/8145997326/touchscreen.pdf.html

                          دیدگاه


                            #14
                            پاسخ : مشکل در راه اندازی تاچ اسکرین

                            توی سمپل های کدویژن نیست.
                            فقت توی کدویزارد کدویژن هست. کار با اونو بلد نیستم اگه کسی کد های نمونه شو داره بگذاره ماهم استفاده کنیم
                            معيار واقعي بودن تصميم، آن است که دست به عمل بزنيم.

                            دیدگاه


                              #15
                              پاسخ : مشکل در راه اندازی تاچ اسکرین

                              Readtouch:
                              Config Pinf.0 = Output ' Makes port F.0 output
                              Config Pinf.2 = Output ' Makes port F.0 output
                              Set Portf.0 ' Sets port F.0 High
                              Reset Portf.2 ' Sets port F.2 Low
                              Ddrf.1 = 0 ' Sets port F.1 as input
                              Ddrf.3 = 0 ' Sets port F.1 as input because we need it now as ad input
                              Waitms 1 ' Wait until the port is stable
                              X = Getadc(3) ' Read the ad value for the y
                              X = 1024 - X ' Invert the reading
                              Locate 12 , 23
                              Lcd X ' for debugging
                              Config Pinf.1 = Output ' Makes port F.1 output
                              Config Pinf.3 = Output ' Makes port F.3 output
                              Reset Portf.1 ' Sets port F.1 Low
                              Set Portf.3 ' Sets port F.3 High
                              Ddrf.0 = 0 ' Sets port F.0 as input
                              Ddrf.2 = 0 ' Sets port F.2 as input because we need it now as ad input
                              Waitms 1 ' Wait until the port is stable
                              Y = Getadc(2) ' Read the ad value for the x
                              Y = 1024 - Y ' Invert the reading
                              Locate 13 , 23
                              Lcd Y
                              If X < 150 Or X > 800 Then X = 0
                              If Y < 285 Or Y > 700 Then Y = 0
                              return


                              Tel_key:
                              Showpic 144 , 1 , 1
                              Showpic 144 , 32 , 4ghi
                              Showpic 144 , 63 , 7pqrs
                              Showpic 144 , 94 , Setare
                              Showpic 112 , 94 , Backspace
                              Showpic 1 , 94 , Esc
                              Showpic 176 , 1 , 2abc
                              Showpic 176 , 32 , 5jkl
                              Showpic 176 , 63 , 8tuv
                              Showpic 176 , 94 , 0
                              Showpic 208 , 1 , 3def
                              Showpic 208 , 32 , 6mno
                              Showpic 208 , 63 , 9wxyz
                              Showpic 208 , 94 , Sharp
                              Key_press = 0
                              Gosub Readtouch
                              Select Case X
                              Case 156 To 233
                              Select Case Y
                              Case 620 To 710 : Key_press = 27 'ESC
                              End Select
                              Case 266 To 427
                              Select Case Y
                              Case 620 To 710 : Key_press = 13 'ENTER
                              End Select

                              Case 452 To 535:
                              Select Case Y
                              Case 609 To 710 : Key_press = 11 'BACKSPACE
                              End Select
                              Case 546 To 624:
                              Select Case Y
                              Case 288 To 390 : Key_press = 1
                              Case 400 To 497 : Key_press = 4
                              Case 500 To 600 : Key_press = 7
                              Case 605 To 708 : Key_press = 42 '*
                              Case Else : Goto Tel_key
                              End Select
                              Case 635 To 715:
                              Select Case Y
                              Case 288 To 390 : Key_press = 2
                              Case 400 To 497 : Key_press = 5
                              Case 500 To 600 : Key_press = 8
                              Case 605 To 708 : Key_press = 10
                              Case Else : Goto Tel_key
                              End Select
                              Case 724 To 809:
                              Select Case Y
                              Case 288 To 390 : Key_press = 3
                              Case 400 To 497 : Key_press = 6
                              Case 500 To 600 : Key_press = 9
                              Case 605 To 708 : Key_press = 35 '#
                              Case Else : Goto Tel_key
                              End Select
                              Case Else : Return
                              End Select
                              Return




                              این یک کد با bascom که من تو پروژ هام استفاده کردم خیلی هم عالی جواب میده فقط کالیبره کردن با خودتون
                              به هیچ ای سی جانبی هم احتیاج نداره فقط 4 تا مقاومت 100 اهم می خواد
                              یا علی مددا



                              دیدگاه

                              لطفا صبر کنید...
                              X