#include //I2C library #define ad_ROM_1_I2C 0x50 // Variables validées unsigned int AdrBaseEeprom =0; //adresse de l'EEPROM démarre à 0 unsigned int nb_data; //nombre de valeurs lues int t; void setup() { Wire.begin(); // Init port I2C Serial.begin(9600); // Init port série t = 0; } void i2c_eeprom_write_byte(unsigned int eeaddress, byte data ) { Wire.beginTransmission(ad_ROM_1_I2C); Wire.write((int)(eeaddress >> 8)); // envoi du MSB de l'adresse Wire.write((int)(eeaddress & 0xFF)); // envoi du LSB de l'adresse Wire.write(data); //écriture de l'octet Wire.endTransmission(); delay(5);// les écritures consécutives trop rapide mettent leur fiabilité en vrac (marche a partir de 3ms) } void ecrire_reel(float var) { //écriture d'un réel dans la mémoire byte *ptr; ptr = (byte *)&var; for(byte j=0;j<4;j++) { byte octet = *(ptr+j); i2c_eeprom_write_byte(AdrBaseEeprom++,octet); } } byte i2c_eeprom_read_byte(unsigned int eeaddress ) { // routine de lecture de byte individuel dans l'EEPROM // lui passer adresse, elle rend le byte correspondant byte rdata = 0xFF; Wire.beginTransmission(ad_ROM_1_I2C); Wire.write((int)(eeaddress >> 8)); // envoi du MSB de l'adresse Wire.write((int)(eeaddress & 0xFF)); // envoi du LSB de l'adresse Wire.endTransmission(); Wire.requestFrom(ad_ROM_1_I2C,1); if (Wire.available()) rdata = Wire.read(); //lecture de l'octet adressé return rdata; } void loop() { if(t==0){ Serial.println("Le formatage commence"); } while(t<16000) { ecrire_reel(0.0); t++; Serial.println("."); } if(t==16000){ Serial.println("Formatage terminé"); t++; } }