Я просматриваю пример кода, найденного здесь . Я знаю, что есть 6 каналов, которые может использовать модуль nRF24L01, но я искал в Интернете обозначения адресов и не смог ничего найти. В частности, в строке 37 есть ссылка на то, где автор получает 0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL?
Спасибо.
arduino-uno
nrf24l01+
Алекс Н
источник
источник
openReadingPipe()
здесь: maniacbug.github.io/RF24/… там упоминается, что вы можете использовать любые значения для последнего байта адреса.0x...
Префикс просто сказать значение в шестнадцатеричном формате. Это потому, что 99 в десятичном виде отличается от 99 в шестнадцатеричном, даже если они выглядят одинаково. Поэтому вместо этого мы используем 0x99.Ответы:
Как и большинство людей опубликовали, значения для канала являются произвольными, но должны следовать правилам API:
Прежде чем ответить на ваш вопрос, я думаю, что необходимы пояснения по шестнадцатеричным и десятичным значениям.
40-битное шестнадцатеричное является числовым представлением основания 16. Десятичное число имеет основание 10. Таким образом, вы можете преобразовать шестнадцатеричное значение в десятичное. Поскольку это выходит за рамки вопроса, вы можете узнать, как конвертировать из одного в другой. Есть несколько онлайн-конвертеров:
Шестнадцатеричный в десятичный преобразователь
Когда вы преобразуете шестнадцатеричное значение в десятичное, вы увидите, что это просто числовое представление. Когда вы конвертируете, вы опускаете
0x
иLL
. Как указано,0x
указывает, что значение является шестнадцатеричным значением иLL
означает тип Long Long .Поэтому, чтобы ответить на ваш вопрос, используйте конвертер, чтобы найти шестнадцатеричное число, например:
Просто измените последние 2 цифры (младший значащий бит):
Добавьте
0x
иLL
Все должно работать.
Я не эксперт по гексам, так как я учусь, поэтому, если я ошибаюсь, то, пожалуйста, кто-то поправит меня.
Наконец, таблица данных nRF24L01 указывает на то, что выбор адреса не является полностью произвольным:
источник
where the author is getting 0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL?
, а не как используются каналы.Значения
0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL
являются произвольными значениями и определяют адреса отправителей и получателей для общения.Если вы используете библиотеку Mirf
они могут быть также как строки
serv1
.RF24
использованияисточник
Есть что-то, о чем все забывают рассказать:
Трубы на приемнике должны быть укорочены после первого
Трубы на передатчике должны быть
Если вы хотите узнать, какое сообщение пришло, используйте
Также канал № 6 используется для получения подтверждающих сообщений.
Кроме того, код инициализации должен иметь:
radio.enableDynamicPayloads();
Этот работает хорошо для меня:Удачи...
источник
pipe
определено как в вашем примере?