buona sera a tutti ragazzi.....volevo chiedere un'informazione....
ho montato una 24C64 su Arduino mega proprio perche' mi serve una eprom esterna e miserve inoltre scrivere almeno un numero a 4 cifre.Ho questo codice:
#include "Wire.h"
#define EEPROM_I2C_ADDRESS 0x50
void setup()
{
Wire.begin();
Serial.begin(9600);
int address = 0;
byte val = 110;
writeAddress(address, val);
byte readVal = readAddress(address);
Serial.print("The returned value is ");
Serial.println(readVal);
}
void loop()
{
}
void writeAddress(int address, byte val)
{
Wire.beginTransmission(EEPROM_I2C_ADDRESS);
Wire.write((int)(address >> 8)); // MSB
Wire.write((int)(address & 0xFF)); // LSB
Wire.write(val);
Wire.endTransmission();
delay(5);
}
byte readAddress(int address)
{
byte rData = 0xFF;
Wire.beginTransmission(EEPROM_I2C_ADDRESS);
Wire.write((int)(address >> 8)); // MSB
Wire.write((int)(address & 0xFF)); // LSB
Wire.endTransmission();
Wire.requestFrom(EEPROM_I2C_ADDRESS, 1);
rData = Wire.read();
return rData;
}
Ovviamente possiamo scrivere come valore sino a 255....ma ho visto in rete qualche esempio per eprom interna che è possibile scrivere float, long int e altro, come questo:
#include <EEPROM.h>
void writeIntIntoEEPROM(int address, int number)
{
EEPROM.write(address, number >> 8);
EEPROM.write(address + 1, number & 0xFF);
}
int readIntFromEEPROM(int address)
{
return (EEPROM.read(address) << 8) + EEPROM.read(address + 1);
}
void setup() {
Serial.begin(9600);
writeIntIntoEEPROM(45, 18404);
int number = readIntFromEEPROM(45);
Serial.print("Number: ");
Serial.println(number);
}
void loop() {}
Coiè praticamente all'adress si sposta di 1 e.....ho provato ...ma non ci riesco....se per favore potete darmi una mano....Grazie