💾 درس 89: ذخیرهی فایل روی حافظهی ESP32
تنظیمات را در یک فایل روی حافظهی فلش بنویس تا بعد از خاموش و روشن شدن یادش بماند.
سطح: پیشرفته · زمان: حدود 18 دقیقه · مفاهیم: SPIFFS، فایل، JSON
قدمهای این درس
- چرا فایل؟
- قدم ۱ — مدار
- قدم ۲ — بخوان، عوض کن، بنویس
- اشتباه رایج — "w" و "a"
- چالش
نمونهای از کد این درس
// 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() {
}
چرا این درس؟
دورهی تینکرکد فارسی تعاملی است: هر قدم را خودت داخل شبیهساز انجام میدهی — مدار واقعی میچینی، کد واقعی اجرا میکنی و نتیجه را همان لحظه میبینی. این درس روی درسهای قبلی ساخته شده، پس اگر تازه شروع کردهای از درس ۱ بیا!
این درس را رایگان در شبیهساز شروع کن 🎓