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

موضوع: نگه داشتن وضعیت رله بعد از قطع و وصل برق !!!!

  1. #11
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    3,920
    نقل قول نوشته اصلی توسط siib نمایش پست ها
    خیلی چیز باحالی بود
    چیزی که فهمیدم:
    به نظر میاد این میکروها 3 جور حاقظه دارن
    Flash که برنامه (اسکچ) اونجا ذخیره میشه ، به نظر میاد بوتلودر هم همینجا ذخیره میشه
    SRAM که مقادیر متغیرهایی که در حین برنامه ایجاد میشن داخلش ذخیره میشن ، بعد از قطع و وصل شدن تغذیه این حافظه پاک میشه
    ٍEEPROM حافظه ای که برنامه برای ذخیره سازی مقادیر برای مدت طولانی تر استفاده میکنه ، این حاقظه و Flash با قطع و وصل شدن برق مقادیرشون سر جاش باقی میمونه

    برای ذخیره مقادیر توی EEPROM و بازخوانی هم میشه از کتابخونه EEPROM (https://www.arduino.cc/en/Reference/EEPROM)استفاده کرد
    و این brown out detection خیلی چیز باحالی به نظر میاد اما شاید
    خوب باشه که قبل ورودی ولتاژ آردوینو به دیود بذاریم و خازن ها رو بعد دیود وصل کنیم و مقدار ولتاژ ورودی قبل دیود رو analogread کنیم و هر وقت برق قطع شد قبل دیود ولتاژ سریعا صفره و احتمالا سریع تر متوجه این موضوع برای ذخیره سازی مقادیر میشیم
    از اونجایی که فرکانس کریستال آردوینو هم 16 مگاهرتز هست فکر میکنم بدون اینتراپت هم مشکلی پیش نیاد و این چک کردن ولتاژ توی همون loop جا بگیره (البته توی loop دیگه delay نباید باشه)
    به نظر من این کار دو تا مشکل داره
    اولیش که خودت اشاره کردی کد اصلا نباید delay داشته باشه ( که البته با millis ) این رو حل می کنیم
    دوم هم اینکه عملا داری یه پردازش انجام میدی اگه پین های آنالوگت آزاد هم باشن همین analogread چون داره از adc استفاده می کنه cpu رو مشغول خودش می کنه به طور دائم
    لایک کردن

  2. #12
    Senior Member
    تاریخ عضویت
    Dec 2013
    محل سکونت
    ایران - شیراز
    نوشته ها
    213
    تئوری ها رو ول کنید عملی رو بچسبید تا این بنده خدا هم به نتیجه برسه
    #include <EEPROM.h>

    void setup() {
    pinMode(2,OUTPUT);
    pinMode(3,OUTPUT);
    pinMode(4,OUTPUT);

    pinMode(5,INPUT_PULLUP);
    pinMode(6,INPUT_PULLUP);
    pinMode(7,INPUT_PULLUP);

    digitalWrite(2,EEPROM.read(1));
    delay(1);
    digitalWrite(3,EEPROM.read(2));
    delay(1);
    digitalWrite(4,EEPROM.read(3));
    delay(1);
    }

    void loop() {
    if (digitalRead(5) == 0){
    digitalWrite(2,!digitalRead(2));
    EEPROM.write(1, digitalRead(2));
    delay(1);
    }

    if (digitalRead(6) == 0){
    digitalWrite(3,!digitalRead(3));
    EEPROM.write(2, digitalRead(3));
    delay(1);
    }

    if (digitalRead(7) == 0){
    digitalWrite(4,!digitalRead(4));
    EEPROM.write(3, digitalRead(4));
    delay(1);
    }
    }

  3. #13
    Senior Member
    تاریخ عضویت
    Nov 2014
    نوشته ها
    255
    نقل قول نوشته اصلی توسط solxsado نمایش پست ها
    تئوری ها رو ول کنید عملی رو بچسبید تا این بنده خدا هم به نتیجه برسه
    #include <EEPROM.h>

    void setup() {
    pinMode(2,OUTPUT);
    pinMode(3,OUTPUT);
    pinMode(4,OUTPUT);

    pinMode(5,INPUT_PULLUP);
    pinMode(6,INPUT_PULLUP);
    pinMode(7,INPUT_PULLUP);

    digitalWrite(2,EEPROM.read(1));
    delay(1);
    digitalWrite(3,EEPROM.read(2));
    delay(1);
    digitalWrite(4,EEPROM.read(3));
    delay(1);
    }

    void loop() {
    if (digitalRead(5) == 0){
    digitalWrite(2,!digitalRead(2));
    EEPROM.write(1, digitalRead(2));
    delay(1);
    }

    if (digitalRead(6) == 0){
    digitalWrite(3,!digitalRead(3));
    EEPROM.write(2, digitalRead(3));
    delay(1);
    }

    if (digitalRead(7) == 0){
    digitalWrite(4,!digitalRead(4));
    EEPROM.write(3, digitalRead(4));
    delay(1);
    }
    }
    ای قربون دستت ) خودم از سوالی که پرسیدم و کار به اینجا رسید اصلا کلی لذت بردم )
    دوست عزیز ممنون بابت کد
    لایک کردن

  4. #14
    Junior Member
    تاریخ عضویت
    Oct 2016
    نوشته ها
    1
    ممنون از پاسخ خوبتون
    ویرایش توسط magmagmary : 10-02-2016 در ساعت 05:19 AM

  5. #15
    Junior Member
    تاریخ عضویت
    Dec 2016
    نوشته ها
    3
    داداش مشکلت حل شد؟منم این مشکلو دارم

  6. #16
    Junior Member
    تاریخ عضویت
    May 2016
    نوشته ها
    15
    این کد کارتون رو راه می ندازه اما حافظه eeprom بعد از 100 هزار بار که روش اطلاعات بنویسید از بین می ره
    یعنی اینکه شما وضعیت رله ها رو تا 100 هزار بار خاموش و روشن کردید دیگه حافظه ی eeprom از بین رفته
    لایک کردن

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

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

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

SEO by vBSEO