Daftar Isi:

Menambahkan EEPROM 24LC256 ke Arduino Karena: 3 Langkah
Menambahkan EEPROM 24LC256 ke Arduino Karena: 3 Langkah

Video: Menambahkan EEPROM 24LC256 ke Arduino Karena: 3 Langkah

Video: Menambahkan EEPROM 24LC256 ke Arduino Karena: 3 Langkah
Video: Tutorial Cara Menyimpan Nilai di EEPROM Arduino Lebih Dari 255 Agar Nilai Tidak Kembali Ke Nol 2024, Juli
Anonim
Menambahkan EEPROM 24LC256 ke Arduino Due
Menambahkan EEPROM 24LC256 ke Arduino Due

Arduino karena tidak memiliki eeprom. Instruksi ini menambahkan satu dan memungkinkan Anda untuk menyimpan nilai dalam memori non-volatil yang akan bertahan dari pembaruan firmware arduino.

Langkah 1: Papan tempat memotong roti

Papan tempat memotong roti
Papan tempat memotong roti

Ada beberapa instruksi yang sangat bagus di sini: https://www.hobbytronics.co.uk/arduino-external-eepromSaya hanya mengikuti mereka. Foto menunjukkan sirkuit papan tempat memotong roti. pin 1 sampai 4 dan pin 7 di-ground. pin 8 terhubung ke suplai 3.3V pada papan jatuh tempo. Kabel kuning (pin 6) dan putih (pin 5) terhubung ke pin i2c SDA (data) dan SCL (jam) pada papan jatuh tempo (bernomor 21 dan 20).

Langkah 2: Kode Waktu

Kode Waktu
Kode Waktu

Berikut adalah beberapa potongan kode yang saya gunakan dalam sketsa saya. Pertama, sertakan header pustaka Wire di suatu tempat di dekat bagian atas sketsa Anda: /* Gunakan 24LC256 EEPROM untuk menyimpan pengaturan */ #include Kemudian tambahkan beberapa fungsi untuk membaca dan menulis byte dari EEPROM (Saya hanya peduli dengan byte individual tetapi ada fitur penulisan halaman dalam chip juga). Perhatikan bahwa ada definisi makro 0x50.. ini adalah alamat chip pada bus i2c (Anda dapat menghubungkan lebih dari satu benda i2c pada bus i2c dan memilih yang mana yang ingin Anda ajak bicara dengan mengubah alamat). /* Kedua fungsi ini membantu kita menulis ke 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); Kawat.endTransmisi(); //Serial.print("Tulis EEPROM: addr: "); //Serial.print(tambah); //Serial.print(" "); //Serial.println(data); penundaan (5); } byte EEPROM_read(tidak ditandatangani int addr) { byte data = 0xFF; Wire.beginTransmission(EEPROM_ADDR); Wire.write((int)(addr >> 8)); // MSB Wire.write((int)(addr & 0xFF)); // Kabel LSB.endTransmisi(); Wire.requestFrom(EEPROM_ADDR, 1); if (Wire.available()) data = Wire.read(); //Serial.print("EEPROM dibaca: addr: "); //Serial.print(tambah); //Serial.print(" "); //Serial.println(data); penundaan (5); mengembalikan data; } Anda dapat menghapus komentar pada baris Serial.print(…) jika Anda ingin melihat beberapa keluaran debug. Dalam fungsi arduinos setup() Anda memulai pustaka kawat dan dapat membaca nilai awal. Di sini saya membaca dalam dua byte (flags dan max_cc), dua kata (lean_min dan lean_max) dan array kata sd_max[3]: // membaca nilai yang disimpan di EEPROM Wire.begin(); flags=EEPROM_read(0); max_cc=EEPROM_read(1); lean_min=kata(EEPROM_read(3), EEPROM_read(2)); lean_max=kata(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)); } Berikut sedikit kode yang menuliskannya ke dalam 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])); } Itu saja.

Langkah 3: Sambungkan

Hubungkan
Hubungkan

Kawat ke beberapa veroboard untuk sekrup ke dalam kandang dan pekerjaan selesai.

Direkomendasikan: