Új hozzászólás Aktív témák

  • Tomika86

    senior tag

    Ezt a példaprogramot kommenteztem be:

    #include <Wire.h>
    #define xAddr 0x50 //külső EEPROM cím definiálása
    byte i;
    char buffer[10];
    char newStr[10];
    unsigned int eepromAdd = 0;
    float adat = 123.321;
    void setup()
    {
    Serial.begin(9600);
    Wire.begin();
    }
    void loop()
    {
    //Float konvertálása stringbe és EEPROM-ba írása
    char chrFloat[] = "";; // string létrehozása
    char buffer[10]; // character tömb létrehozása
    dtostrf(adat, 6, 4, buffer); // 6 szélesség, 4 a precizitás; adat float átalakítása a buffer változóba
    strcat( chrFloat, buffer); // buffer character tömb összefűzése stringbe?
    // Átalakított string írása:
    for(byte i=0; i<=strlen(chrFloat); i++) // i ciklusváltozó a string hosszáig
    writeEEPROM(xAddr, eepromAdd+i, chrFloat[i]); // 1 byte írása a
    // Adat kiolvasása és átalakítása float-ra:
    for(i=0; i<=strlen(chrFloat); i++)
    newStr[i] = readEEPROM(xAddr, eepromAdd + i); // 1 byte olvasása
    newStr[i] = 0;

    Serial.println(atof(newStr),2); // ASCII konvertálása float-ba 2 tizedessel
    }
    // Egy byte írása
    void writeEEPROM(int devAddr, unsigned int eeAddr, byte data )
    {
    Wire.beginTransmission(devAddr);
    Wire.write((byte)eeAddr >> 8); // Legnagyobb helyiértékű byte írása, LSB-t jobbra shifteljük, hogy megszabaduljunk tőle
    Wire.write((byte)eeAddr & 0xFF); // Legkisebb helyiértékű byte írása, LSB kimaszkolása bitekkel ÉS 0-kkal
    Wire.write(data);
    Wire.endTransmission();
    delay(5); //5ms várakozás
    }
    // Egy byte olvasása
    byte readEEPROM(int devAddr, unsigned int eeAddr )
    {
    byte readByte = 0;
    Wire.beginTransmission(devAddr);
    Wire.write((byte)eeAddr >> 8); // A legnagyobb helyiértékű byte írása
    Wire.write((byte)eeAddr & 0xFF); // A legkisebb helyiértékű byte írása
    Wire.endTransmission();
    Wire.requestFrom(devAddr,1);
    if (Wire.available())
    readByte = Wire.read();
    return readByte;
    }

    [ Szerkesztve ]

Új hozzászólás Aktív témák