Air Freshener With ESP8266

پروژه تبدیل خوشبو کننده به اینترنت اشیا با ESP8266 (قسمت چهارم)

در ادامه ی آموزش اینترنت اشیا و تبدیل اسپری خوشبو کننده به سیستم IOT ، به بخش خواندن و نوشتن در حافظه ی EEPROM رسیده ایم. در این بخش با نحوه ی فراخوانی کتابخانه و دستورات آن آشنا می شویم.

نوشتن و خواندن در حافظه ی EEPROM :

برای شروع کار باید اول از همه کتابخانه ی مربوط به EEPROM  را فراخوانی کنیم.

#include <EEPROM.h>

بعد از آن از طریق define خانه هایی از EEPROM که می خواهیم از آنها استفاده کنیم را نام گذاری می کنیم. این کار برای استفاده راحت تر در برنامه است. و اینکه اگر بخواهیم خانه ای را عوض کنیم لازم نیست در کل برنامه ببینیم کجا از آن استفاده کرده ایم. و فقط define را عوض می کنیم.

#define eepromTime 500
#define eepromFlagLight 508
#define eepromSSID 400
#define eepromPass 450

در اولین مرحله باید به eeprom  بگوییم که با چند خانه شروع به کار کند.

///////////////////////////////////////////////////////////////////////////////read eeprom
  EEPROM.begin(512);
  delay(10);
  val = EEPROM.read(eepromTime);
  if (val < 10 || val > 60)
    val = 10;

  flagLight = EEPROM.read(eepromFlagLight);
  if (flagLight != 11 && flagLight != 22 && flagLight != 33)
    flagLight = 33;
  /////////////////////////////////////////////////////////////EEPROM SSID
  while (EEPROM.read(eepromSSID + n) != 255)
  {
    sVal += (char)EEPROM.read(eepromSSID + n);
    n++;
    delay(1);
  }
  _SSID = sVal;
  ssid = &_SSID[0];
  Serial.println("");
  Serial.println(ssid);
  sVal = "";
  n = 0;
  flagConnectWiFi = true;
  ////////////////////////////////////////////////////////////EEPROM PASSWORD
  while (EEPROM.read(eepromPass + n) != 255)
  {
    sVal += (char)EEPROM.read(eepromPass + n);
    n++;
    delay(1);
  }
  _PASSWORD = sVal;
  password = &_PASSWORD[0];
  Serial.println(password);
  sVal = "";
  n = 0;
  flagConnectWiFi = true;

در قسمت اول که از EEPROM عدد می خوانیم، دستورات راحت هستند و چیزه خاصی ندارند. هر عدد در یک بایت ذخیره می شود. ولی وقتی می خواهیم در EEPROM یک رشته ذخیره کنیم و بخوانیم، کمی پیچیده می شود. چون رشته به صورت عددی در حافظه ذخیره می شود. و هر کارکتر از رشته به صورت کد اسکی در یک خانه (بایت) از حافظه ذخیره می شود. موقع خواندن هم یکی یکی باید عدد های خانه ها را خواند و به کارکتر تبدیل کرد. و این کارکتر ها را به هم چسباند تا دوباره رشته ساخته شود.

وقتی که در خانه ای از حافظه EEPROM چیزی نوشته نشده باشد عدد 255 ذخیره شده است. یعنی همه ی بیتهای آن یک است.

if (flagConnectWiFi) {
    byte l;
    for (l = 0; l < 40; l++) {
      EEPROM.write((eepromSSID + l), _SSID[l]);
      delay(5);
    }
    for (l = 0; l < 40; l++) {
      EEPROM.write((eepromPass + l), _PASSWORD[l]);
      delay(5);
    }
    flagConnectWiFi = false;
  }
  EEPROM.write(eepromTime, val);
  EEPROM.write(eepromFlagLight, flagLight);
  EEPROM.commit();

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

در آخر کار هم باید EEPROM.commit را حتما قرار دهیم تا عملیات تکمیل شود.

در ادامه فیلمی را که برای شما تهیه کرده ام را قرار داده ام:

 

 

 

دیدگاه ها :

من بات نیستم

  1. خسته نباشید ممنون به خاطر این وبسایت زیبا

  2. سلام.خواستم بابت وبسایت خوبتون ازتون تشکر کنم و امیدوارم باعث ایجاد انگیزه براتون بشه

  3. سلام میشه لینک داخل مطلبو چک کنید.برای من
    مشکل داشت.ممنون

    • سبحان موثق گفت:

      سلام داخل مطلب لینکی موجود نمی باشد. شما کدام لینک منظورتان می باشد؟

  4. sorenstore.com گفت:

    اقا خیلی وبسایتتون عالیه

  5. خسته نباشید ممنون به خاطر این مطالب کاربردی

  6. titangame.ir گفت:

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

  7. oliveland.ir گفت:

    تو زمینه ای که فعالیت میکنید جزو بهترین سایت ها
    هستید.

نظرات برای این صفحه بسته می باشد!!!!!