Не компилируется скетч с ошибкой 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, теперь заработал