Memory EEPROM.read()和EEPROM.get()的区别

Memory EEPROM.read()和EEPROM.get()的区别,memory,arduino,computer-science,variable-declaration,eeprom,Memory,Arduino,Computer Science,Variable Declaration,Eeprom,我在网上搜索并看到了这个链接,但我仍然不明白EEPROM.read(地址)和EEPROM.get(地址)有什么不同 我创建了这段代码,看看EEPROM.get()是否会从第一个地址到最后一个地址读取字节 #include <EEPROM.h> int address = 0; int eeAddress = 0; byte value; float f = 0.00f; void setup() { Serial.begin(9600); while (!Serial

我在网上搜索并看到了这个链接,但我仍然不明白EEPROM.read(地址)和EEPROM.get(地址)有什么不同

我创建了这段代码,看看EEPROM.get()是否会从第一个地址到最后一个地址读取字节

#include <EEPROM.h>

int address = 0;
int eeAddress = 0;
byte value;
float f = 0.00f;

void setup() {
    Serial.begin(9600);
  while (!Serial) {
         ;                    // wait for serial port to connect. Needed for native USB port only
  }
}

void loop() {
  //--------------------EEPROM.get()-----
    Serial.println("---Using EEPROM.get()----");
  EEPROM.get(eeAddress, f);
      Serial.print(".get() address: ");
  Serial.println(eeAddress);
  Serial.print(".get() value: ");
  Serial.println(f, 3);

  //-------------------EEPROM.read()------
    Serial.println("---Using EEPROM.read()----");

  value = EEPROM.read(address);
    Serial.print(".read() address: ");
  Serial.println(address);
  Serial.print(".read() value: ");
  Serial.println(value, DEC);
  
}
#包括
int地址=0;
int eeAddress=0;
字节值;
浮球f=0.00f;
无效设置(){
Serial.begin(9600);
而(!串行){
;//等待串行端口连接。仅本机USB端口需要
}
}
void循环(){
//--------------------EEPROM.get()-----
Serial.println(“---使用EEPROM.get()”);
EEPROM.get(EEF地址);
Serial.print(“.get()地址:”);
Serial.println(eeAddress);
Serial.print(“.get()值:”);
序列println(f,3);
//-------------------EEPROM.read()------
Serial.println(“---使用EEPROM.read()”);
值=EEPROM读取(地址);
Serial.print(“.read()地址:”);
Serial.println(地址);
Serial.print(“.read()值:”);
序列号println(值,DEC);
}
对于EEPROM.get()我只得到“-0.000”,对于EEPROM.read()我只得到“3”。
我不理解它们之间的区别。

所有信息都在语言参考中:

从EEPROM读取任何数据类型或对象

从EEPROM中读取一个字节

如果您需要更多信息:

read()对单个字节进行操作。 它从一个地址读取一个字节

get()从一个地址开始读取多个字节。读取的字节数是类型的大小


如前所述。

好的。。。在我自己弄明白这件事之后。。。关于我对尼诺回应的评论,问题是我事先使用了EEPROM.write()。当我使用EEPROM.get()或EEPROM.read()时,这并不重要,因为我只向EEPROM写入了一个字节。回到Nino所说的或用于问题“).”的链接,EEPROM.get()读取从一个地址开始的多个字节(超过1个字节),因此如果我想将259(2个字节)存储到EEPROM中,我必须使用EEPROM.put()后跟EEPROM.get()和notEEPROM.write(),后跟EEPROM.get()或EEPROM.read() 现在。。。。解释我的主题答案。我之所以得到“-0.000”,是因为这是我之前得到的结果。使用EEPROM.put()将使用更新语义。这意味着,如果您使用
intx,为地址指定一个56的整数,并将56存储到其中的变量;EEPROM.get(地址,x)
intx=EEPROM.read(地址)
是一个整数,您将得到整数值。但是,如果变量是另一种类型,例如
float x;EEPROM.get(地址,x)您将不会得到整数56,但存储在该地址中并带有该声明(float)的值就是您将得到的值。因此,我得到“-0.000”和“3”的原因是因为float的前一个值与整数的前一个值不同。对于“3”,它可能是用EEPROM.write()存储的259,也可能只是用EEPROM.write()或EEPROM.put()存储的3。

好的,我将所有字节设置为0,我编写了一个新代码,其中260被写入int地址int addr=0;并存储在int变量int ra中;,当我用EEPROM.get(addr,ra)打印出值时,我得到了4。当我使用va=EEPROM.read(addr)时,我也得到了4。代码:void loop(){int addr=0;int-ra;EEPROM.write(addr,260);EEPROM.get(addr,ra);Serial.print(“地址”);Serial.print(addr);Serial.print(,值:);Serial.println(ra);}我知道1个地址有1字节/8位,但有EEPROM.get()我不明白你在说什么,因为我得到的结果让我困惑。