نمایش نتایج: از 1 به 10 از 10
Like Tree5 لایک
  • 1 Post By magmagmary
  • 1 Post By magmagmary
  • 2 Post By Tiranoid
  • 1 Post By shobeir90

موضوع: چند بار 1شدن یک پایه

  1. #1
    Senior Member
    تاریخ عضویت
    Jan 2016
    محل سکونت
    ایران عزیز
    نوشته ها
    200

    چند بار 1شدن یک پایه

    سلام من میخوام یه چیزی بسازم که مثلا اگر دوبار پشت سر هم یک پایه1شد یه عملیات انجام بده
    و دوبار دیگه که1شد یه کار دیگه چطور میشه کدش؟
    مثلا پایه 13دوبار 1شد عملیات انجام بشه
    دوبار دیگه یک شد عملیات دیگه

  2. #2
    مدیر ویژه
    تاریخ عضویت
    Mar 2014
    نوشته ها
    586
    یک پین رو به عنوان ورودی تعیین کن
    main:
    سی پی رو نگه دار روی این پین اماده شمارش باشه با هر بار فشار
    وقتی که دوبار شد شرایط اولیه انجام بده بعد دوباره
    سی پی رو نگه دار روی این پین اماده شمارش باشه با هر بار فشار
    حالا شرایط ثانویه اجرا کن
    goto main
    end

  3. #3
    Senior Member
    تاریخ عضویت
    Jan 2016
    محل سکونت
    ایران عزیز
    نوشته ها
    200
    ممنون از پاسخ ولی من مبتدی هستم اگه میشه لطفا کد رو بگید
    چطور یک پایه رو تشخیص بدم دوبار 1شد؟
    من میخوام بار اول که دوبار 1شد یه کاری کنه
    چند لحظه بعد که1شد یه کار دیگه همونجور چند تا مرحله مثل همین.
    امکان پذیره اینطور؟؟!

  4. #4
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    3,981
    به نظر من بهترین و مطقی ترین راه تعریف کانتر هست

    به این صورت که به ازای هر بار شمارش یه دونه به این کانتر اضافه بشه .

    کد:
    int counter = 0;
    void setup() {
      // put your setup code here, to run once:
      pinMode(3, INPUT);
    }
    
    
    void loop() {
      // put your main code here, to run repeatedly:
      if (digitalRead(3) == HIGH) {
        counter++;
      }
      if (counter == 1) {}
      else if (counter == 2) {}
      else if (counter == 3) {}
      else if (counter == 4) {}
      else {}
    }
    لایک کردن

  5. #5
    Senior Member
    تاریخ عضویت
    Jan 2016
    محل سکونت
    ایران عزیز
    نوشته ها
    200
    در اینجا بعد از کانتر ++اوردید این به چه معناست؟
    چه کاری انجام میده؟

  6. #6
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    3,981
    نقل قول نوشته اصلی توسط hasandimer نمایش پست ها
    در اینجا بعد از کانتر ++اوردید این به چه معناست؟
    چه کاری انجام میده؟
    این یه دونه به مقدار متغیرکانتراضافه میکنه
    هر بار که شما کلید رو فشار بدید یه دونه به این کانتر اضافه میشه

    1
    2
    3
    4
    و الی آخر
    حالا ما میتونید مشابه همون if هایی که من نوشتم روشون شرط بذارید که با هر بار فشار داده شدن کلید اتفاق مورد نظرتون بیفته
    لایک کردن

  7. #7
    Senior Member
    تاریخ عضویت
    Oct 2016
    نوشته ها
    112
    نقل قول نوشته اصلی توسط magmagmary نمایش پست ها
    این یه دونه به مقدار متغیرکانتراضافه میکنه
    هر بار که شما کلید رو فشار بدید یه دونه به این کانتر اضافه میشه

    1
    2
    3
    4
    و الی آخر
    حالا ما میتونید مشابه همون if هایی که من نوشتم روشون شرط بذارید که با هر بار فشار داده شدن کلید اتفاق مورد نظرتون بیفته
    این دستور یجایی باید یچی اضافه بشه که اگر چند دقیقه از پین داده نرسید دوباره 0 بشه و از اول بشماره

  8. #8
    Senior Member
    تاریخ عضویت
    Oct 2016
    نوشته ها
    112
    من که دیگه نمیدونم چ کنم خاهشا ی راهنمایی کنید

  9. #9
    Member
    تاریخ عضویت
    Apr 2015
    محل سکونت
    ایران :|
    نوشته ها
    76
    شما اگه چند فصل اول یه کتاب برنامه نویسی به زبان c رو بخونید قطعا مشکلتون رو حل میکنه. با دو تا مثال آردویینو هم یاد میگیرید چطور برای آردویینو با c بنویسید.

    بعد از اون، براحتی با ساده کردن مسئله تو ذهنتون و نوشتن کدش میتونید جواب مسئله تون رو بگیرید. براتون مثال میزنم

    خب شما میخواین تعداد فشرده شدن یه کلید رو بشمارید. در دنیای رایانه، فشردن شدن یه کلید، یعنی 1 شدن یه بیت ، یا همون high شدن یه بیت.
    در میکروکنترلرها، معمولا یه پایه ورودی خروجی تو میکرو متناظر با یه بیته
    پس
    در گام اول باید یه پایه انتخاب کنید، به عنوان ورودی تعریفش کنید، بعد فشار داده شدنش رو تشخیص بدید. معمولا کلید ها طوری بسته میشن، که با وصل شدن، ولتاژ + رو وصل میکنن به مقصد. اینجا مقصد، پایه ی ورودی میکروکنترلره. پس از وصل شدن مثبت به این پایه، خود میکروکنترلر بیت متناظر با اون رو 1 میکنه. پس ما میتونیم بخونیمش و بفهمیم.
    خب الان ما میتونیم بفهمیم که کلید فشار داده میشه یا نه. اگه پایه مورد نظر رو با یه شرط خوندیم و میکرو به ما گفت که اون پایه 1 هست، یعنی در اون لحظه کلید فشار داده شده.

    حالا باید تعداد این شمردن ها جایی ذخیره بشه. یه متغییر (محلی برای نگه داشتن داده ها) درست میکنیم، و این عدد شمردن رو توش ذخیره میکنیم. هر بار که شرط بالایی به ما گفت کلید زده شده، ما یه شماره بهش اضافه میکنیم. مثلا یک، دو ، سه و ...

    حالا میخوایم بگیم اگه مثلا 5 ثانیه گذشت، و هیچ کلیدی فشار داده نشد، باید تعداد شمارش ها صفر بشه. یعنی یجوری ریست بشه. خب به راحتی میایم یه شرط میذاریم.
    میگیم اگه از زمان آخرین فشرده شدن، 5 ثانیه گذشته بود، اون متغییر که شمارش ها رو توش ذخیره میکردیم، مقدارشو صفر کن.

    الان میخوایم کاری کنیم که اگر مثلا 2 بار کلید فشار داده شده بود فلان کار رو انجام بده. شرط میذاریم، میگیم اگه مقدار اون متغییر که شمارش ها توشه، 2 بود، یعنی دو بار کلید فشار داده شده و هنوز 5 ثانیه هم نگذشته (چون اگه گذشته بود، تو گام قبلی صفر میشد مقدار شمارش ها)، فلان کار انجام بشه.

    تموم. به همین راحتی ! شما با یه هفته وقت گذاشتن براحتی میتونی اون دو سه فصل اول c رو یاد بگیری

    متغییر ها، شرط ها، حلقه ها و... همه فصل های نخست هر کتاب آموزش برنامه نویسی ای هستن
    ویرایش توسط Tiranoid : 11-29-2016 در ساعت 09:23 AM

  10. #10
    مدیر ویژه
    تاریخ عضویت
    Mar 2014
    نوشته ها
    586
    با سپاس از Tiranoid
    لایک کردن

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

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

SEO by vBSEO