我正在與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