صفحه 2 از 2 نخستنخست 12
نمایش نتایج: از 11 به 20 از 23
Like Tree4 لایک

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

Hybrid View

  1. #1
    Member
    تاریخ عضویت
    May 2016
    نوشته ها
    86
    ممنون من کدتون یکم تغییر دادم شد کد زیر یکم ایراد داره اگه چکش کنید ممنون میشم در ضمن من از پول داون استقاده کردن بخاطر همین شرط برابری رو low قرار دادم ایرادش اینه که کلیدها رو چن بار میشمره و فاصله زمانی برابر 20 میکرو ثانیه ثبت میشه اونم چن بار باوجود اینکه من یه حلقه whileگذاشتم که کلید تغییر حالت داد بره خط بعدی و قاصله دوبار کلیذ زدن من قطعاا بیشتر از 20 میکرو ثانیه هستش




    unsigned long timer=0;
    boolean count = true;
    boolean show = true;




    void setup() {
    pinMode(16,INPUT);
    Serial.begin(9600);

    }

    void loop() {

    if (count ==false){
    if(digitalRead(16)==LOW){
    while(digitalRead(16)==HIGH);show = false;
    }
    }
    if (count == true){
    if( digitalRead(16) == LOW){timer = micros(); while(digitalRead(16)==HIGH);count = false;
    }
    }
    if (show == false){
    Serial.println(micros() - timer);
    show=true;count = true;
    delay(50);
    }
    }
    ویرایش توسط ANOOSHEH : 07-16-2016 در ساعت 10:36 AM

  2. #2
    Senior Member
    تاریخ عضویت
    Dec 2013
    محل سکونت
    ایران - شیراز
    نوشته ها
    220
    به خاطر اینه که تاخیر های 1 ثانیه ایی رو حذف کردی

  3. #3
    Member
    تاریخ عضویت
    May 2016
    نوشته ها
    86
    و تجربه ثابت کرده اینکه milisو micros را مدام از مقدار اولیه اش کم کنیم مدام خطا میده و اعداد پرت در ضمن این دوتا دستور مدام در طول برنامه در حال شمردن هستند در صورتی که من فقط در یک زیر بذنامه میخام زمان شروغ به شمارش و و stop
    شود این خودش در برنامه اختلال ایجاد میکنه در ضمن هر حدود 70 دقیقه مقدار انها صفر میشه و اگه این پایان 70 دقیقه دقیقا بیفته وسط برنامه من مشکل ایجاد میکنه من توی برنامه code vision این برنامه رو با اینتراپت نوشتم و فقط کدهای اون رو با اردوینو میخام معادل این کدها

    #asm
    .equ __lcd_port=0x1B ;PORTA
    #endasm

    و بعد هر جا خواستم تایمر راه بیفته
    #asm("sei")
    و هر جا تایمر از کار بیفته

    #asm("cli")

    با یه سری مخلفات دیگه که ازش صرفنظر کردم

    ممنون میشم یکم راجع به کتابخونه stopwatch و نحوه درس کردن و کار کردنش توضیح بدید ببینید برنامه من طولانیه من توضیح مختصری راجع بهش دادم که کد اصلی و طریقه نوشتنش دستم بیاد
    دقت اندازه گیری در برنامه برای من مهمه و قک میکنم حلقه های تو در تو if دقت برنامه رو پایین میاره (*برنامه اینه که بعد از برقراری یه سری شرط که خودش چنتا if هستش زمان شروع به شمارش کنه و بعد از فشرده شده یه کلید خاص که اونم بستگی به شروط داره و خودش چنتا if داره شمارش زمان متوقف میشه ینی من زمان بین برقراری شروط و فشرده شده یک کلید متناسب با اون رو میخوام )*اینکه بخوام زمان رو هم با if و کم کردنش از زمان اولیه بدست بیارم تجربه ثابت کرده اعداد اونجوری که باید نیست
    ویرایش توسط ANOOSHEH : 07-16-2016 در ساعت 11:55 AM

  4. #4
    Senior Member
    تاریخ عضویت
    Dec 2013
    محل سکونت
    ایران - شیراز
    نوشته ها
    220
    سرعت پردازش بخاطر چند if پایین نمیاد.
    اینکه خودتو جای پردازنده بزاری و بگی آخی داره کم میاره کاملا اشتباه است. سرعت همین پردازنده ۱۶ مگاهرتزی انقدر زیاد هست که نتونی درکش کنی. ۱۶ مگاهرتز یعنی ۱۶ میلیون بار در هر ثانیه.
    میلی ثانیه یعنی ۱۰۰۰ بار در ثانیه.
    یعنی شما تقریبا می تونی ۱۰۰۰ دستور if رو در کسری از ثانیه پردازش کنی.
    اگر خودت رو جای پردازنده بزاری نمی تونی برنامه نویسی کنی
    لایک کردن

  5. #5
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    نقل قول نوشته اصلی توسط solxsado نمایش پست ها
    سرعت پردازش بخاطر چند if پایین نمیاد.
    اینکه خودتو جای پردازنده بزاری و بگی آخی داره کم میاره کاملا اشتباه است. سرعت همین پردازنده ۱۶ مگاهرتزی انقدر زیاد هست که نتونی درکش کنی. ۱۶ مگاهرتز یعنی ۱۶ میلیون بار در هر ثانیه.
    میلی ثانیه یعنی ۱۰۰۰ بار در ثانیه.
    یعنی شما تقریبا می تونی ۱۰۰۰ دستور if رو در کسری از ثانیه پردازش کنی.
    اگر خودت رو جای پردازنده بزاری نمی تونی برنامه نویسی کنی

    توصیف جالبی بود اقای امیر

  6. #6
    Member
    تاریخ عضویت
    May 2016
    نوشته ها
    86
    ینی میخاید بگید دستوری معادل انچه در codevision هست تو واردوینو وجود نداره من دلم میخاد با امکانات اردوینو اشنا شم علاوه بر اینکه کارم راه بیفته علاوه بر این اون ایراد 70 دقیقه رو چیکار کنم ؟

  7. #7
    Senior Member
    تاریخ عضویت
    Dec 2013
    محل سکونت
    ایران - شیراز
    نوشته ها
    220
    من با همین روش یه ترموستات دیجیتال برای یخچال درست کردم که 15 روشن و دقیقه خاموش می کنه و بخوبی هم کار می کنه
    ترموستات الکترونیکی یخچال و فریزر با نمایشگر دیجیتالی | پورتال دیجیتال
    لایک کردن

  8. #8
    Member
    تاریخ عضویت
    May 2016
    نوشته ها
    86
    ببخشید تو برنامه
    t.after(tm ,resultTap);
    بعد از اجرای resultTap برنامه کجا میره؟؟؟
    اگه بخام دقیقتر بپرسم من میخام توی یه حلقه for که توش while نوشته شده و توی اون t.update .چن بار (به تعداد حلقه for)این برنامه بعد از گذشت رمان tmبره زیر برنامه resultTapرو اجرا کنه ولی برنامه فقط یه بار زمان tm رو طی میکنه و در حلقه های بعدی بدون مکث میره زیر برنامه در صورتی که من میخام دوباره tm میلی ثانیه طول بکشه بعد بره زیر برنامه در ضمن من از دستوره t.everyهم استفاده کردم ج نمیده

  9. #9
    Junior Member
    تاریخ عضویت
    Nov 2013
    نوشته ها
    4
    این قطعه کد t.every(tm, result);
    رو به این تغییر بده


    t.every(tm, result());
    به دو پرانتز بعد از result توجه کن
    لایک کردن

صفحه 2 از 2 نخستنخست 12

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

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

SEO by vBSEO