Paso 2: Tiempo de código.
En primer lugar, incluir los encabezados de biblioteca de alambre en algún lugar cerca de la cima del boceto:
/* Use 24LC256 EEPROM to save settings */
#include <Wire.h>
Añadimos algunas funciones para leer y escribir bytes de la EEPROM (solo les importa bytes individuales pero hay una característica de la escritura de página en el chip también). Cuenta que hay una definición de macro de 0 x 50... Esta es la dirección de la viruta en el bus i2c (puede conectar más cosas de i2c bus i2c y seleccione que uno desea hablar cambiando la dirección).
/* These two functions help us write to the 24LC256 EEPROM chip */
#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 write: addr: ");
//Serial.print(addr);
//Serial.print(" ");
//Serial.println(data);
delay(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);
delay(5);
return data;
}
Usted puede eliminar el comentario la Serial.print(...)
líneas si desea ver alguna salida de depuración.
En arduinos setup()
función iniciar la biblioteca de alambre y puede leer valores iniciales.
Aquí he leído en dos bytes ( flags
y max_cc
), dos palabras ( lean_min
y lean_max
) y un conjunto de palabras sd_max[3]
:
// read values saved in the EEPROM
Wire.begin();
// read values saved in the EEPROM
Wire.begin();
flags=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));
}=EEPROM_read(0);
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]));
}=EEPROM_read(1);
=word(EEPROM_read(3),EEPROM_read(2));
=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));
}
Aquí es el bit de código que escribe en la EEPROM:
EEPROM_write(0,);
EEPROM_write(1,);
EEPROM_write(2,lowByte());
EEPROM_write(3,highByte());
EEPROM_write(4,lowByte());
EEPROM_write(5,highByte());
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]));
}
Thats sobre ella realmente.