Hi, i'm new in Arduino. I want to write and read two variables in a eeprom HT24C08 using the Wire library. Both variables are int, and i tried to save 128 samples of each one. So i use 256 registers for each one (MSB and LSB). The samples of the first variable named alpha were stored from register 1 to register 256, and the samples of the second variable named beta were stored from register 256 to register 512.
#include <Wire.h>
#include <math.h>
#define eeprom 0x50
int val1 = 0;
int val2 = 0;
int xVal = 0;
int yVal = 0;
int zVal = 0;
double alpha = 0;
double beta = 0;
void setup()
{
analogReference(EXTERNAL);
pinMode(4,OUTPUT);
digitalWrite(4,HIGH);
pinMode(7,OUTPUT);
digitalWrite(7,LOW);
pinMode(8,OUTPUT);
digitalWrite(8,LOW);
Wire.begin();
Serial.begin(9600);
for(int i=0;i<=255;i=i+2)
{
xVal = analogRead(0);
yVal = analogRead(1);
zVal = analogRead(2);
xVal = map(xVal, 0, 1023, -511, 511);
yVal = map(yVal, 0, 1023, -511, 511);
zVal = map(zVal, 0, 1023, -511, 511);
alpha = atan((double)yVal / (double)xVal);
alpha = alpha*(57.2958);
alpha = (int) round(alpha);
beta = atan((double)zVal / (double)xVal);
beta = beta*(57.2958);
beta = (int) round(beta);
Serial.print("alfa: ");
Serial.print(alpha,DEC);
Serial.print("\t");
Serial.print("beta: ");
Serial.println(beta,DEC);
// ESCRITURA ANGULO ALPHA
Wire.beginTransmission(eeprom);
Wire.write(int(i));
Wire.write(highByte(int(alpha)));
delay(70);
Wire.endTransmission();
delay(5);
Wire.beginTransmission(eeprom);
Wire.write(int(i+1));
Wire.write(lowByte(int(alpha)));
delay(70);
Wire.endTransmission();
delay(5);
// ESCRITURA ANGULO BETA
Wire.beginTransmission(eeprom);
Wire.write(int(i+256));
Wire.write(highByte(int(beta)));
delay(70);
Wire.endTransmission();
delay(5);
Wire.beginTransmission(eeprom);
Wire.write(int(i+257));
Wire.write(lowByte(int(beta)));
delay(70);
Wire.endTransmission();
delay(5);
}
delay(1000);
for(int i=0;i<=255;i=i+2)
{
//Serial.println("Direcciones del registro de la 24C -alpha- :"); Serial.print(i,HEX);Serial.print("\t");Serial.println(i+1,HEX);
Wire.beginTransmission(eeprom);
Wire.write(int(i));
Wire.endTransmission();
delay(70);
byte MSB1;
Wire.requestFrom(eeprom,1);
if(Wire.available()>0)
{
MSB1=(Wire.read());
}
delay(70);
Wire.beginTransmission(eeprom);
Wire.write(int(i+1));
Wire.endTransmission();
delay(70);
byte LSB1;
Wire.requestFrom(eeprom,1);
if(Wire.available()>0)
{
LSB1=(Wire.read());
}
val1=word(MSB1,LSB1);
Serial.println("El valor del angulo alpha es:"); Serial.println(val1,DEC);
delay(70);
//Serial.println("Direcciones del registro de la 24C -beta- :"); Serial.print(i+256,HEX);Serial.print("\t");Serial.println(i+256+1,HEX);
Wire.beginTransmission(eeprom);
Wire.write(int(i+256));
Wire.endTransmission();
delay(70);
byte MSB2;
Wire.requestFrom(eeprom,1);
if(Wire.available()>0)
{
MSB2=(Wire.read());
}
delay(70);
Wire.beginTransmission(eeprom);
Wire.write(int(i+257));
Wire.endTransmission();
delay(70);
byte LSB2;
Wire.requestFrom(eeprom,1);
if(Wire.available()>0)
{
LSB2=(Wire.read());
}
val2=word(MSB2,LSB2);
Serial.println("El valor del angulo beta es:"); Serial.println(val2,DEC);
delay(70);
}
}
void loop()
{
}
In the Serial Monitor i see this:
alfa: 7.0000000000 beta: 78.0000000000
alfa: -10.0000000000 beta: 82.0000000000
alfa: -14.0000000000 beta: 83.0000000000
alfa: -16.0000000000 beta: 82.0000000000
alfa: -16.0000000000 beta: 82.0000000000
alfa: -9.0000000000 beta: 82.0000000000
alfa: -10.0000000000 beta: 82.0000000000
alfa: -11.0000000000 beta: 82.0000000000
alfa: -13.0000000000 beta: 83.0000000000
alfa: -16.0000000000 beta: 82.0000000000
.
.
.
.
.
.
alfa: -12.0000000000 beta: 82.0000000000
alfa: -13.0000000000 beta: 81.0000000000
alfa: -12.0000000000 beta: 82.0000000000
alfa: -11.0000000000 beta: 82.0000000000
alfa: -13.0000000000 beta: 82.0000000000
alfa: -13.0000000000 beta: 82.0000000000
alfa: -7.0000000000 beta: 82.0000000000
alfa: -10.0000000000 beta: 82.0000000000
alfa: -14.0000000000 beta: 82.0000000000
alfa: -10.0000000000 beta: 82.0000000000
alfa: -15.0000000000 beta: 82.0000000000
alfa: -12.0000000000 beta: 81.0000000000
alfa: -10.0000000000 beta: 82.0000000000
alfa: -7.0000000000 beta: 82.0000000000
alfa: -14.0000000000 beta: 82.0000000000
alfa: -9.0000000000 beta: 83.0000000000
alfa: -10.0000000000 beta: 82.0000000000
alfa: -12.0000000000 beta: 82.0000000000
alfa: -14.0000000000 beta: 82.0000000000
alfa: -9.0000000000 beta: 82.0000000000
alfa: -9.0000000000 beta: 82.0000000000
El valor del angulo alpha es:
78
El valor del angulo beta es:
78
El valor del angulo alpha es:
82
El valor del angulo beta es:
82
El valor del angulo alpha es:
83
El valor del angulo beta es:
83
El valor del angulo alpha es:
82
El valor del angulo beta es:
82
El valor del angulo alpha es:
82
El valor del angulo beta es:
82
.
.
.
.
.
.
El valor del angulo alpha es:
82
El valor del angulo beta es:
82
El valor del angulo alpha es:
82
El valor del angulo beta es:
82
El valor del angulo alpha es:
82
El valor del angulo beta es:
82
It seems that the program overwrites the first 256 records , having an error addressing registers whose address is greater than one byte.
I hope you have understood my English.
Thanks for your help.
Greetings from Argentina!