Mục lục:

Thêm EEPROM 24LC256 vào Arduino Do: 3 bước
Thêm EEPROM 24LC256 vào Arduino Do: 3 bước

Video: Thêm EEPROM 24LC256 vào Arduino Do: 3 bước

Video: Thêm EEPROM 24LC256 vào Arduino Do: 3 bước
Video: Arduino learning RF433,Save to external eeprom(Học lệnh từ tay điều khiển RF433,lưu vào 24C02)Phần 2 2024, Tháng mười một
Anonim
Thêm một EEPROM 24LC256 vào Arduino Do
Thêm một EEPROM 24LC256 vào Arduino Do

Arduino do thiếu eeprom. Hướng dẫn này thêm một và cho phép bạn lưu trữ các giá trị trong bộ nhớ không bay hơi sẽ tồn tại sau khi cập nhật firmware arduino.

Bước 1: Breadboarding

Breadboarding
Breadboarding

Có một số hướng dẫn thực sự tốt ở đây: https://www.hobbytronics.co.uk/arduino-external-eeprom Tôi vừa làm theo chúng. Ảnh cho thấy mạch breadboarded. chân 1 đến chân 4 và chân 7 được nối đất. chân 8 được kết nối với nguồn cung cấp 3,3V trên bo mạch do.).

Bước 2: Mã Thời gian

Giờ mã
Giờ mã

Đây là một số đoạn mã mà tôi sử dụng trong các bản phác thảo của mình. Đầu tiên, hãy bao gồm tiêu đề thư viện Wire ở đâu đó gần đầu bản phác thảo của bạn: / * Sử dụng 24LC256 EEPROM để lưu cài đặt * / #include Sau đó, thêm một số chức năng để đọc và ghi byte từ EEPROM (Tôi chỉ quan tâm đến từng byte riêng lẻ nhưng có một tính năng ghi trang trong chip nữa). Lưu ý rằng có một định nghĩa macro là 0x50.. đây là địa chỉ của chip trên xe buýt i2c (bạn có thể kết nối nhiều hơn một thiết bị i2c trên một xe buýt i2c và chọn cái bạn muốn nói chuyện bằng cách thay đổi địa chỉ). / * Hai hàm này giúp chúng ta ghi vào chip EEPROM 24LC256 * / #define EEPROM_ADDR 0x50 void EEPROM_write (unsigned int addr, byte data) {int rdata = data; Wire.beginTransmission (EEPROM_ADDR); Wire.write ((int) (addr >> 8)); // MSB Wire.write ((int) (addr & 0xFF)); // LSB Wire.write (rdata); Wire.endTransmission (); //Serial.print("EEPROM ghi: addr: "); //Serial.print(addr); //Serial.print (""); //Serial.println(data); chậm trễ (5); } byte EEPROM_read (unsigned int addr) {byte data = 0xFF; Wire.beginTransmission (EEPROM_ADDR); Wire.write ((int) (addr >> 8)); // MSB Wire.write ((int) (addr & 0xFF)); // LSB Wire.endTransmission (); Wire.requestFrom (EEPROM_ADDR, 1); if (Wire.available ()) data = Wire.read (); //Serial.print("EEPROM read: addr: "); //Serial.print(addr); //Serial.print (""); //Serial.println(data); chậm trễ (5); trả về dữ liệu; } Bạn có thể bỏ ghi chú các dòng Serial.print (…) nếu bạn muốn xem một số kết quả gỡ lỗi. Trong hàm setup () arduinos, bạn khởi động thư viện dây và có thể đọc các giá trị ban đầu. Ở đây tôi đọc bằng hai byte (cờ và max_cc), hai từ (lean_min và lean_max) và một mảng các từ sd_max [3]: // đọc các giá trị được lưu trong EEPROM Wire.begin (); cờ = EEPROM_read (0); max_cc = EEPROM_read (1); Lean_min = word (EEPROM_read (3), EEPROM_read (2)); Lean_max = word (EEPROM_read (5), EEPROM_read (4)); for (int j = 0; j <3; j) {sd_max [j] = word (EEPROM_read (7 j * 2), EEPROM_read (6 j * 2)); } Đây là đoạn mã ghi chúng vào EEPROM: EEPROM_write (0, flags); EEPROM_write (1, max_cc); EEPROM_write (2, lowByte (Lean_min)); EEPROM_write (3, highByte (Lean_min)); EEPROM_write (4, lowByte (Lean_max)); EEPROM_write (5, highByte (Lean_max)); for (int j = 0; j <3; j) {EEPROM_write (6 j * 2, lowByte (sd_max [j])); EEPROM_write (7 j * 2, highByte (sd_max [j])); } Đó là thực sự về nó.

Bước 3: Lên dây

Dây nó lên
Dây nó lên

Dây nó vào một số tấm veroboard để vặn vào một vỏ bọc và các công việc được thực hiện.

Đề xuất: