我正在与Arduinos(纳米板)进行DIY项目。第一个和第二个Arduinos之间的串行通信有问题。第一个Arduino发送一个字符(字母r)到第二个,这就是第二个Arduino开始从EEPROM恢复字节的方式(0-25字节)。唯一的问题是,第二个Arduino不能正确发送字节,或者第一个Arduino不能正确存储它们。EEPROM恢复不起作用
第二Arduino的具有EEPROM的默认值:在第二阿尔杜伊诺
EEPROMWritelong(EEPROM_DISTANCE, 1500);
EEPROMWritelong(EEPROM_DISTANCE_B, 100);
EEPROMWritelong(EEPROM_DISTANCE_C, 1000);
EEPROMWritelong(EEPROM_DISTANCE_D, 400);
EEPROM.write(EEPROM_MAX_SPEED, 43);
EEPROM.write(EEPROM_TOP_SPEED, 38);
EEPROMWritelong(EEPROM_TRIP_TIME, 1800);
EEPROMWritelong(EEPROM_WOKR_HOURS, 3600);
循环功能:对第一Arduino的恢复字节
if (Serial.available()) {
incoming = Serial.read();
if (incoming == 'r') {
uint8_t address = 0;
notSend = 255;
do {
Serial.write(EEPROM.read(address));
address++;
delay(50);
}
while (address < 26);
notSend = 0;
}
}
代码:
uint8_t byteCount = 0;
Serial.write('r'); // STARTS RESTORING
do {
if (Serial.available()) {
if (byteCount >= 0 && byteCount <= 17) EEPROM.write(byteCount, Serial.read());
// FROM DISTANCE TO TOP SPEED (BYTES 0 - 17)
else if (byteCount >= 18 && byteCount <= 21) EEPROM.write(byteCount + 8, Serial.read());
// TRIP TIME
else EEPROM.write(byteCount + 16, Serial.read());
// WORK HOURS
byteCount++;
}
}
while (byteCount != 26);
在这个过程中,我完成了所有字节的打印,并且字节根本不匹配。 左侧从第二个Arduino发送字节到第一个,右侧从第二个Arduino接收第一个Arduino的字节。
偏旁主题:通过制作和使用函数来处理endian交换,可以消除大量重复的代码。 – user4581301
@ user4581301你看到我不喜欢的东西? – SilvioCro
我想我明白你的意思了。谢谢! – SilvioCro