Не компилируется скетч с ошибкой invalid conversion from 'byte* {aka unsigned char*}' to 'uint64_t
- Войдите на сайт для отправки комментариев
Вс, 02/09/2018 - 14:54
Здравствуйте всем! Пишу здесь впервые, так что не ругайие если что не так оформил.
В общем есть скетч для работы радиомодулем NRF24L01.
/* В данном скетче с передающей части (ТХ) отправляется значение переменной counter, * переменная эта с каждым шагом увеличивается на единицу. Приёмник (RX) принимает * сигнал, и отправляет обратно то, что получил, используя функцию radio.writeAckPayload * То есть наш приёмник на одно мгновение становится передатчиком! Если наш передатчик (TX) * принимает ответный сигнал, он выдаёт то, что принял, и пишет посчитанное вермя между * отправкой и приёмом сигнала в микросекундах. Данный скетч можно использовать для теста * модулей на качество связи, а также для понимания работы функции radio.writeAckPayload * by AlexGyver 2016 */ #include <SPI.h> #include "nRF24L01.h" #include "RF24.h" RF24 radio(9,10); // "создать" модуль на пинах 9 и 10 Для Уно //RF24 radio(9,53); // для Меги byte address[][6] = {"1Node","2Node","3Node","4Node","5Node","6Node"}; //возможные номера труб void setup(){ Serial.begin(9600); //открываем порт для связи с ПК radio.begin(); //активировать модуль radio.setAutoAck(1); //режим подтверждения приёма, 1 вкл 0 выкл radio.setRetries(0,15); //(время между попыткой достучаться, число попыток) radio.enableAckPayload(); //разрешить отсылку данных в ответ на входящий сигнал radio.setPayloadSize(32); //размер пакета, в байтах radio.openReadingPipe(1,address[0]); //хотим слушать трубу 0 radio.setChannel(0x60); //выбираем канал (в котором нет шумов!) radio.setPALevel (RF24_PA_MAX); //уровень мощности передатчика. На выбор RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH, RF24_PA_MAX radio.setDataRate (RF24_1MBPS); //скорость обмена. На выбор RF24_2MBPS, RF24_1MBPS, RF24_250KBPS //должна быть одинакова на приёмнике и передатчике! //при самой низкой скорости имеем самую высокую чувствительность и дальность!! // ВНИМАНИЕ!!! enableAckPayload НЕ РАБОТАЕТ НА СКОРОСТИ 250 kbps! radio.powerUp(); //начать работу radio.startListening(); //начинаем слушать эфир, мы приёмный модуль } void loop(void) { byte pipeNo, gotByte; while( radio.available(&pipeNo)){ // слушаем эфир со всех труб radio.read( &gotByte, 1 ); // чиатем входящий сигнал radio.writeAckPayload(pipeNo,&gotByte, 1 ); // отправляем обратно то что приняли Serial.print("Recieved: "); Serial.println(gotByte); } }
При компиляции выдает такую ошибку
C:\Users\djadiv\Desktop\RX_time\RX_time.ino: In function 'void setup()': C:\Users\djadiv\Desktop\RX_time\RX_time.ino:28:36: warning: invalid conversion from 'byte* {aka unsigned char*}' to 'uint64_t {aka long long unsigned int}' [-fpermissive] radio.openReadingPipe(1,address[0]); //хотим слушать трубу 0 ^ In file included from C:\Users\djadiv\Desktop\RX_time\RX_time.ino:13:0: C:\Users\djadiv\Documents\Arduino\libraries\RF24-master/RF24.h:350:8: note: initializing argument 2 of 'void RF24::openReadingPipe(uint8_t, uint64_t)' void openReadingPipe(uint8_t number, uint64_t address); ^ Скетч использует 3354 байт (10%) памяти устройства. Всего доступно 32256 байт. Глобальные переменные используют 251 байт (12%) динамической памяти, оставляя 1797 байт для локальных переменных. Максимум: 2048 байт.
Я не знаю языка C, возможно это связано с тем, я неправильно подключил библиотеки для работы с NRF24L01
это код не от этой библиотеки. Эта библиотека требует числовой адрес трубы, а вы задаете строку
я удалил (другую/старую/непонятную) библиотеку из Мои документы NRF24L01, теперь заработал