اطلاعیه

Collapse
No announcement yet.

مشکل همیشگی من با کی پد

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

    مشکل همیشگی من با کی پد

    من همیشه با کیپد مشکل دارم
    الان یه کی پد 4*4 دارم موقع خوندن کلید بعضی وقت ها قاطی میخونه
    من ورودی ها رو پول پ داخلی کردم

    #2
    پاسخ : مشکل همیشگی من با کی پد

    آره با C نوشتم
    هم تو LPC هم تو STM32 و هم تو sam7s64 مشکل دارم باهاش
    باز هم میگم ورودی هام رو پول پ داخلی کردم

    دیدگاه


      #3
      پاسخ : مشکل همیشگی من با کی پد

      سلام
      ازچه روشی برای خوندن کی پد استفاده میکنی؟؟بعد همیشه اشتباست یا بعضی وقتا؟؟

      دیدگاه


        #4
        پاسخ : مشکل همیشگی من با کی پد

        نوشته اصلی توسط gbg
        من همیشه با کیپد مشکل دارم
        الان یه کی پد 4*4 دارم موقع خوندن کلید بعضی وقت ها قاطی میخونه
        من ورودی ها رو پول پ داخلی کردم
        از ماژول هدر آماده استفاده میکنی؟؟

        دیدگاه


          #5
          پاسخ : مشکل همیشگی من با کی پد

          نوشته اصلی توسط mobin-m
          از ماژول هدر آماده استفاده میکنی؟؟
          نه از هدر آماده استفاده نمی کنم

          این کد برای stm32 هستش

          کد:
          char ReadKey(void){
           int i;
           uint16_t value;
           char key;
           
           for(i=0;i<4;i++){
          	GPIO_SetBits(GPIOD,GPIO_Pin_0);
          	GPIO_SetBits(GPIOA,GPIO_Pin_10);
          	GPIO_SetBits(GPIOA,GPIO_Pin_11);
          	GPIO_SetBits(GPIOA,GPIO_Pin_12);
          	if(i==0)
          	 GPIO_ResetBits(GPIOA,GPIO_Pin_10);
          	if(i==1)
          	 GPIO_ResetBits(GPIOA,GPIO_Pin_11);
          	if(i==2)
          	 GPIO_ResetBits(GPIOA,GPIO_Pin_12);
          	if(i==3)
          	 GPIO_ResetBits(GPIOD,GPIO_Pin_0);
           //Delay(0XFF);
           
          	key=0;
           value=GPIOD->IDR;
           if((value&GPIO_Pin_1)==0) 
          		key=i*4+1;
           if((value&GPIO_Pin_2)==0) 
          		key=i*4+2;
           if((value&GPIO_Pin_3)==0) 
          		key=i*4+3;
           if((value&GPIO_Pin_4)==0) 
          		key=i*4+4;
          	if(key!=0){
          	 while(value==GPIOD->IDR) Delay(5);
          	 break;
          	}
           }
           return key;
          }
          تا وقتی دکمه رو ول نکنه رو تین خوندن تموم نمیشه
          جالب اینه که بدون ول کردن بعضی وقت ها حارج میشه یعنی شرط while برفرار نمیشه

          دیدگاه


            #6
            پاسخ : مشکل همیشگی من با کی پد

            آقا مطمعنی کار میکنه
            تو کی پد ماتریسی خطوط باید یکی یکی فعال بشه
            تا اونجا که من میدونم

            دیدگاه


              #7
              پاسخ : مشکل همیشگی من با کی پد

              داداش ها چرا به خودتون سخت میگیرین ؟

              http://s6.picofile.com/file/8190890568/my_key.bmp

              کافیه A رو یک کنی بعد ببینی از 1 تا 4 کدوم یک شدن - B رو یک کنی بعد ببینی از 1 تا 4 کدوم یک میشه و ......
              خیلی سادس!
              اگه خواستین برنامه هم بذارم

              موفق باشین :job: :job:

              دیدگاه


                #8
                پاسخ : مشکل همیشگی من با کی پد

                نوشته اصلی توسط mobin-m
                داداش ها چرا به خودتون سخت میگیرین ؟

                http://s6.picofile.com/file/8190890568/my_key.bmp

                کافیه A رو یک کنی بعد ببینی از 1 تا 4 کدوم یک شدن - B رو یک کنی بعد ببینی از 1 تا 4 کدوم یک میشه و ......
                خیلی سادس!
                اگه خواستین برنامه هم بذارم

                موفق باشین :job: :job:
                خب من هم همین کار رو کردم
                ولی وقتی کلید رو میخونه بعضی وقت ها اشتباه می خونه
                ولی وقتی کلید فشرده نشده درست کار میکنه و کلیدی نمی خونه وقتی کلید رو میخونه اشتباه میشه

                من از پول پ داخلی استفاده کردم شاید درست تنظیم نکردم

                دیدگاه


                  #9
                  پاسخ : مشکل همیشگی من با کی پد

                  شما همین سخت افزاری رو ببند جواب میگیری! :job:

                  دیدگاه


                    #10
                    پاسخ : مشکل همیشگی من با کی پد

                    نوشته اصلی توسط mobin-m
                    شما همین سخت افزاری رو ببند جواب میگیری! :job:
                    همینه سخت افزار فقط پول پ داخلی کردم

                    دیدگاه


                      #11
                      پاسخ : مشکل همیشگی من با کی پد

                      سلام،
                      این کد واسه LPC1768، ببین به دردت میخوره؟ مشکلی نداره و به خوبی کار میکنه:

                      [code=c]
                      #define row1 20
                      #define row2 21
                      #define row3 22
                      #define row4 23

                      #define Column1 24
                      #define Column2 25
                      #define Column3 26
                      #define Column4 27

                      #define GPIO LPC_GPIO0
                      #define read_delay 50


                      //--------------------------------
                      unsigned char s[10];
                      const unsigned char code_key[4][4]={{15,1,6,11},{10,2,7,12},{0,3,8,13},{5,4,9,14}};
                      //--------------------------------
                      void Delay2 (unsigned int Time){
                      uint32_t i;
                      i = 0;
                      while (Time--) {
                      for (i = 0; i < 5000; i++);
                      }
                      }
                      //--------------------------------------------------------
                      void Keypad_Init(void)
                      {
                      GPIO->FIODIR = (1<<row1) | (1<<row2)| (1<<row3)| (1<<row4); //row
                      GPIO->FIODIR &= ~((1<<Column1)|(1<<Column2)|(1<< Column3)|(1<<Column4)); //SET COLUMNS TO INPUT
                      }
                      //--------------------------------------------------------
                      uint8_t Keypad_getc(void)
                      {
                      int row,num_key;
                      unsigned int data;
                      for(row=0;row<4;row++)
                      {
                      GPIO->FIOSET = (1<<row1) | (1<<row2)| (1<<row3)| (1<<row4);
                      GPIO->FIOCLR = (1<<(row1+row)) ; //row
                      Delay2 (read_delay);

                      data =((GPIO->FIOPIN) >> Column1) & 0xf ;
                      if(data==0xf){ // 1111
                      num_key = 16;
                      } else if(data==0xe){ //1110 1 ; 4 ; 7
                      num_key = code_key[row][0];
                      break;
                      } else if(data==0xd){ //1101 2 ; 5 ; 8
                      num_key = code_key[row][1];
                      break;
                      } else if(data==0xb){ // 1011 3 ; 6 ; 9
                      num_key = code_key[row][2];
                      break;
                      } else if(data==0x7){ // 0111
                      num_key = code_key[row][3];
                      break;
                      }
                      }
                      return num_key;
                      }
                      //---------------------------------------------------------
                      uint32_t Keypad_gets(void)
                      {
                      int key=0 , k=0;
                      int num =0,i,j,ss[10];
                      while (key !=10) {
                      key = Keypad_getc();
                      if ((key != 16)&(key != 10)&(key != 11)&(key != 12)&(key != 13)&(key != 14)&(key != 15)){
                      ss[k]= key;
                      k++;
                      }
                      }
                      //---------------
                      j = 1;
                      for (i = k-1;i>=0;i--){
                      num += ss[i]*j;
                      j*=10;
                      }
                      //---------------
                      return num;
                      }


                      [/code]

                      موفق باشی

                      «پشتکار» «پشتکار» «پشتکار»

                      دیدگاه


                        #12
                        پاسخ : مشکل همیشگی من با کی پد

                        ممنون در اولین فرصت چک مبکنم و خبر میدم

                        دیدگاه


                          #13
                          پاسخ : مشکل همیشگی من با کی پد

                          به نظر من استفاده از io در خوندن کی پد اشتباه هست ( البته اگه کی پد آماده باشه دیگه کاری نمیشه کرد)

                          اگه خودتون بتونید کی پد بسازید با چند تا کلید ، بهترین راه استفاده از یک پین adc هستش و به جای استفاده از 8 پین تنها از یک پین اسفتاده میشه

                          دیدگاه


                            #14
                            پاسخ : مشکل همیشگی من با کی پد

                            نوشته اصلی توسط ma-bah
                            به نظر من استفاده از io در خوندن کی پد اشتباه هست ( البته اگه کی پد آماده باشه دیگه کاری نمیشه کرد)

                            اگه خودتون بتونید کی پد بسازید با چند تا کلید ، بهترین راه استفاده از یک پین adc هستش و به جای استفاده از 8 پین تنها از یک پین اسفتاده میشه
                            برعکس من هیچ تجربه ی خوبی از استفاده از ADC برای خوندن کی پد ندارم! استفاده از IO عمر بالای دستگاه رو تضمین میکنه

                            «پشتکار» «پشتکار» «پشتکار»

                            دیدگاه


                              #15
                              پاسخ : مشکل همیشگی من با کی پد

                              فکر نکنم به درد بخوره
                              io به نظرم خیلی بهتره

                              دیدگاه

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