Lưu Các Giá Trị Double, Float, Int… Vào Bộ Nhớ EEPROM Của Arduino
Có thể bạn quan tâm
- Arduino / Lập trình
- 2
by Chapichuse · Published 19/04/2017 · Updated 21/04/2017
Trong tất cả các chíp AVR đều có bộ nhớ eeprom, người dùng có thể lưu trữ các giá trị nhất định như các giá trị setting hệ thống, các hằng số, các biến số... mà khi thiết bị khởi động lại không bị mất các giá trị đó (giống như khi lưu vào ổ cứng máy tính).Trong thư viện EEPROM.h của arduino cho phép thực hiện được việc lưu trữ này. Tuy nhiên, các hàm trong thư viện EEPROM.h chỉ cho phép đọc, ghi giá trị của 1 byte nào đó thôi. Đối với các dữ liệu khác byte như float, double, int ... hoặc tất cả các dữ liệu dài hơn 1 byte thì người dùng cần phải viết code để có thể read() and write() các giá trị đó.
Ví dụ : một số float 823.5 bao gồm 4 byte như bản dưới. Để lưu trữ hoặc đọc ra giá trị float này cần đọc, ghi 4 byte đó.
Float (823.5) | |||
01000100 | 01001101 | 11100000 | 00000000 |
Byte [3] | Byte [2] | Byte [1] | Byte [0] |
Để thuận tiện trong quá trình sử dụng lưu trữ, đọc dũ liệu từ epprom người ta đã tạo ra thư viện eeprom mở rộng: http://playground.arduino.cc/Code/EEPROMex
Thư viện này có thêm nhiều tính năng rất hay mà người lập trình arduino có thể sử dụng ngay:
Ví dụ muốn ghi một giá trị Interger vào vị trí nào đó thì chỉ cần gọi lệnh:
EEPROM.writeInt(addressInt,input);
Trong đó:
- addressInt là địa chỉ trên eeprom cần ghi;
- input là giá trị interger cần ghi.
Sau này cần đọc giá trị này ra sử dụng ta chỉ cần gọi lệnh:
int output = EEPROM.readInt(addressInt);
Chú ý: Trước khi lưu một gía trị nào đó vào eeprom cần nhớ địa chỉ và kích thước (size) của kiễu dữ liệu của nó. Địa chỉ ở đây là địa chỉ của byte đầu tiên, các byte tiếp theo sẽ chiếm vị trí (địa chỉ) tiếp theo. Muốn lưu giá trị khác thì phải tránh những địa chỉ này.
Để sử dụng thư viện này chúng ta cần thực hiện các bước sau:
- Tải thư viện về gồm 3 file: EEPROMex.cpp; EEPROMex.h và EEPROMVar.h
- Copy vào vị trí file: ino (file lập trình chính cho arduino)
- Include vào chương trình chính, và khai báo biến, khai báo vị trí lưu dữ liệu trên eeprom
#include <EEPROMex.h>
int addressInt = 30; // vị trí lưu biến Int
int value;
- trong phần setup
Void Setup()
{
EEPROM.setMemPool(0, 1024); //vị tri dau tien và dung luong cua eeprom EEPROM.setMaxAllowedWrites(1024); // số byte cho phép lưu
}
và trong chương trình ta thêm vào dòng lệnh đọc, hoặc ghi giá trị là được:
int input = 30000; int output = 0; EEPROM.writeInt(addressInt,input); // lưu input vào eeprom output = EEPROM.readInt(addressInt); // đọc int từ eeprom tại địa chỉ addressInt, lưu vào output
//phan debug
Serial.print("adress: "); Serial.println(addressInt); Serial.print("input: "); Serial.println(input); Serial.print("output: "); Serial.println(output); Serial.println("");
Kết quả thu được của đoạn chương trình trên là: adress: 30 input: 30000 output: 30000
Để sử dụng thêm tính năng cần đọc file example hoặc các file .cpp, .h của thư viện
Chapichuse
Đam mê công nghệ
You may also like...
- 0
common/common-define.chunk
25/10/2024
- 0
C# Đưa chương trình vào Tray Icon khi Form ở chế độ Minimize
17/10/2015
- 0
Nạp ESP8266-E12 và ESP32-CAM từ ESP8266 E12 NodeMCU
05/05/2021
2 Responses
- Comments2
- Pingbacks0
- Reed Noel viết: 16/03/2018 lúc 11:51 chiều
mình theo hướng dẫn bị lỗi, nhờ giúp đỡ: ‘struct EEPROMClass’ has no member named ‘WriteInt’
Bình luận - Chapichuse viết: 17/03/2018 lúc 11:44 chiều
Bạn thử làm theo các bước sau: 1. Download thu viện về: https://github.com/thijse/Arduino-EEPROMEx/archive/master.zip 2. Vào Aruino menu > Sketch > Include library > Add .Zip library, Chọn file Zip vừa tải về 3. Chạy thử đoạn code sau:
#include // Chỉ cần Include file này
int address = 0; //địa chỉ cần ghi vào double input = 100.12; //Giá trị cần ghi vào EEprom double output = 0;// Giá trị cần đọc ra từ EEprom
void setup() { Serial.begin(9600); EEPROM.writeDouble(address, input); output = EEPROM.readDouble(address); Serial.print(address); Serial.print("\t"); Serial.print(output); Serial.println(); }
void loop() { }
Bình luận
Để lại một bình luận Hủy
Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *
Bình luận *
Tên *
Email *
Trang web
Follow:
Bài viết mới
- common/common-define.chunk
- builtin/uniforms/cc-global.chunk
- Cấu hình user riêng cho từng website trên server Nginx, PHP 8.1 trên Ubuntu 22.04 LTS x64
- Hướng dẫn cài đặt và cấu hình Fail2Ban trên CentOS 7
- Kết nối và sử dụng MongoDB bằng `mongosh`
- Cài đặt và sử dụng MongoDB trên macOS
- Ngày Đế Thích giáng hạ
- Tính giờ xuất hành theo Lý Thuần Phong
- Bài 2. Cài đặt môi trường và tạo dự án ionic đầu tiên
Bình luận gần đây
- SKI trong Bài 3: Các cổng logic : AND, OR, NAND, XOR, NOT
- Phương trong Phần mềm từ điển, dịch cả đoạn văn bản nhiều thứ tiếng
- Xuân Hoàng trong Phần mềm quang học Zemax – Một số khái niệm quan trọng
- xuan phi trong Phần mềm quang học Zemax – Một số khái niệm quan trọng
- Duong trong Bài 3: Các cổng logic : AND, OR, NAND, XOR, NOT
- Hùng trong Phần mềm quang học Zemax – Một số khái niệm quan trọng
- An Phạm trong Phần mềm quang học Zemax – Một số khái niệm quan trọng
- Phương Anh trong Phần mềm quang học Zemax – Một số khái niệm quan trọng
- QUY trong Bài 3: Các cổng logic : AND, OR, NAND, XOR, NOT
More
- Next story Set bootloader cho AVR atmega328
- Previous story Bẻ khóa mật khẩu file Excel
Danh mục
Danh mục Chọn danh mục Database (2) Error & Warning (2) Lập trình (25) Blockchain (3) Cocos Creator (2) CSS + HTML (1) Flutter (2) ionic (2) Javascript (1) KeystoneJS (2) Laravel (1) NodeJs (3) PHP (1) React Native (1) Xử lý ảnh (1) Phong tục (2) Quang học (7) Thiết kế (1) Tin học (57) Bảo mật (4) Linux (19) Ubuntu (2) Phần mềm (9) Uncategorized (4) Xây dựng (5) Điện tử (23) Arduino (7) FPGA không chuyên (15)H | B | T | N | S | B | C |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Thẻ
android Arduino ASIC Bảo mật CentOS Cocos Creator Database Debug DirectAdmin Flutter FPGA Giờ tốt ionic ios Laravel Linux Lập trình macOS MariaDB mobile app MongoDB MySQL Nginx Ngôn ngữ mô tả phần cứng Office Password Permission Phong tục PHP phpMyAdmin Quang học screen reader Security Server Shader Software Timezone Tin học Ubuntu Verilog HDL VHDL VPS Warning Xuất hành Xử lý ảnh sốMeta
- Đăng ký
- Đăng nhập
- RSS bài viết
- RSS bình luận
- WordPress.org
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
-
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 ESP32/ESP8266 - Code
-
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