Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arduino纳米和外部eemprom问题_Arduino_External_Arduino Ide_Eeprom_Nano - Fatal编程技术网

Arduino纳米和外部eemprom问题

Arduino纳米和外部eemprom问题,arduino,external,arduino-ide,eeprom,nano,Arduino,External,Arduino Ide,Eeprom,Nano,我正在尝试将EEPROM芯片连接到Arduino Nano 328P,将数据写入其中,读取并在串行监视器中显示 串行监视器仅显示 写作。。。 阅读 我想不出是什么问题 #include <Wire.h> #define memoryAddr 0x50 byte in=0x00; void setup() { Wire.begin(); // join i2c bus (address optional for master) Serial.begin(9600); }

我正在尝试将EEPROM芯片连接到Arduino Nano 328P,将数据写入其中,读取并在串行监视器中显示

串行监视器仅显示

写作。。。 阅读

我想不出是什么问题

#include <Wire.h>

#define memoryAddr 0x50
byte in=0x00;

void setup()
{
  Wire.begin(); // join i2c bus (address optional for master)
  Serial.begin(9600);
}


void loop()
{
  Serial.println("Writing...");
  
  Wire.beginTransmission(0x50); // This is the 24LC01B device address
  Wire.write(0x0);               // Start writing at address 0
  Wire.write("Hell");            // Send 4 bytes
  Wire.endTransmission();       
  delay(100);                    // Without a short delay, the EEPROM is still
                                // writing when you start to write the next block
                                // Feel free to experiment with the delay length
  
  Wire.beginTransmission(0x50);
  Wire.write(0x4);               // Write next four bytes starting at address 4
  Wire.write("o Wo");
  Wire.endTransmission();     
  delay(100);
  

  Wire.beginTransmission(0x50);
  Wire.write(0x8);               // Write last four bytes starting at address 8
  Wire.write("rld!");
  Wire.endTransmission();     
  delay(100);

  Serial.println("Reading...");

  Wire.beginTransmission(0x50); // Now we're going to read it back
  Wire.write(0x0);               // Sending address 0, so it knows where we'll want
  Wire.endTransmission();       // to read from

  Wire.requestFrom(0x50,12);    // Start new transmission and keep reading for 12 bytes
  while(Wire.available())    
  { 
    char c = Wire.read();    // Read a byte and write it out to the Serial port
    Serial.print(c);         
  } 
  Serial.println();

  delay(5000);
}
#包括
#定义内存地址0x50
字节in=0x00;
无效设置()
{
Wire.begin();//连接i2c总线(主机地址可选)
Serial.begin(9600);
}
void循环()
{
Serial.println(“编写…”);
Wire.beginTransmission(0x50);//这是24LC01B设备地址
Wire.write(0x0);//从地址0开始写入
Wire.write(“地狱”);//发送4个字节
导线端传动();
延迟(100);//如果没有短暂的延迟,EEPROM仍然是
//开始写入下一个块时写入
//请随意尝试延迟长度
导线起始传输(0x50);
write(0x4);//从地址4开始写入下四个字节
电汇。写(“o Wo”);
导线端传动();
延迟(100);
导线起始传输(0x50);
write(0x8);//从地址8开始写入最后四个字节
Wire.write(“rld!”);
导线端传动();
延迟(100);
Serial.println(“读取…”);
Wire.beginTransmission(0x50);//现在我们要读回它
Wire.write(0x0);//发送地址0,这样它就知道我们要去哪里
Wire.endTransmission();//从中读取
Wire.requestFrom(0x50,12);//开始新的传输并持续读取12个字节
while(Wire.available())
{ 
char c=Wire.read();//读取一个字节并将其写入串行端口
连续打印(c);
} 
Serial.println();
延迟(5000);
}

以下是我连接它的方式:

你检查了endTransmission()返回的内容吗?@Nino,我更改了代码的最后一部分:
Wire.endTransmission();int x=导线端传输();序列号println(x,12月);序列号。打印号(“完成”)
并得到一个值2,这意味着“在地址传输时接收到NACK”。我会尝试用谷歌搜索,但如果有人能帮我找到答案,我将不胜感激。只需给endTransmission打一次电话@Nino好的,我的代码的最后一部分现在看起来像这样<代码>Serial.println(“读取…”);导线起始传输(0x50);连线写入(0x0);int x=导线端传输();序列号println(x,12月);序列号。打印号(“完成”);延迟(5000);}返回值是否正确?看起来正确。你得到了什么?