EEPROM ESP32/ESP8266 - Code
Có thể bạn quan tâm
EEPROM ESP32/ESP8266 EEPROM ESP32/ESP8266
Home » Arduino » ESP32 Flash Memory – Store Permanent Data (Write and Read)
Trong bài viết này, chúng tôi sẽ hướng dẫn bạn cách lưu trữ và đọc các giá trị từ bộ nhớ flash ESP32 bằng Arduino IDE. Dữ liệu được lưu trong bộ nhớ flash vẫn ở đó ngay cả khi ESP32 đặt lại hoặc khi nguồn điện bị ngắt. Để làm ví dụ, chúng tôi sẽ chỉ cho bạn cách lưu trạng thái GPIO cuối cùng.Trước khi tiếp tục với hướng dẫn này, bạn nên cài đặt tiện ích bổ sung ESP32 trong IDE Arduino của mình. Thực hiện theo một trong các hướng dẫn sau để cài đặt ESP32 trên Arduino IDE, nếu bạn chưa cài đặt.- Cài đặt ESP32 trong Arduino IDE (Hướng dẫn dành cho Windows)
- Cài đặt ESP32 trong Arduino IDE (hướng dẫn Mac và Linux)
Flash Memory
Dữ liệu được lưu trong bộ nhớ flash vẫn ở đó ngay cả khi ESP32 đặt lại hoặc khi nguồn điện bị ngắt. Bộ nhớ flash rất giống với EEPROM. Cả hai đều là những bộ nhớ không thay đổi.Lưu dữ liệu trong bộ nhớ flash đặc biệt hữu ích để:- Nhớ trạng thái cuối cùng của một biến;
- Lưu các thiết lập;
- Lưu số lần một thiết bị đã được kích hoạt;
- Hoặc bất kỳ loại dữ liệu nào khác mà bạn cần lưu vĩnh viễn.
EEPROM Library
Để đọc và ghi từ bộ nhớ flash ESP32 bằng Arduino IDE, chúng tôi sẽ sử dụng thư viện EEPROM. Việc sử dụng thư viện này với ESP32 rất giống với việc sử dụng nó với Arduino. Vì vậy, nếu bạn đã sử dụng Arduino EEPROM trước đây, thì điều này không khác nhiều.Vì vậy, chúng tôi cũng khuyên bạn nên xem qua bài viết của chúng tôi về Arduino EEPROM.Với ESP32 và thư viện EEPROM, bạn có thể sử dụng tối đa 512 byte trong bộ nhớ flash. Điều này có nghĩa là bạn có 512 địa chỉ khác nhau và bạn có thể lưu giá trị từ 0 đến 255 ở mỗi vị trí địa chỉ.Write
Để ghi dữ liệu vào bộ nhớ flash, bạn sử dụng hàm EEPROM.write () giá trị truyền vào là địa chỉ nơi bạn muốn lưu dữ liệu và giá trị (biến byte) bạn muốn lưu:EEPROM.write(address, value);Ví dụ: để lưusố 9 trên địa chỉ 0, bạn sẽ có:EEPROM.write(0,9);Để lưu dữ liệu lại bạn dùng lệnh comit() sau khi đã write xong;EEPROM.commit();Read
Để đọc một byte từ bộ nhớ flash, bạn sử dụng hàm EEPROM.read (). Hàm này ltruyền vào địa chỉ cần đọc dữ liệu và nó sẽ trả về 1 byte dữ liệu.EEPROM.read(address);Ví dụ, để đọc 1 byte được lưu trữ trước đó trong địa chỉ 0, hãy sử dụng:EEPROM.read(0);Remember Last GPIO State
Để chỉ cho bạn cách lưu dữ liệu trong bộ nhớ flash ESP32, chúng tôi sẽ lưu trạng thái cuối cùng của đầu ra, trong trường hợp này là đèn LED. Ví dụ, hãy tưởng tượng tình huống sau: Bạn đang điều khiển đèn bằng ESP32 Bạn bật đèn lên ESP32 đột ngột mất điện. Khi có nguồn trở lại, đèn vẫn tắt - vì đèn không giữ trạng thái cuối cùngSchematic
Nối nút nhấn và đèn LED vào ESP32 như thể hiện trong sơ đồ sau.Code
// include library to read and write from flash memory #include <EEPROM.h> // define the number of bytes you want to access #define EEPROM_SIZE 1 // constants won't change. They're used here to set pin numbers: const int buttonPin = 4; // the number of the pushbutton pin const int ledPin = 16; // the number of the LED pin // Variables will change: int ledState = HIGH; // the current state of the output pin int buttonState; // the current reading from the input pin int lastButtonState = LOW; // the previous reading from the input pin // the following variables are unsigned longs because the time, measured in // milliseconds, will quickly become a bigger number than can be stored in an int. unsigned long lastDebounceTime = 0; // the last time the output pin was toggled unsigned long debounceDelay = 50; // the debounce time; increase if the output flickers void setup() { Serial.begin(115200); // initialize EEPROM with predefined size EEPROM.begin(EEPROM_SIZE); pinMode(buttonPin, INPUT); pinMode(ledPin, OUTPUT); // read the last LED state from flash memory ledState = EEPROM.read(0); // set the LED to the last stored state digitalWrite(ledPin, ledState); } void loop() { // read the state of the switch into a local variable: int reading = digitalRead(buttonPin); // check to see if you just pressed the button // (i.e. the input went from LOW to HIGH), and you've waited long enough // since the last press to ignore any noise: // If the switch changed, due to noise or pressing: if (reading != lastButtonState) { // reset the debouncing timer lastDebounceTime = millis(); } if ((millis() - lastDebounceTime) > debounceDelay) { // whatever the reading is at, it's been there for longer than the debounce // delay, so take it as the actual current state: // if the button state has changed: if (reading != buttonState) { buttonState = reading; // only toggle the LED if the new button state is HIGH if (buttonState == HIGH) { ledState = !ledState; } } } // save the reading. Next time through the loop, it'll be the lastButtonState: lastButtonState = reading; // if the ledState variable is different from the current LED state if (digitalRead(ledPin)!= ledState) { Serial.println("State changed"); // change the LED state digitalWrite(ledPin, ledState); // save the LED state in flash memory EEPROM.write(0, ledState); EEPROM.commit(); Serial.println("State saved in flash memory"); } }Chúc các bạn thành công!
Mời bạn xem thêm:
No comments:
Post a Comment
Newer Post Older Post Home Subscribe to: Post Comments (Atom)Khóa học miễn phí
Học lập trình STM32 với Visual CodeBài đăng mới
[Lập trình RTL8720] #2: Interupt GPIO | Ngắt ngoài
Bài đăng phổ biến
- Unlock password PLC Mitsubishi FX Series | Read password PLC FX This is Software Crack PLC FX Series (FX0N, FX1N, FX2N, FX3S, FX3G, FX3U) Note: Only Unlock Password have 8digits. Link Software: Download...
- Điều khiển PID trên Siemens PLC sử dụng khối PID Compact PID là gì? Về thực tế định nghĩa của PID và ứng dụng của nó trong các hệ thống thì đã có rất nhiều bài viết nói về nó. Ở đây Coder96 sẽ nói...
- EEPROM ESP32/ESP8266 ESP32 Flash Memory – Store Permanent Data (Write and Read) Trong bài viết này, chúng tôi sẽ hướng dẫn bạn cách lưu trữ và đọc các giá trị ...
- ESP32 Repeater Wifi - Kích sóng Wifi bằng ESP32 Cách đơn giản nhất để tự mình làm một kích sóng wifi bằng chính module lập trình ESP32 mà ai cũng có thể làm được. Tất cả chỉ trong vài cú...
- C# With PLC FX3U | Giao tiếp với FX PLC bằng thư viện Melsec.dll của HTT Offical C# là một ngôn ngữ khá mạnh, được sử dụng khá rộng rãi trong việc lập trình phần mềm. Với việc sử dụng những phần mềm SCADA của các hãng n...
Translate
Từ khóa » Cách Sử Dụng Eeprom Trong Arduino
-
Lưu Giá Trị Vào EEPROM | Cộng đồng Arduino Việt Nam
-
Hướng Dẫn Sử Dụng Ic Eeprom 24Cxx Của Atmel Và Thư Viện
-
Giới Thiệu Về EEPROM Trong Arduino
-
EEPROM: Mọi Thứ Bạn Cần Biết Về Bộ Nhớ Này
-
Lưu Các Giá Trị Double, Float, Int… Vào Bộ Nhớ EEPROM Của Arduino
-
Arduino - Chi Tiết Về Bộ Nhớ EEPROM - YouTube
-
HƯỚNG DẪN EEPROM - Arduino 7 - YouTube
-
Làm Sao để Lấy Lại Giá Trị Của 1 Biến Khi Arduino Bị Mất điện
-
Eeprom Arduino Là Gì
-
Eeprom Là Gì Cùng Tìm Hiểu Eeprom Arduino Là Gì - Bình Dương
-
Lập Trình ESP32 Với Arduino IDE → Bộ Nhớ Flash ESP32 - Ohtech
-
Giao Tiếp EEPROM Serial 2-wire 24C04 Với Arduino - Blog Mecsu