Mục lục:

EEPROM có sẵn của Arduino của bạn: 6 bước
EEPROM có sẵn của Arduino của bạn: 6 bước

Video: EEPROM có sẵn của Arduino của bạn: 6 bước

Video: EEPROM có sẵn của Arduino của bạn: 6 bước
Video: Arduino | EEPROM - Chi tiết về bộ nhớ EEPROM 2024, Tháng mười một
Anonim
EEPROM có sẵn của Arduino của bạn
EEPROM có sẵn của Arduino của bạn

Trong bài viết này, chúng tôi sẽ kiểm tra EEPROM bên trong trong bảng Arduino của chúng tôi. Một số bạn có thể đang nói EEPROM là gì? EEPROM là một bộ nhớ chỉ đọc lập trình có thể xóa bằng điện.

Nó là một dạng bộ nhớ không thay đổi có thể ghi nhớ mọi thứ khi tắt nguồn hoặc sau khi đặt lại Arduino. Vẻ đẹp của loại bộ nhớ này là chúng ta có thể lưu trữ dữ liệu được tạo ra trong bản phác thảo trên cơ sở lâu dài hơn.

Tại sao bạn sử dụng EEPROM bên trong? Đối với các tình huống mà dữ liệu duy nhất cho một tình huống cần một ngôi nhà lâu dài hơn. Ví dụ: lưu trữ số sê-ri và ngày sản xuất duy nhất của một dự án dựa trên Arduino thương mại - một chức năng của bản phác thảo có thể hiển thị số sê-ri trên màn hình LCD hoặc dữ liệu có thể được đọc bằng cách tải lên một "bản phác thảo dịch vụ". Hoặc bạn có thể cần đếm các sự kiện nhất định và không cho phép người dùng đặt lại chúng - chẳng hạn như đồng hồ đo quãng đường hoặc bộ đếm chu kỳ hoạt động.

Bước 1: Loại dữ liệu nào có thể được lưu trữ?

Loại dữ liệu nào có thể được lưu trữ?
Loại dữ liệu nào có thể được lưu trữ?

Bất kỳ thứ gì có thể được biểu diễn dưới dạng byte dữ liệu. Một byte dữ liệu được tạo thành từ tám bit dữ liệu. Một bit có thể bật (giá trị 1) hoặc tắt (giá trị 0), và hoàn hảo để biểu diễn số ở dạng nhị phân. Nói cách khác, một số nhị phân chỉ có thể sử dụng các số không và số một để đại diện cho một giá trị. Do đó, hệ nhị phân còn được gọi là “cơ số 2”, vì nó chỉ có thể sử dụng hai chữ số.

Làm thế nào một số nhị phân chỉ sử dụng hai chữ số có thể biểu diễn một số lớn hơn? Nó sử dụng rất nhiều số một và số không. Chúng ta hãy kiểm tra một số nhị phân, giả sử 10101010. Vì đây là số cơ số 2, mỗi chữ số đại diện cho 2 theo lũy thừa của x, từ x = 0 trở đi.

Bước 2:

Hình ảnh
Hình ảnh

Xem cách mỗi chữ số của số nhị phân có thể đại diện cho một số cơ số 10. Vì vậy, số nhị phân ở trên đại diện cho 85 trong cơ số 10 - giá trị 85 là tổng của các giá trị cơ số 10. Một ví dụ khác - 11111111 trong hệ nhị phân bằng 255 trong cơ số 10.

Bước 3:

Bây giờ mỗi chữ số trong số nhị phân đó sử dụng một ‘bit’ bộ nhớ và tám bit tạo thành một byte. Do các hạn chế nội bộ của bộ vi điều khiển trong bảng Arduino của chúng tôi, chúng tôi chỉ có thể lưu trữ số 8 bit (một byte) trong EEPROM.

Điều này giới hạn giá trị thập phân của số nằm trong khoảng từ 0 đến 255. Sau đó, bạn sẽ quyết định cách dữ liệu của mình có thể được biểu diễn với phạm vi số đó. Đừng để điều đó làm bạn nản lòng - các con số được sắp xếp theo cách chính xác có thể đại diện cho hầu hết mọi thứ! Có một hạn chế cần lưu ý - số lần chúng ta có thể đọc hoặc ghi vào EEPROM. Theo nhà sản xuất Atmel, EEPROM đáp ứng tốt cho 100.000 chu kỳ đọc / ghi (xem bảng dữ liệu).

