نمایش نتایج: از 1 به 10 از 23
Like Tree4 لایک

موضوع: استفاده از تایمر

Hybrid View

  1. #1
    Member
    تاریخ عضویت
    May 2016
    نوشته ها
    86
    ببینید من دو کار میخوام امجام بدم یکی توی یک مدت زمان متغییر (ینی خودمون مدت زمانشو مشخص کنیم ) یک کار انجام بشه (مثلن شمردن کلید فشار داده شده ) و وقتی اون مدت زمان تموم شد نتیجه (تعداد کلید فشرده شده ) رو نمایش بده ( در ضمن این کار ممکنه چن بار انجام بشه ینی باید تایمر متوقف و صفر و دوباره مقدار دهی بشه )این کارو میخامبا تایمر انجام بدم و همونطور که گفتم این برنامه یکی از زیر برنامه های من هست و من نمیتونم توی ستاپ یا لوپ تایمر رو راه اندازی کنم
    کار دوم یا زیر برنامه دیگه رو که با اینتراپته بعدن میپرسم
    ویرایش توسط ANOOSHEH : 07-12-2016 در ساعت 09:27 AM

  2. #2
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    نقل قول نوشته اصلی توسط ANOOSHEH نمایش پست ها
    ببینید من دو کار میخوام امجام بدم یکی توی یک مدت زمان متغییر (ینی خودمون مدت زمانشو مشخص کنیم ) یک کار انجام بشه (مثلن شمردن کلید فشار داده شده ) و وقتی اون مدت زمان تموم شد نتیجه (تعداد کلید فشرده شده ) رو نمایش بده ( در ضمن این کار ممکنه چن بار انجام بشه ینی باید تایمر متوقف و صفر و دوباره مقدار دهی بشه )این کارو میخامبا تایمر انجام بدم و همونطور که گفتم این برنامه یکی از زیر برنامه های من هست و من نمیتونم توی ستاپ یا لوپ تایمر رو راه اندازی کنم
    کار دوم یا زیر برنامه دیگه رو که با اینتراپته بعدن میپرسم
    خب این چیزی که شما میخوای میشه اینتراپت

    کافیه شما توی loo تون تابعی داشته باشید که دائم وضعیت یه پن دیجیتال رو چک کنه و به ازای هر بار فشار داده شدن یه متغیر رو ++ کنه

    حالا هر بار که اینتراپت خورد بیاد مقدار این متغیر رو نشون بده

  3. #3
    Member
    تاریخ عضویت
    May 2016
    نوشته ها
    86
    خب من میخوام از امکانات اردوینو استفاده کنم و با تایمر این برنامه رو بنویسم ببنید من بذنامه ریر رو نوشتم ولی وقتی که tm =tm*1000*60 میکنم (1000 تبدیل ثانیه به میلی ،60 تبدیل دقیقه به ثانیه) برنامه به زیر برنامه
    resultTap
    نمیره ولی اگه همین اعداد بشه tm=tm*60*100دقیقا راس 6 ثانیه (اگه tm =1)میره زیر برنامه مشکل از کجاس


    #include <Bounce2.h>
    #include <Timer.h>




    int tm,i,z;
    int buttonPushCounter = 0; // counter for the number of button presses
    int buttonState = 0; // current state of the button
    int lastButtonState = 0;
    const int buttonPin= 16;// previous state of the button
    Timer t;
    Bounce debouncer = Bounce();

    void setup() {
    pinMode(22,INPUT);//define pinMode
    pinMode(23,INPUT);
    pinMode(16,INPUT);
    debouncer.attach(16);
    debouncer.interval(5);

    Serial.begin(9600);
    delay(2000);
    tm=0;

    }
    void loop(){
    while(1){

    Serial.print("press9 up,10 down");

    Serial.print(tm);
    delay (1000);
    if (digitalRead(22)==LOW){
    tm++;
    while(digitalRead(22)==HIGH);

    Serial.println(tm);

    }
    if (digitalRead(23)==LOW)
    { tm--;
    while(digitalRead(23)==HIGH);

    Serial.println(tm);

    }
    if(tm<0){tm=0;}
    if(digitalRead( 16)==LOW){

    Serial.print("you are ready...");
    delay(10);
    tm=tm*60*1000;
    for (i=3;i>0;i--){

    Seial.print(i);
    delay(1000);
    }

    while(1){

    t.update();
    t.after(tm, resultTap);
    debouncer.update();
    // read the pushbutton input pin:
    buttonState = debouncer.read();

    Serial.print("number of button pushes: ");

    if (buttonState != lastButtonState) {

    if (buttonState == LOW) {


    buttonPushCounter++;

    Serial.println(buttonPushCounter);
    }


    delay(50);
    }


    lastButtonState = buttonState;


    }


    }

    }
    }

    void resultTap(){
    t.stop(z);//timer stop

    Serial.print("number of result: ");//showing number of push
    Serial.println(buttonPushCounter);
    delay(5000);
    }

    البته من این برنامه رو روی ال سی دی کاراکتری نوشتم و الان اینجا یکم به مشکل برمیخوذید اما برام این مهمه که بعد مثلا یک دقیقه زیربرنامه اجرا که نمیشه البته همونطوذ که بالا گفتم وقتی عدد 1000 میشه 100 برنامه درس اجرا میشه
    ویرایش توسط ANOOSHEH : 07-13-2016 در ساعت 01:25 PM

  4. #4
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    نقل قول نوشته اصلی توسط ANOOSHEH نمایش پست ها
    خب من میخوام از امکانات اردوینو استفاده کنم و با تایمر این برنامه رو بنویسم ببنید من بذنامه ریر رو نوشتم ولی وقتی که tm =tm*1000*60 میکنم (1000 تبدیل ثانیه به میلی ،60 تبدیل دقیقه به ثانیه) برنامه به زیر برنامه
    resultTap
    نمیره ولی اگه همین اعداد بشه tm=tm*60*100دقیقا راس 6 ثانیه (اگه tm =1)میره زیر برنامه مشکل از کجاس





    البته من این برنامه رو روی ال سی دی کاراکتری نوشتم و الان اینجا یکم به مشکل برمیخوذید اما برام این مهمه که بعد مثلا یک دقیقه زیربرنامه اجرا که نمیشه البته همونطوذ که بالا گفتم وقتی عدد 1000 میشه 100 برنامه درس اجرا میشه

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

    delay(5000 رو بردار ببین مشکلت چقدر حل میشه

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  

SEO by vBSEO