der Typ ist uint16_t, also Integer (unsigned, wenn ich nicht irre)
Auszug aus radio.h:
/// Frequency data type.
/// Only 16 bits are used for any frequency value (not the real one)
typedef uint16_t RADIO_FREQ;
Deine Typdefinition ist: int frequency;
Darin lassen sich Frequenzen von 0 bis 32767 speichern, bzw. 327,67MHz. Wegen dem Vorzeichen.
Geliefert wird aus der Bilbliothek ohne Vorzeichen.
Besser wäre, um Folgefehler und Denkakrobatik zu vermeiden: unsigned int frequency;
Solang Du über die 327MHz nicht hinaus kommst, sollte es aber kein Problem damit geben.
Wenn Du so machst:
storeFreq = EEPROM.read(0); // Speicherwert für Frequenz aus EEPROM holen
frequency = (storeFreq + 825)*10; // Frequenzwert zu int für Radio-Chip wandeln
kommst Du auf Frequenzen bis 108,00MHz.
Hier sollte dann aber eine Warnung kommen: radio.setFrequency(frequency);
Weil der von Dir verwendete Datentyp nicht übereinstimmt. Macht aber nichts, solang das Vorzeichenbit nicht gesetzt ist.
Hier erzeugst Du ein Problem: storeFreq = (frequency/10)-825; // Frequenz in Speicherwert (byte) umrechnen
Wenn Du fiktiv 10625 durch 10 teilst, bleiben 1062 übrig, dann -825 = 237. Du speicherst damit letztlich 106,20MHz statt 106,25MHz.
MfG
Moppi
Lesezeichen