اطلاعیه

Collapse
No announcement yet.

[آموزشی] صفحه کلید نردبانی مقاومتی (R2R Button Resistor Ladder)

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

    [آموزشی] صفحه کلید نردبانی مقاومتی (R2R Button Resistor Ladder)

    سلام
    حتما شده که می خوایید یه صفحه کلید رو به میکرو وصل کنید ولی خب واقعا خیلی پین میگیره. یه روشی که استفاده میشه به نام صفحه کلید نردبانی مقاومتی (R2R Button Resistor Ladder) مشهوره ولی به نظر میرسه خیلی ها از همچین تکنیکی بی خبر هستن. من تصمیم گرفتم اینو توضیح بدم. به تصویر زیر نگاه کنید:




    همون طور که می بینید می تونید با این روش فقط 1 پین رو در مورد استفاده قرار بدید! اگه دقت کنید یکی از پین ها زمین شده، یکی 5v و یکی دیگه هم به ADC خورده. حالا با خوندن مقدار خروجی از سیم که به ADC متصل شده می تونید بفهمید که کدوم کلید فشرده شده. به این کد آردوینو دقت کنید:

    کد:
    #define AnalogBtnPin A0
    int AnalogBtn =0;
    int Button1Cnt =0;
    int Button2Cnt =0;
    int Button3Cnt =0;
    int Button4Cnt =0;
    int Button5Cnt =0;
    void setup()
    {
     // put your setup code here, to run once:
     Serial.begin(115200);
    }
    
    void loop() {
     // put your main code here, to run repeatedly:
      AnalogBtn = analogRead(AnalogBtnPin);
     Serial.println( AnalogBtn);
    
     if(AnalogBtn >= 508 && AnalogBtn <= 510)
     {
      Button1Cnt +=1;
      Serial.print("Button 1 pressed "); Serial.print(Button1Cnt); Serial.println(" times.");
     }
    
     if(AnalogBtn >= 888 && AnalogBtn <= 890)
     {
      Button2Cnt +=1;
      Serial.print("Button 2 pressed "); Serial.print(Button2Cnt); Serial.println(" times.");
     }
    
     if(AnalogBtn >= 970 && AnalogBtn <= 972)
     {
      Button3Cnt +=1;
      Serial.print("Button 3 pressed "); Serial.print(Button3Cnt); Serial.println(" times.");
     }
    
     if(AnalogBtn >= 1003 && AnalogBtn <= 1005)
     {
      Button4Cnt +=1;
      Serial.print("Button 4 pressed "); Serial.print(Button4Cnt); Serial.println(" times.");
     }
    
     if(AnalogBtn >= 1014 && AnalogBtn <= 1016)
     {
      Button5Cnt +=1;
      Serial.print("Button 5 pressed "); Serial.print(Button5Cnt); Serial.println(" times.");
     }
    }
    کدها خیلی روانه. خصوصا که گفته چی کار میکنه. ابتدا روال اولیه پیکربندی طی شده. پریفرال سریال و ADC که پیکربندی شده بعدش هر دکمه ای فشرده بشه مقدار ADC از پورت سریال ارسال میشه. بعد چک میکنه کدوم فشرده شده و دوباره توی پورت سریال میگه کدوم فشرده شده. به همین سادگی!


    #2
    پاسخ : [آموزشی] صفحه کلید نردبانی مقاومتی (R2R Button Resistor Ladder)

    سلام، جالبه، اتفاقاً این روش رو توی کی پد 4 در 4 هم بکار میبرن و هر 4 سطر و ستون رو با مقاومت های خاص به هم وصل می کنن به طوریکه برای هر کلید یه مقدار منحصر به فرد تشکیل بشه، توی موبایل های قدیمی نوکیا هم از همین روش برای کی پدش استفاده شده که توی نقشه های اون موبایل ها مشخصه. تازه اگه مقاومت ها با مقادیر خاص باشن میشه حالت فشرده شدن همزمان رو هم داشت. :applause:

    دیدگاه


      #3
      پاسخ : [آموزشی] صفحه کلید نردبانی مقاومتی (R2R Button Resistor Ladder)

      با تشکر
      کاپایلر چیه؟
      .The best question deserves a better answer
      =-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=
      «پناه»می برم «به خدا»
      از عـیبی که ، «امروز» در خود می بینم، و «دیروز» «دیگران را» به خاطر، «هـمان عیـب» ملامت کرده ام.
      محتاط باشیم، در «سرزنش» و «قضاوت کردن دیگران». وقتی نه از «دیروز او» خبر داریم و نه از "فردای خودمان" .

      دیدگاه


        #4
        پاسخ : [آموزشی] صفحه کلید نردبانی مقاومتی (R2R Button Resistor Ladder)

        من هم یه بار یه کیپد 36 تایی رو با یه پین ADC راه انداختم واسه کلید هاش از این کلید های ریموتی کوچیک استفاده کردم.
        واسه مقاومت هاش هم چون باید دقیق می بودن از چند تا مقاومت 805 SMD سری با هم استفاده کردم.

        باهاش تونستم همه ی حروف فارسی و انگلیسی رو بخونم.
        کلید caps lock و back space رو هم گداشتم .
        خیلی روش خوبیه.
        [glow=green,2,300][b]بشر ممکن الخطاست
        درخت هرچه پربار تر سر به زیر تر[/glow]

        دیدگاه


          #5
          پاسخ : [آموزشی] صفحه کلید نردبانی مقاومتی (R2R Button Resistor Ladder)

          نوشته اصلی توسط •.´™ مَسِِــــح`.•
          با تشکر
          کاپایلر چیه؟
          خواهش میشه
          کامپایلر که مهم نیست. اینکه چطور انجام شده مهمه که توضیح داده شد و شما همه جا می تونید اجراش کنید. اگه منظورتون بالایی هستش که گفتم مال آردوینو هستش(فکر کنم GCC)(توی همون پست اول گفتم که).

          دیدگاه


            #6
            پاسخ : [آموزشی] صفحه کلید نردبانی مقاومتی (R2R Button Resistor Ladder)

            با سلام
            دوستان من چطور میتونم از این روش تو برنامم استفاده کنم
            مثلا اگر موقعی چنتا کلید با هم زده شد بشه تشخیص داد که کدوم کلیدها زده شده
            اگه لطف کنید شماتیک و کد هم قرار بدید ممنون میشم(بیسیک)

            با تشکر

            اضافه شده در تاریخ :
            دوستان شرمنده کردید منو
            منتظر جوابتون هستم :rolleyes:
            شاد بودن تنها انتقامی است که انسان میتواند از زندگی بگیرد"چگوارا"

            دیدگاه


              #7
              پاسخ : [آموزشی] صفحه کلید نردبانی مقاومتی (R2R Button Resistor Ladder)

              نوشته اصلی توسط a302866a
              با سلام
              دوستان من چطور میتونم از این روش تو برنامم استفاده کنم
              مثلا اگر موقعی چنتا کلید با هم زده شد بشه تشخیص داد که کدوم کلیدها زده شده
              اگه لطف کنید شماتیک و کد هم قرار بدید ممنون میشم(بیسیک)

              با تشکر
              می دونید که من بیسیک کار نمیکنم.

              دیدگاه


                #8
                پاسخ : [آموزشی] صفحه کلید نردبانی مقاومتی (R2R Button Resistor Ladder)

                با سلام
                آره میدونم
                اگه میشه شما دستور کارو توضیح بده با شماتیکش(امکان تشخیص چندتا کلید هم داشته باشه)
                برنامشو انشاا... ردیفش میکنم با کمک دوستان
                با تشکر
                شاد بودن تنها انتقامی است که انسان میتواند از زندگی بگیرد"چگوارا"

                دیدگاه


                  #9
                  پاسخ : [آموزشی] صفحه کلید نردبانی مقاومتی (R2R Button Resistor Ladder)

                  ایول بابا من چپ و راست دارم ازتون چیز تازه یاد می گیرم :applause:
                  اصول کار و الگوریتم این برنامه رو میشه بیشتر توضیح بدین من یه چیزایی دستگیرم شد ولی باز بعضی جاهاش مبهمه مثلا شما گفتید :
                  هر دکمه ای فشرده بشه مقدار ADC از پورت سریال ارسال میشه.
                  اینجاشو هر چی زور زدم متوجه نشدم خب مگه خود میکرو مقدار ADC رو نمی خونه ؟ از پورت سریال کجا ارسال میشه ؟ oo:
                  تشکر :nerd:
                  خداوند بی نهایت است اما به قدر نیاز تو فرود می آید ، به قدر آرزوی تو گسترده می شود و به قدر ایمان تو کارگشاست.
                  [hr]

                  دیدگاه


                    #10
                    پاسخ : [آموزشی] صفحه کلید نردبانی مقاومتی (R2R Button Resistor Ladder)

                    نوشته اصلی توسط 4850
                    ایول بابا من چپ و راست دارم ازتون چیز تازه یاد می گیرم :applause:
                    اصول کار و الگوریتم این برنامه رو میشه بیشتر توضیح بدین من یه چیزایی دستگیرم شد ولی باز بعضی جاهاش مبهمه مثلا شما گفتید :
                    هر دکمه ای فشرده بشه مقدار ADC از پورت سریال ارسال میشه.
                    اینجاشو هر چی زور زدم متوجه نشدم خب مگه خود میکرو مقدار ADC رو نمی خونه ؟ از پورت سریال کجا ارسال میشه ؟ oo:
                    تشکر :nerd:
                    درود!
                    من منظورد برنامه نمونه آردوینو بود. کدش بالا هست(پست اول). نویسنده کد بخاطر اینکه نشون بده کار میکنه به وسیله پربفرال UART میکرو هر دکمه ای رو که فشار میدی نشون میده. در واقع وقتی دکمه ای رو فشار بدید و از ADC اونو می خونه و می فهمه چه دکمه ای فشار دادید و بعد با UART به ترمینال کامپیوتر می فرسته و نشون میده که کار میکنه.

                    دیدگاه


                      #11
                      پاسخ : [آموزشی] صفحه کلید نردبانی مقاومتی (R2R Button Resistor Ladder)

                      سلام
                      ایول خیلی جالبه :applause:
                      ولی میشه راجبِ معایبش هم نسبت به روش های دیگه یک توضیحی بدین، بعد کلا چه کار میکنن که PC فشار همزمان تا 3 دکمه رو تشخیص میده؟
                      مرسی :job:
                      پیش به سوی بی نهایت و فراتر از آن :nerd:

                      دیدگاه


                        #12
                        پاسخ : [آموزشی] صفحه کلید نردبانی مقاومتی (R2R Button Resistor Ladder)

                        YESTERDAY :biggrin:
                        گرفتم
                        خداوند بی نهایت است اما به قدر نیاز تو فرود می آید ، به قدر آرزوی تو گسترده می شود و به قدر ایمان تو کارگشاست.
                        [hr]

                        دیدگاه


                          #13
                          پاسخ : [آموزشی] صفحه کلید نردبانی مقاومتی (R2R Button Resistor Ladder)

                          سلام .خیلی وقته از این تاپیک میگذره .اما اگه دوستان لطف کنن جواب بدن ممنون میشم.
                          تو این روش نویز مشکل ایجاد نمیکنه؟اگه ما 16 کلید داشته باشیم حدودا فاصله بین ولتاژ هر کلید 0.3ولت میشه .فکر کنم این مقدار بتونه در حد یه نویز باشه(البته این با توجه به این میگم که وقتی ولت متر رو به جایی وصل نمیکنم این مقدار و نشون میده!) حالا اگه تعداد کلید هامون بیشتر بشه اوضاع پیچیده تر هم خواهدشد (ظاهرا)
                          از این روش میشه برای اسکن یه صفحه کلید تو یه محیط پر از نویز استفاده کرد؟
                          ای خدا ، من باید از نظر علم از همه برتر باشم، تا مبادا که دشمنان مرا از این راه طعنه زنند. باید به آن سنگدلانی که علم را بهانه کرده و به دیگران فخر میآ‌فروشند، ثابت کنم که خاک پای من هم نخواهند شد. باید همه آن تیره دلان مغرور و متکبر را به زانو در آورم، آنگاه خود خاضع ترین و افتاده ترین مرد روی زمین باشم.
                          شهید دکتر مصطفی چمران

                          دیدگاه


                            #14
                            پاسخ : [آموزشی] صفحه کلید نردبانی مقاومتی (R2R Button Resistor Ladder)

                            نوشته اصلی توسط phoenix2000
                            سلام .خیلی وقته از این تاپیک میگذره .اما اگه دوستان لطف کنن جواب بدن ممنون میشم.
                            تو این روش نویز مشکل ایجاد نمیکنه؟اگه ما 16 کلید داشته باشیم حدودا فاصله بین ولتاژ هر کلید 0.3ولت میشه .فکر کنم این مقدار بتونه در حد یه نویز باشه(البته این با توجه به این میگم که وقتی ولت متر رو به جایی وصل نمیکنم این مقدار و نشون میده!) حالا اگه تعداد کلید هامون بیشتر بشه اوضاع پیچیده تر هم خواهدشد (ظاهرا)
                            از این روش میشه برای اسکن یه صفحه کلید تو یه محیط پر از نویز استفاده کرد؟
                            سلام
                            شما یه خازن 10 نانو عدسی را موازی کنید با ADC و پایه دیگه هم به زمین ...
                            این روش عالی جواب میده تو محیط نویزی ...
                            موفق باشید
                            [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
                            معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
                            معرفی نرم افزار Codewizard PWM
                            با من بیشتر آشنا شوید

                            دیدگاه


                              #15
                              پاسخ : [آموزشی] صفحه کلید نردبانی مقاومتی (R2R Button Resistor Ladder)

                              می تونید از تکنیک های تاخیر نرم افزاری و یا چندبار-خوانی و نتیجه گیری نهایی اثر نویز رو دفع کنید.

                              دیدگاه

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