Wie die meisten Leute gepostet haben, sind die Werte für die Pipe willkürlich, müssen jedoch den Regeln gemäß der API folgen:
Die Pipes 1-5 sollten die ersten 32 Bits gemeinsam nutzen. Nur das niedrigstwertige Byte sollte eindeutig sein, z
Bevor ich Ihre Frage beantworte, denke ich, dass eine Erklärung zu Hex- und Dezimalwerten erforderlich ist.
Die 40-Bit-Hexadezimalzahl ist eine Zahlendarstellung der Basis 16. Eine Dezimalstelle ist die Basis 10. Sie können also einen Hexadezimalwert in eine Dezimalzahl konvertieren. Da dies für die Frage nicht möglich ist, können Sie bei Google festlegen, wie von einem in einen anderen konvertiert werden soll. Es gibt einige Online-Konverter:
Hex-zu-Dezimal-Konverter
Sie werden sehen, wenn Sie den Hex-Wert in eine Dezimalzahl konvertieren, dass es sich nur um eine Zahlendarstellung handelt. Wenn Sie konvertieren, lassen Sie das 0x
und fallen LL
. Wie angegeben, 0x
bedeutet dies, dass der Wert ein Hex-Wert ist und LL
den Typ Long Long bedeutet .
Um Ihre Frage zu beantworten, verwenden Sie den a-Konverter, um eine Hex-Zahl wie folgt zu finden:
F0F0F0F0A1
F0F0F0F0A2
F0F0F0F0B4
F0F0F0F0E9
Ändern Sie einfach die letzten 2 Ziffern (niedrigstwertiges Bit):
Pipes 1-5 should share the first 32 bits. Only the least significant byte should be unique, e.g.
openReadingPipe(1,0xF0F0F0F0AA);
openReadingPipe(2,0xF0F0F0F066);
Fügen Sie das 0x
und hinzuLL
0xF0F0F0F0A1LL
0xF0F0F0F0A2LL
0xF0F0F0F0B4LL
0xF0F0F0F0E9LL
Alles sollte funktionieren.
Ich bin kein Hex-Experte, da ich lerne. Wenn ich also falsch liege, korrigiert mich bitte jemand.
Schließlich weist das Datenblatt nRF24L01 darauf hin, dass die Wahl der Adresse nicht völlig willkürlich ist:
Hinweis: Adressen, bei denen sich der Pegel nur einmal verschiebt (dh 000FFFFFFF), können häufig im Rauschen erkannt werden und eine falsche Erkennung ergeben, was zu einer erhöhten Paketfehlerrate führen kann. Adressen als Fortsetzung der Präambel (Hi-Low-Umschaltung) erhöhen auch die Paketfehlerrate.