Làm Sao để Lấy Lại Giá Trị Của 1 Biến Khi Arduino Bị Mất điện

  • Giải pháp cho các bạn ở đây là sử dụng EEPROM. Có nhiều bạn hay hỏi mình câu hỏi này, bài viết này mình sẽ trả lời đến các bạn câu hỏi đó.

  • Bạn có thể tham khảo bài viết trên trang web của arduino: https://www.arduino.cc/en/Reference/EEPROM

  • Bộ vi điều khiển trên bo mạch dựa trên Arduino và Genuino có EEPROM: bộ nhớ có giá trị được giữ khi bảng bị tắt (giống như một ổ cứng nhỏ). Thư viện này cho phép bạn đọc và ghi các byte đó.

  • EEPROM trên các bo mạch Arduino và Genuino khác nhau có lượng dung lượng lưu trữ khác nhau: 1024 byte trên ATmega328P, 512 byte trên ATmega168 và ATmega8, 4 KB (4096 byte) trên ATmega1280 và ATmega2560. Các bo mạch Arduino và Genuino 101 có không gian EEPROM là 1024 byte.

  • Bắt đầu lập trình, bạn cần include nó ra, đặt ở dòng đầu tiên của chương trình #include <EEPROM.h>

Các hàm của EEPROM:

  • EEPROM Clear: Xóa các byte đã lưu trên EEPROM.
  • EEPROM Read: Đọc các byte đã lưu trên EEPROM.
  • EEPROM Write: Ghi giá trị các byte lên EEPROM.
  • EEPROM Crc: Tính CRC nếu giá trị lưu trên EEPROMlà 1 mảng (array).
  • EEPROM Get: Lấy giá trị từ EEPROM và ghi ra serial.
  • EEPROM Put: Đặt giá trị trong EEPROM bằng cách sử dụng ngữ nghĩa biến.
  • EEPROM Update: Cập nhật lại giá trị trên EEPROM

Một vấn đề mà các bạn cần đặc biệt chú ý, đó là số lần ghi (write) và EEPROM là có giới hạn, nên cần cần nhắc khi sử dụng. Quá số lần ghi này thì có thể EEPROM sẽ không ghi vào được nữa.

Ta đến ví dụ đầu tiền, Xóa EPPROM

/* * EEPROM Clear * * Đặt tất cả các byte của EEPROM thành 0.  * Vui lòng xem eeprom_iteration để biết thêm chi tiết  * xem cách vượt qua EEPROM. * */ #include <EEPROM.h> void setup() { // khởi tạo chân LED làm đầu ra. pinMode(13, OUTPUT); /*** Lặp lại qua từng byte của bộ lưu trữ EEPROM. ***/ for (int i = 0 ; i < EEPROM.length() ; i++) { EEPROM.write(i, 0); } // bật đèn LED khi chúng ta hoàn thành digitalWrite(13, HIGH); } void loop() { /** Vòng lặp trống. **/ }

Bây giờ chúng ta sẽ đến vị dụ thứ 2, Đọc các byte đã lưu trên EEPROM.

#include <EEPROM.h>

void setup() { Serial.begin(9600); } void loop() { for (int i = 0 ; i < EEPROM.length() ; i++) { Serial.print("Gia tri tai vị tri: ");Serial.print(i);Serial.print(" la:); Serial.println(EEPROM.read(i)); delay(500); } }

Từ khóa » Cách Sử Dụng Eeprom Trong Arduino