Ich schaue mir den hier gefundenen Beispielcode an . Ich weiß, dass das nRF24L01-Modul 6 Pipes verwenden kann, aber ich habe im Internet nach den Adressbezeichnungen gesucht und konnte nichts finden. Gibt es in Zeile 37 eine Referenz dafür, wo der Autor 0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL erhält?
Vielen Dank.
arduino-uno
nrf24l01+
Alex H.
quelle
quelle
openReadingPipe()
hier: maniacbug.github.io/RF24/… Es wird erwähnt, dass Sie beliebige Werte für das letzte Adressbyte verwenden können.0x...
Präfix soll nur angeben, dass der Wert hexadezimal ist. Dies liegt daran, dass 99 in Dezimalzahl sich von 99 in Hexadezimalzahl unterscheidet, obwohl sie gleich aussehen. Also verwenden wir stattdessen 0x99.Antworten:
Wie die meisten Leute gepostet haben, sind die Werte für die Pipe willkürlich, müssen jedoch den Regeln gemäß der API folgen:
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 fallenLL
. Wie angegeben,0x
bedeutet dies, dass der Wert ein Hex-Wert ist undLL
den Typ Long Long bedeutet .Um Ihre Frage zu beantworten, verwenden Sie den a-Konverter, um eine Hex-Zahl wie folgt zu finden:
Ändern Sie einfach die letzten 2 Ziffern (niedrigstwertiges Bit):
Fügen Sie das
0x
und hinzuLL
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:
quelle
where the author is getting 0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL?
nicht, wie die Rohre verwendet werden.Die Werte
0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL
sind beliebige Werte und definieren die Adressen der Sender und Empfänger, mit denen gesprochen werden soll.Wenn Sie die Mirf-Bibliothek verwenden
Sie können auch wie Strings sein
serv1
.RF24
Verwendetquelle
Es gibt etwas, das jeder vergisst, um Ihnen zu sagen:
Die Rohre am Empfänger sollten nach dem ersten gekürzt werden
Rohre am Sender sollten sein
Wenn Sie wissen möchten, welche Pipe-Nachricht eingegangen ist, verwenden Sie
Auch die Pipe Nummer 6 wird zum Empfangen von Bestätigungsnachrichten verwendet .
Außerdem muss der Initialisierungscode Folgendes haben:
radio.enableDynamicPayloads();
Dieser funktioniert gut für mich:Viel Glück...
quelle
pipe
ist wie in Ihrem Beispiel definiert?