私はArduinos(Nanoボード)を使用したDIYプロジェクトに取り組んでいます。私は最初と2番目のArduinos間のシリアル通信に問題があります。最初のArduinoは2文字目に1文字(r文字)を送信し、2度目のArduinoがEEPROMからバイトを復元する方法を示します(0〜25バイト)。唯一の問題は、2番目のArduinoがバイトを正しく送信しないか、または最初のArduinoが正しく格納しないことです。EEPROMの復元が機能しない
第アルドゥイーノはEEPROMのデフォルト値があります最初の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);
第アルドゥイーノで
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);
ループ機能を私はこの過程ですべてのバイトを印刷しましたが、バイトはまったくマッチしません。 左側が第2のArduinoから第1のArduinoにバイトを送信し、右側が第2のArduinoから最初のArduinoでバイトを受信しています。
トピックオフ:エンディアンスワップを処理する関数を作成して使用することで、多くの重複したコードを駆除できます。 – user4581301
@ user4581301私は何かを見ますか? – SilvioCro
私はあなたが何を意味するかを見ていると思います。ありがとう! – SilvioCro