Mục lục:
Video: EEPROM có sẵn của Arduino của bạn: 6 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:33
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ữ?
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:
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:
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:
Steam Punk UPS của bạn để có được hàng giờ hoạt động cho bộ định tuyến Wi-fi của bạn: 4 bước (có hình ảnh)
Steam Punk UPS của bạn để có được hàng giờ hoạt động cho bộ định tuyến Wi-fi của bạn: Có điều gì đó cơ bản không đồng ý về việc UPS của bạn chuyển đổi nguồn pin DC 12V thành nguồn AC 220V để các máy biến áp chạy bộ định tuyến và sợi quang ONT của bạn có thể chuyển đổi nó trở lại 12V DC! Bạn cũng chống lại [thường là
Điều khiển đèn LED của bạn bằng điều khiển từ xa TV của bạn ?! -- Hướng dẫn Arduino IR: 5 bước (có hình ảnh)
Điều khiển đèn LED của bạn bằng điều khiển từ xa TV của bạn ?! || Hướng dẫn sử dụng Arduino IR: Trong dự án này, tôi sẽ chỉ cho bạn cách tôi định vị lại các nút vô dụng trên điều khiển từ xa của TV để điều khiển đèn LED phía sau TV. Bạn cũng có thể sử dụng kỹ thuật này để kiểm soát tất cả mọi thứ với một chút chỉnh sửa mã. Tôi cũng sẽ nói một chút về lý thuyết
Làm thế nào để tạo cổng WIFI của riêng bạn để kết nối Arduino của bạn với mạng IP ?: 11 bước (có Hình ảnh)
Làm thế nào để tạo cổng WIFI của riêng bạn để kết nối Arduino của bạn với mạng IP ?: Như nhiều người bạn nghĩ rằng Arduino là một giải pháp rất tốt để thực hiện tự động hóa tại nhà và robot! Nhưng về mặt giao tiếp, Arduino chỉ đi kèm với các liên kết nối tiếp. Tôi đang làm việc trên một rô bốt cần được kết nối vĩnh viễn với một máy chủ chạy ar
Cách biến điện thoại di động LG EnV 2 của bạn thành một Modem quay số di động cho máy tính xách tay (hoặc máy tính để bàn) của bạn: 7 bước
Cách biến điện thoại di động LG EnV 2 của bạn thành một Modem quay số di động cho máy tính xách tay (hoặc máy tính để bàn) của bạn: Tất cả chúng ta đều có nhu cầu sử dụng Internet ở những nơi không thể, chẳng hạn như trong ô tô hoặc trong kỳ nghỉ, nơi họ tính một khoản tiền đắt đỏ mỗi giờ để sử dụng wifi của họ. cuối cùng, tôi đã nghĩ ra một cách đơn giản để
Làm cho máy ảnh của bạn thành "chế độ chụp đêm quân sự", thêm hiệu ứng ban đêm hoặc tạo chế độ chụp ảnh ban đêm trên bất kỳ máy ảnh nào !!!: 3 bước
Đặt Máy ảnh của bạn thành "Chế độ chụp đêm quân sự", Thêm Hiệu ứng Ban đêm hoặc Tạo Chế độ Cảnh báo Ban đêm trên Bất kỳ Máy ảnh nào !!!: *** Điều này đã được đưa vào CUỘC THI KỸ THUẬT SỐ DAYS PHOTO , Hãy bình chọn cho tôi ** * Nếu bạn cần bất kỳ trợ giúp nào, vui lòng gửi email: [email protected] Tôi nói tiếng Anh, Pháp, Nhật, Tây Ban Nha và tôi biết các ngôn ngữ khác nếu bạn