اطلاعیه

Collapse
No announcement yet.

راهنمایی در برنامه پوش باتون

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

    راهنمایی در برنامه پوش باتون

    سلام دوستان
    من یه مشکلی دارم که اصلا نمیتونم حلش کنم
    میخوام وقتی پوش باتون رو زدم یک واحد به متغیرم اضافه بشه ولی مشکل اینجاس که با زدن پوش باتون چند واحد اضافه میشه یعنی تا وقتی دستم رو اونه همینجور اضافه میشه
    میشه راهنمایی کنید که چجوری این کارو بکنم؟
    ممنون
    telgram:09396888049

    #2
    پاسخ : راهنمایی در برنامه پوش باتون

    برنامه رو حساس به لبه بالا رونده بنویسید . حتما شما از دستور IF استفاده کرده اید باید از دستور DEBOUNCE استفاده کنید . (البته در بسکام)
    انجمن LABVIEW
    http://www.eca.ir/forum2/index.php?board=279.0
    اموزش میکروکنترلرهای AVR به زبان ساده
    http://www.eca.ir/forum2/index.php/topic,7070.0.html

    دیدگاه


      #3
      پاسخ : راهنمایی در برنامه پوش باتون

      ممنون این برنامه هست
      دفعه اول که میزنم یک رو میشمره ولی دیگه کار نمیکنه تو دفعه های بعدی.ت. اون حلقه while آخری گیر میکنه ولی نباید گیر کنه
      کد:
      const int buttonPin = 2;
      int counter = 0;
      void setup() { 
       pinMode(buttonPin, INPUT);
       Serial.begin(9600);
      }
      void loop() {
      int reading = digitalRead(buttonPin);
      if(reading==HIGH){
       counter++;  
       Serial.print("Button pressed ");
        Serial.print(counter);
        Serial.println(" times");
      while(reading==HIGH){};
      } 
      }

      اضافه شده در تاریخ :
      کسی نظری نداره؟
      telgram:09396888049

      دیدگاه


        #4
        پاسخ : راهنمایی در برنامه پوش باتون

        برنامتون رو بطور کامل همراه شماتیکش قرار بدید
        www.gam-co.blogsky.com

        دیدگاه


          #5
          پاسخ : راهنمایی در برنامه پوش باتون

          برنامه کامله همینه
          با آردوینو نوشتم.اینم شماتیک
          telgram:09396888049

          دیدگاه


            #6
            پاسخ : راهنمایی در برنامه پوش باتون

            من میدونم باید چیکار کنی
            تو باید تاخیر بزاری
            اول کتابخونه ی delay.h رو فراخوانی میکنی
            بعد از دستورت این تابع رو مینویسی delay_ms( زمان تاخیر به میکرو ثانیه)
            البته اینا همش به زبان c هست

            دیدگاه


              #7
              پاسخ : راهنمایی در برنامه پوش باتون

              سلام ممنون با استفاده از تاخیر اگه دستمون بیشتر از اون مقدار تاخیر روی باتون باشه باز شروع به شمردن میکنه
              دوستان این برنامه رو نوشتن که کار میکنه اما متوجه نشدم حلقه while چطوری از بیشتر شمردن جلوگیری میکنه.شما متوجه میشین؟
              کد:
                const int buttonPin = 2;
                int counter = 0;
                void setup() {
                 pinMode(buttonPin, INPUT);
                 Serial.begin(9600);
                }
                void loop() {
                int reading = digitalRead(buttonPin);
                if(reading==HIGH){
                 counter++; 
                 Serial.print("Button pressed ");
                  Serial.print(counter);
                  Serial.println(" times");
                }
                  while(reading==HIGH){
                   reading=digitalRead(buttonPin);
                  }
                }
              telgram:09396888049

              دیدگاه


                #8
                پاسخ : راهنمایی در برنامه پوش باتون

                سلام
                شما وقتی کلید رو فشار میدی 0 شدن اون پایه رو چک میکنی که متوجه میشی کلید فشار داده شده یا نه!
                بعد از اینکه پایه صفر شد و وارد زیر برنامه میشی با یه دستور while اونجا نگهش دار تا دست از رو کلید برداشته شه
                به محض اینکه کاربر دستشو برداشت کاری که میخوای رو انجام بده
                مثلا فرض کن کلید رو پایه A0 باشه، میخوای وقتی کلید زده شد یکی به متغیز i اضافه شه:
                کد:
                if(PINA.0==0){
                  while(PINA.0==0);
                  i++;
                  }

                دیدگاه


                  #9
                  پاسخ : راهنمایی در برنامه پوش باتون

                  نوشته اصلی توسط ameen.kh
                  سلام
                  شما وقتی کلید رو فشار میدی 0 شدن اون پایه رو چک میکنی که متوجه میشی کلید فشار داده شده یا نه!
                  بعد از اینکه پایه صفر شد و وارد زیر برنامه میشی با یه دستور while اونجا نگهش دار تا دست از رو کلید برداشته شه
                  به محض اینکه کاربر دستشو برداشت کاری که میخوای رو انجام بده
                  مثلا فرض کن کلید رو پایه A0 باشه، میخوای وقتی کلید زده شد یکی به متغیز i اضافه شه:
                  کد:
                  if(PINA.0==0){
                    while(PINA.0==0);
                    i++;
                    }
                  عزیز اینو منم میتونستم بنویسم اقا توضیح میخواد

                  دیدگاه


                    #10
                    پاسخ : راهنمایی در برنامه پوش باتون

                    سلام و ممنون از دوستان
                    تو این برنامه while رو قبل از i++ نوشتین آیا کار میکنه؟تو اون while گیر نمیکنه به i++ نرسه؟
                    telgram:09396888049

                    دیدگاه


                      #11
                      پاسخ : راهنمایی در برنامه پوش باتون

                      ببین تا زمانی که دستت رو کلید باشه توی این while میمونه ولی به محض اینکه دستت از رو کلید برداشته شد شرط داخل while نقض میشه و ازش میاد بیرون میره خط بعدی که یه واحد به i اضافه میکنه
                      یه نکته دیکه هم هست که من یادم رفت
                      قبل از while بهتره یه delay به اندازه 20 میلی ثانیه بدی که بانس کلیدت هم حذف بشه یعنی کد به این صورت میشه
                      کد:
                      if(PINA.0==0){
                        delay_ms(20);
                        while(PINA.0==0);
                        i++;
                        }

                      دیدگاه


                        #12
                        پاسخ : راهنمایی در برنامه پوش باتون

                        امتحان کردم جواب نداد
                        کد:
                         const int buttonPin = 2;
                          int counter = 0;
                          void setup() {
                           pinMode(buttonPin, INPUT);
                           Serial.begin(9600);
                          }
                          void loop() {
                          int reading = digitalRead(buttonPin);
                          if(reading==LOW){
                           while(reading==LOW);
                           counter++; 
                           Serial.print("Button pressed ");
                            Serial.print(counter);
                            Serial.println(" times");
                          }
                        آخه وقتی شرط نقض میشه کلا از if میاد بیرون دیگه به i++ نمیرسه که
                        telgram:09396888049

                        دیدگاه


                          #13
                          پاسخ : راهنمایی در برنامه پوش باتون

                          داداش برنامت به زبان c نیست من متوجهش نشدم متاسفانه
                          ولی در مورد سوالی که پرسیدی
                          میکرو برنامه ای که مینویسی رو خط به خط اجرا میکنه
                          وقتی دستت رو روی کلید میذاری پایه ای که کلید بش وصله صفر(زمین) میشه
                          پس شرط if بر قرار میشه و میاد تو زیر برنامش
                          بعد یه delay میدی که بانس کلید رو بگیره (میتونی کمترش کنی از 20 میلی ثانیه)
                          بعد میاد واسه دستور while
                          اگه هنوز دستت رو کلید باشه که شرطش بر قراره پس میمونه اونجا تا دستتو برداری
                          اگه شرطش بر قرار نباشه میره واسه خط بعدی
                          یه واحد به i اضافه میکنه و از زیر برنامه if خارج میشه تا دوباره کلیدو فشار بدی

                          دیدگاه


                            #14
                            پاسخ : راهنمایی در برنامه پوش باتون

                            نوشته اصلی توسط ameen.kh

                            بعد میاد واسه دستور while
                            اگه هنوز دستت رو کلید باشه که شرطش بر قراره پس میمونه اونجا تا دستتو برداری
                            اگه شرطش بر قرار نباشه میره واسه خط بعدی
                            یه واحد به i اضافه میکنه و از زیر برنامه if خارج میشه تا دوباره کلیدو فشار بدی
                            ابهام من همینجاست
                            شرط if و while یکی هست
                            وقتی دستمو بردارم شرط هردوتا نقض میشه و دیگه به اضافه کردن i نمیرسه و از if میزنه بیرون
                            telgram:09396888049

                            دیدگاه


                              #15
                              پاسخ : راهنمایی در برنامه پوش باتون

                              شری if فقط برای اینه که باید توی زیر برنامش
                              حالا اگه زیر برنامش 200 خط باشه و توی خط دوم شرطش نقض بشه
                              تا آخر 200 خط اجرا میشه و سری بعدی دیگه برنامه وارد if نمیشه

                              دیدگاه

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