Arduino纳米和外部eemprom问题
我正在尝试将EEPROM芯片连接到Arduino Nano 328P,将数据写入其中,读取并在串行监视器中显示 串行监视器仅显示 写作。。。 阅读 我想不出是什么问题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); }
#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);}代码>返回值是否正确?看起来正确。你得到了什么?