Bước 4:

Bây giờ chúng ta đã biết các bit và byte của mình, có bao nhiêu byte có thể được lưu trữ trong bộ vi điều khiển Arduino của chúng tôi? Câu trả lời khác nhau tùy thuộc vào mô hình của vi điều khiển. Ví dụ:

  • Bo mạch có Atmel ATmega328, chẳng hạn như Arduino Uno, Uno SMD, Nano, Lilypad, v.v. - 1024 byte (1 kilobyte)
  • Bo mạch có Atmel ATmega1280 hoặc 2560, chẳng hạn như dòng Arduino Mega - 4096 byte (4 kilobyte)
  • Bo mạch có Atmel ATmega168, chẳng hạn như Arduino Lilypad gốc, Nano cũ, Diecimila, v.v. - 512 byte.

Nếu bạn không chắc chắn, hãy xem chỉ số phần cứng Arduino hoặc hỏi nhà cung cấp bo mạch của bạn. Nếu bạn cần nhiều bộ nhớ EEPROM hơn những gì có sẵn với bộ vi điều khiển của mình, hãy xem xét sử dụng I2C EEPROM bên ngoài.

Tại thời điểm này, chúng ta đã hiểu loại dữ liệu nào và lượng dữ liệu có thể được lưu trữ trong Arduino’s EEPROM của chúng ta. Bây giờ là lúc để đưa điều này vào hành động. Như đã thảo luận trước đó, có một lượng không gian hữu hạn cho dữ liệu của chúng tôi. Trong các ví dụ sau, chúng tôi sẽ sử dụng bảng Arduino điển hình với ATmega328 với 1024 byte bộ nhớ EEPROM.

Bước 5:

Để sử dụng EEPROM, cần có thư viện, vì vậy hãy sử dụng thư viện sau trong bản phác thảo của bạn:

#include "EEPROM.h"

Phần còn lại rất đơn giản. Để lưu trữ một phần dữ liệu, chúng tôi sử dụng chức năng sau:

EEPROM.write (a, b);

Tham số a là vị trí trong EEPROM để lưu trữ số nguyên (0 ~ 255) dữ liệu b. Trong ví dụ này, chúng ta có 1024 byte bộ nhớ lưu trữ, vì vậy giá trị của a nằm trong khoảng từ 0 đến 1023. Để truy xuất một phần dữ liệu cũng đơn giản như nhau, hãy sử dụng:

z = EEPROM.read (a);

Trong đó z là số nguyên để lưu dữ liệu từ vị trí EEPROM a. Bây giờ để xem một ví dụ.

Bước 6:

Hình ảnh
Hình ảnh

Bản phác thảo này sẽ tạo ra các số ngẫu nhiên từ 0 đến 255, lưu trữ chúng trong EEPROM, sau đó truy xuất và hiển thị chúng trên màn hình nối tiếp. Biến EEsize là giới hạn trên của kích thước EEPROM của bạn, vì vậy (ví dụ) giá trị này sẽ là 1024 đối với Arduino Uno hoặc 4096 đối với Mega.

// Trình diễn EEPROM nội bộ của Arduino

#bao gồm

int zz; int EEsize = 1024; // kích thước tính bằng byte của EEPROM trên bo mạch của bạn

void setup ()

{Serial.begin (9600); randomSeed (analogRead (0)); } void loop () {Serial.println ("Viết số ngẫu nhiên…"); for (int i = 0; i <EEsize; i ++) {zz = random (255); EEPROM.write (i, zz); } Serial.println (); for (int a = 0; a <EEsize; a ++) {zz = EEPROM.read (a); Serial.print ("Vị trí EEPROM:"); Serial.print (a); Serial.print ("chứa"); Serial.println (zz); chậm trễ (25); }}

Đầu ra từ màn hình nối tiếp sẽ xuất hiện, như thể hiện trong hình.

Vậy là bạn đã có nó, một cách hữu ích khác để lưu trữ dữ liệu với hệ thống Arduino của chúng tôi. Mặc dù không phải là hướng dẫn thú vị nhất, nhưng nó chắc chắn là một hướng dẫn hữu ích.

Bài đăng này do pmdway.com mang đến cho bạn - mọi thứ dành cho các nhà sản xuất và những người đam mê điện tử, với giao hàng miễn phí trên toàn thế giới.

Đề xuất: