اطلاعیه

Collapse
No announcement yet.

راه اندازی LCD N96 (رنگی با وضوح 240*320)

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

    #76
    پاسخ : راه اندازی LCD N96 (رنگی با وضوح 244*320)

    چون تاچ وسیله ای جدا از ال سی دیه پس باهم مچ نیستند و باید مقادیر X و Y رو در نقاط ابتدایی و انتهایی محورها بدست بیاری و سپس اختلاف رو بدست بیاری بر 320 و 240 تقسیم کنی...
    الهم عجل لولیک الفرج

    فقط 313 نفر...

    دیدگاه


      #77
      پاسخ : راه اندازی LCD N96 (رنگی با وضوح 244*320)

      من تاچ اسکرین رو راه انـــــــــــدازی کردم
      حالا حتما باید کالیبره بشه چون وقتی وسط تاچ رو لمس میکنم گوشه بالا سمت راست LCD روشن میشه :icon_razz:
      و اینکه وقتی هم لمس نمیشه بعضی وقتها خیلی کم پیش میاد اما خود به خود انگار جایی تاچ شده و روشن میشه ، برای این باید چیکار کرد ؟ واسه نویزه ؟

      دیدگاه


        #78
        پاسخ : راه اندازی LCD N96 (رنگی با وضوح 244*320)

        نوشته اصلی توسط Foad P
        من تاچ اسکرین رو راه انـــــــــــدازی کردم
        حالا حتما باید کالیبره بشه چون وقتی وسط تاچ رو لمس میکنم گوشه بالا سمت راست LCD روشن میشه :icon_razz:
        و اینکه وقتی هم لمس نمیشه بعضی وقتها خیلی کم پیش میاد اما خود به خود انگار جایی تاچ شده و روشن میشه ، برای این باید چیکار کرد ؟ واسه نویزه ؟
        سلام
        برای کالیبره کردن فرض میکنیم که شما یه پراسیجر داری که داره x و y رو بهت میده فقط درست و دقیق نیست و وقتی هم که جایی رو فشار نمی دی عدد نشون میده(منم همین طوری بودم)
        فرض می کنیم که وقتی جایی رو فشار نمیدی اعدادی حدود 20 دریافت می کنی
        برای کالیبره کردن اول بیا اولین ستون پیکسلهای ال سی دی رو فشار بده (سمت چپ)فرض می کنیم عدد 50 در یافت کنی پس X مینیمم میشه 50 و حالا اخرین ردیف پیکسل رو فشار بده (سمت راست) و عدد 550 دریافت میکنی و میشه X ماکسیمم
        همین کار رو برای y انجام بده با بالا و پایین و Y مینیمم و Y ماکسیمم رو دریافت کن فرض کنیم که y مینیمم 40 و y ماکسسمم 440 باشه
        و دوباره فرض میکنم که می خوای رزولیشن 320در240 روی تاچ داشته باشی:
        حالا که این اعداد خام رو از پراسیجر دریافت xو y بدست اوردی میریم سراغ کالیبره کردن تاچ:
        اول یه شرط میزاریم که اگه x<50 یا y<40 پس x=y=0 و خروج از پراسیجر کالیبراسیون یعنی جایی فشرده نشده در غیر این صورت
        x=x-50 و y=y-40
        حالا x بین 0 و 500 هست و Y بین 0 تا 400
        بعد
        x=x*(320/500)
        y=y*(240/400)
        a
        حالا این x و y بین 320 و 240 هست
        همین به همین راحتی
        sub calibration
        x=get_X()
        y=get_Y()
        if x<50 or y<40 then
        x=0
        y=0
        exit
        else
        x=x-50
        y=y-40
        end if
        x=x*(320/500)
        y=y*(240/400)
        end sub
        البته این پراسیجر برای یک بار کالیبره کردنه و برای اینکه توی برنامه اصلی بتونی کالیبره کنی باید به جای اعداد ثابت متغییر تعریف کنی
        من هم همین مشکل را داشتم کاربری به نامabbasmh این راهنمایی را برام فرستاد و مشکلم حل شد

        دیدگاه


          #79
          پاسخ : راه اندازی LCD N96 (رنگی با وضوح 244*320)

          ممنـــــون از مطلب خوبت . خیلی مفیده ! :agree:

          من پایه های تاچ رو اینطوری به ADC وصل کردم :
          x+ : PORTA.0
          X- : PORTA.1
          Y+ : PORTA.2
          Y- : PORTA.3

          حالا وقتی تابع read_adc رو صدا میزنم از کدوم پایه برای خوندن x و کدوم برای Y استفاده کنم ؟ واسه این گیج شدم و فعلا دارم از x=read_adc(1) و y=read_adc(2) استفاده میکنم .
          این رو وقتی هر لحظه روی LCD چاپ میکنم اعدادی حدود 900 میده :icon_razz:
          چیکار کنم ؟

          دیدگاه


            #80
            پاسخ : راه اندازی LCD N96 (رنگی با وضوح 244*320)

            نوشته اصلی توسط زوار
            سلام
            برای کالیبره کردن فرض میکنیم که شما یه پراسیجر داری که داره x و y رو بهت میده فقط درست و دقیق نیست و وقتی هم که جایی رو فشار نمی دی عدد نشون میده(منم همین طوری بودم)
            فرض می کنیم که وقتی جایی رو فشار نمیدی اعدادی حدود 20 دریافت می کنی
            برای کالیبره کردن اول بیا اولین ستون پیکسلهای ال سی دی رو فشار بده (سمت چپ)فرض می کنیم عدد 50 در یافت کنی پس X مینیمم میشه 50 و حالا اخرین ردیف پیکسل رو فشار بده (سمت راست) و عدد 550 دریافت میکنی و میشه X ماکسیمم
            همین کار رو برای y انجام بده با بالا و پایین و Y مینیمم و Y ماکسیمم رو دریافت کن فرض کنیم که y مینیمم 40 و y ماکسسمم 440 باشه
            و دوباره فرض میکنم که می خوای رزولیشن 320در240 روی تاچ داشته باشی:
            حالا که این اعداد خام رو از پراسیجر دریافت xو y بدست اوردی میریم سراغ کالیبره کردن تاچ:
            اول یه شرط میزاریم که اگه x<50 یا y<40 پس x=y=0 و خروج از پراسیجر کالیبراسیون یعنی جایی فشرده نشده در غیر این صورت
            x=x-50 و y=y-40
            حالا x بین 0 و 500 هست و Y بین 0 تا 400
            بعد
            x=x*(320/500)
            y=y*(240/400)
            a
            حالا این x و y بین 320 و 240 هست
            همین به همین راحتی
            sub calibration
            x=get_X()
            y=get_Y()
            if x<50 or y<40 then
            x=0
            y=0
            exit
            else
            x=x-50
            y=y-40
            end if
            x=x*(320/500)
            y=y*(240/400)
            end sub
            البته این پراسیجر برای یک بار کالیبره کردنه و برای اینکه توی برنامه اصلی بتونی کالیبره کنی باید به جای اعداد ثابت متغییر تعریف کنی
            من هم همین مشکل را داشتم کاربری به نامabbasmh این راهنمایی را برام فرستاد و مشکلم حل شد
            سلام . من یه مشکلی دارم . مثلا من می خوام مقدار سطر رو بدست بیارم . که بین 1 تا 320 هستش . اگر به طور مثال روی سطر 50 را در گوشه ی سمت چپ فشار بدم 500 نشون می ده و وقتی گوشه سمت راست رو فشار می دم 550 نشون می ده . یعنی برای یه سطر که باید یه مقدار رو نشون بده این مقدار خروجی در طول سطر تغییر می کنه . این مشکل رو باید چطور حلش کرد

            دیدگاه


              #81
              پاسخ : پاسخ : راه اندازی LCD N96 (رنگی با وضوح 244*320)

              نوشته اصلی توسط Foad P
              ممنـــــون از مطلب خوبت . خیلی مفیده ! :agree:

              من پایه های تاچ رو اینطوری به ADC وصل کردم :
              x+ : PORTA.0
              X- : PORTA.1
              Y+ : PORTA.2
              Y- : PORTA.3

              حالا وقتی تابع read_adc رو صدا میزنم از کدوم پایه برای خوندن x و کدوم برای Y استفاده کنم ؟ واسه این گیج شدم و فعلا دارم از x=read_adc(1) و y=read_adc(2) استفاده میکنم .
              این رو وقتی هر لحظه روی LCD چاپ میکنم اعدادی حدود 900 میده :icon_razz:
              چیکار کنم ؟
              شما از همین پایه هایی که استفاده میکنید درسته الان مشکلتون چیه؟x,y هر دو یک مقدار را نشون میده؟

              نوشته اصلی توسط ma-bah
              سلام . من یه مشکلی دارم . مثلا من می خوام مقدار سطر رو بدست بیارم . که بین 1 تا 320 هستش . اگر به طور مثال روی سطر 50 را در گوشه ی سمت چپ فشار بدم 500 نشون می ده و وقتی گوشه سمت راست رو فشار می دم 550 نشون می ده . یعنی برای یه سطر که باید یه مقدار رو نشون بده این مقدار خروجی در طول سطر تغییر می کنه . این مشکل رو باید چطور حلش کرد
              من این مشکل را نداشتم شما بهتره با یک وسیله نوک تیز امتحان کنید ببینید بازهم همین نتیجه را میده

              دیدگاه


                #82
                پاسخ : راه اندازی LCD N96 (رنگی با وضوح 244*320)

                من همینطوری الان اینو تست کردم

                وقتی x تاچ نمیشه عدد 1023 هست
                کوچکترین عددی که از x و سمت چپ گرفتم 795 بود
                و بزرگترین عردد x از راست هم 975 بود

                وقتی y تاچ نمیشه عدد 0 هست
                کوچکترین عددی که از y و بالا گرفتم 65 بود
                و بزرگترین عردد y از پایین هم 560 بود

                به نظرم y منطقی تر از x میاد :-??

                چطوریه این ؟ اشتباه انجام دادم ؟

                دیدگاه


                  #83
                  پاسخ : پاسخ : راه اندازی LCD N96 (رنگی با وضوح 244*320)

                  نوشته اصلی توسط زوار
                  شما از همین پایه هایی که استفاده میکنید درسته الان مشکلتون چیه؟x,y هر دو یک مقدار را نشون میده؟
                  من این مشکل را نداشتم شما بهتره با یک وسیله نوک تیز امتحان کنید ببینید بازهم همین نتیجه را میده
                  این کارم با یه سیم بردبوردی کردم که نوک تیز هست . فکر کنم باید بیخیال تاچش شم :sad: :cry2:

                  دیدگاه


                    #84
                    پاسخ : پاسخ : راه اندازی LCD N96 (رنگی با وضوح 244*320)

                    نوشته اصلی توسط Foad P
                    من همینطوری الان اینو تست کردم

                    وقتی x تاچ نمیشه عدد 1023 هست
                    کوچکترین عددی که از x و سمت چپ گرفتم 795 بود
                    و بزرگترین عردد x از راست هم 975 بود

                    وقتی y تاچ نمیشه عدد 0 هست
                    کوچکترین عددی که از y و بالا گرفتم 65 بود
                    و بزرگترین عردد y از پایین هم 560 بود

                    به نظرم y منطقی تر از x میاد :-??

                    چطوریه این ؟ اشتباه انجام دادم ؟
                    دوتا پایه ای adc که xوy را ازش میخونید با مقاومت pull down کردید؟
                    نوشته اصلی توسط ma-bah
                    این کارم با یه سیم بردبوردی کردم که نوک تیز هست . فکر کنم باید بیخیال تاچش شم :sad: :cry2:
                    نه برای چی بیخیال بشید اینم یه مسئله است که قابل حل شدنه میشه چند تا نمونه از x,y جاهای مختلف را مقادیرشا بنویسید ببینم چه مقدارهایی دارید

                    دیدگاه


                      #85
                      پاسخ : راه اندازی LCD N96 (رنگی با وضوح 244*320)

                      نـــــه اینکارو نکردم ..
                      من از ADC(1) و ADC(2) میخونم یعنی میشه x- و y+ !
                      برای اینکار باید همونجا که این 2تا رو به PORTA لحیم کردم یه مقاومتم به GND لحیم کنم ؟

                      این هم تابع read_adc من
                      unsigned int read_adc(unsigned char adc_input)
                      {
                      ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
                      // Delay needed for the stabilization of the ADC input voltage
                      delay_us(10);
                      // Start the AD conversion
                      ADCSRA|=0x40;
                      // Wait for the AD conversion to complete
                      while ((ADCSRA & 0x10)==0);
                      ADCSRA|=0x10;
                      return ADCW;
                      }

                      دیدگاه


                        #86
                        پاسخ : راه اندازی LCD N96 (رنگی با وضوح 244*320)

                        برای اینکار باید همونجا که این 2تا رو به PORTA لحیم کردم یه مقاومتم به GND لحیم کنم ؟
                        بله مقاومتها را بذارید و تاچتونا کالیبره کنید بعد جواب را بدید

                        دیدگاه


                          #87
                          پاسخ : راه اندازی LCD N96 (رنگی با وضوح 244*320)

                          اینکارو کردم ، مقاومت 10k نداشتم از 12k استفاده کردم
                          الان وقتی x تاچ نمیشه 999 هست به جای 1023
                          ببینید من کارایی که کردم و میگم شاید مشکلی داشته باشه :

                          اول که پایه ها رو به ترتیب زیر وصل کردم
                          x+ : PORTA.0
                          X- : PORTA.1
                          Y+ : PORTA.2
                          Y- : PORTA.3

                          به پایه های x- و y+ مقاومت 12k و به زمین وصل کردم

                          توی کد :
                          این تابع اصلی read_adc هست

                          unsigned int read_adc(unsigned char adc_input)
                          {
                          ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
                          // Delay needed for the stabilization of the ADC input voltage
                          delay_us(10);
                          // Start the AD conversion
                          ADCSRA = 0x87;
                          ADCSRA|=0x40;
                          // Wait for the AD conversion to complete
                          while ((ADCSRA & 0x10)==0);
                          ADCSRA|=0x10;
                          return ADCW;
                          }

                          حالا این تابعهای x و y


                          int x (void)
                          {
                          int x1;
                          PORTA=0x01;
                          DDRA=0x05;
                          x1=read_adc(1);
                          delay_ms(30);
                          return x1;
                          }

                          int y (void)
                          {
                          int y1;
                          PORTA=0x02;
                          DDRA=0x0A;
                          y1=read_adc(2);
                          delay_ms(30);
                          return y1;
                          }

                          و توی main نوشتم :

                          while (1)
                          }
                          lcd_draw_circle (x(),y(),5,1,RED);
                          {

                          این کل کاریه که کردم .

                          حالا که میام مینویسم xمینیمم رو پیدا کنم وقتب تاچ نشده 999 میده ..
                          شما این مشکل رو نداشتید که این عدد رو بده ؟ برای من y همینجوری 0 هست اما x نه !
                          میتونید کد read_adc رو برای ما بذارید ؟ شاید اون مشکل داره در مورد ADMUX و اینا ...

                          دیدگاه


                            #88
                            پاسخ : راه اندازی LCD N96 (رنگی با وضوح 244*320)

                            با سلام من این مشکل را داشتم که وقتی حتی از تاچ استفاده نمیکردم x همین جوری تغییر میکرد ولی y=0 بود که با کالیبره کردن مشکلم حل شد
                            اینم adc
                            کد:
                            #define ADC_VREF_TYPE 0x00
                            // Read the AD conversion result
                            unsigned int read_adc(unsigned char adc_input)
                            {
                            ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
                            // Delay needed for the stabilization of the ADC input voltage
                            delay_us(10);
                            // Start the AD conversion
                            ADCSRA|=0x40;
                            // Wait for the AD conversion to complete
                            while ((ADCSRA & 0x10)==0);
                            ADCSRA|=0x10;
                            return ADCW;
                            }
                            // ADC initialization
                            // ADC Clock frequency: 691.200 kHz
                            // ADC Voltage Reference: AREF pin
                            ADMUX=ADC_VREF_TYPE & 0xff;
                            ADCSRA=0x83;
                            SFIOR&=0xEF;

                            دیدگاه


                              #89
                              پاسخ : راه اندازی LCD N96 (رنگی با وضوح 244*320)

                              فقط برای من چند تا فرق داره اینکه ولتاژ ADC باید رو همون AVCC یا VCC تنظیم بشه .
                              اون چند خط بعد از تابع مال داخل main هست دیگه ؟
                              باز هم تست میکنم y صفر هست اما x همش رو 900ایناست ، نمیدونم دیگه مشکلم کجاست ... :sad:
                              حالا میخواین کارایی که برای کالیبره کردن باید بکنم رو بگید شاید درست شد .. با همون مینیمم و ماکسیمم شما !

                              دیدگاه


                                #90
                                پاسخ : راه اندازی LCD N96 (رنگی با وضوح 244*320)

                                حالا من با آزمون و خطا اومدم بعد از خوندن x و y یکم مقدارشونو کم و زیاد کردم که تقریبا نزدیک به جاییه که تاچ شده
                                مشکل اینجاست که وقتی دارم تاچ رو میکشم که یه خط بکشه وسطش یکی دوجا رو چاپ نمیکنه ، یا اینکه یهو وسسط خط میپره یجا دیگه یه نقطه میکشه .
                                اینو باید چیکار کرد ؟

                                دیدگاه

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