💾 درس 89: ذخیره‌ی فایل روی حافظه‌ی ESP32

تنظیمات را در یک فایل روی حافظه‌ی فلش بنویس تا بعد از خاموش و روشن شدن یادش بماند.

سطح: پیشرفته · زمان: حدود 18 دقیقه · مفاهیم: SPIFFS، فایل، JSON

قدم‌های این درس

  1. چرا فایل؟
  2. قدم ۱ — مدار
  3. قدم ۲ — بخوان، عوض کن، بنویس
  4. اشتباه رایج — "w" و "a"
  5. چالش

نمونه‌ای از کد این درس

// ESP32 + SPIFFS: keep settings in a file that survives a restart.
#include <SPIFFS.h>
#include <ArduinoJson.h>

const int LED = 4;
int brightness = 128;
int boots = 0;

void loadSettings() {
  if (!SPIFFS.exists("/settings.json")) {
    Serial.println("No settings yet, using defaults");
    return;
  }
  File f = SPIFFS.open("/settings.json", "r");
  String text = f.readString();
  f.close();
  Serial.println("Read: " + text);
  JsonDocument doc;
  if (deserializeJson(doc, text)) return;   // broken file -> keep defaults
  brightness = doc["brightness"] | 128;
  boots = doc["boots"] | 0;
}

void saveSettings() {
  JsonDocument doc;
  doc["brightness"] = brightness;
  doc["boots"] = boots;
  File f = SPIFFS.open("/settings.json", "w");  // "w" replaces the file
  serializeJson(doc, f);
  f.close();
}

void setup() {
  Serial.begin(115200);
  if (!SPIFFS.begin(true)) {               // true = format if empty
    Serial.println("SPIFFS failed!");
    return;
  }
  loadSettings();
  boots++;
  saveSettings();
  Serial.printf("Boot number %d, brightness %d\n", boots, brightness);
  ledcAttach(LED, 5000, 8);
  ledcWrite(LED, brightness);
}

void loop() {
}

چرا این درس؟

دوره‌ی تینکرکد فارسی تعاملی است: هر قدم را خودت داخل شبیه‌ساز انجام می‌دهی — مدار واقعی می‌چینی، کد واقعی اجرا می‌کنی و نتیجه را همان لحظه می‌بینی. این درس روی درس‌های قبلی ساخته شده، پس اگر تازه شروع کرده‌ای از درس ۱ بیا!

این درس را رایگان در شبیه‌ساز شروع کن 🎓

درس‌های دیگر دوره

📨

درس 88: MQTT: پیام‌رسان اشیا

🏠

درس 90: پروژه: داشبورد خانه روی گوشی