arduino передача по radio nrf24l01

Extremum
Offline
Зарегистрирован: 13.08.2020

Добрый день. Есть задача заставить радио передавать текстовое значение и численный массив, кто подскажет как это реализовать программно? Я так понимаю нужно преобразовать данную команду(data это массив вещественных чисел)
radio.write(&data, sizeof(data));
PS если бы нашёл в интернете, на форум бы не писал

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

А чем radio.write(&data, sizeof(data)) не устраивает?

Extremum
Offline
Зарегистрирован: 13.08.2020

передаются только элементы массива, а мне нужно до них передать сообщение текстовое

 

rkit
Онлайн
Зарегистрирован: 23.11.2016

А текст у тебя не в массиве хранится?

Extremum
Offline
Зарегистрирован: 13.08.2020

Нет, текст char, а массив float

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Extremum пишет:

передаются только элементы массива, а мне нужно до них передать сообщение текстовое

А чем два раза radio.write(нечто, sizeof(нечто)) не устраивает?

rkit
Онлайн
Зарегистрирован: 23.11.2016

Extremum пишет:
Нет, текст char, а массив float

Нет и нет. Попробуй еще раз.

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

Extremum пишет:
Нет, текст char, а массив float

 

Любые данные в памяти хранятся как набор байтов. Весь вопрос в интерпретации. Вот функция radio.write(&data, sizeof(data)) типом данных не интересуется. Она принимает адрес начала данных (&data) и байт за байтом их передает. А что там char, float или что еще ей по барабану. Передала sizeof(data) байт и успокоилась.

Extremum
Offline
Зарегистрирован: 13.08.2020
//передатчик 
const char text[] = "A1";
float data[4];
void setup() {
*запуск датчиков*
void loop() {
data[0] = 1; 
data[1] = 12; 
data[2] = 3; 
data[3] = 4;
radio.write(&text, sizeof(text))
radio.write(&data, sizeof(data)); // отправляем данные из массива data указывая сколько байт массива
delay(1000);
} 

//приемник
float data[4];
const char text[0];
void setup()
*запуск датчиков*
void loop() {
if(radio.available()){
// Если в буфере имеются принятые данные
radio.read(&text, sizeof(text));
radio.read(&data, sizeof(data));
Serial.print(text);
Serial.print( ";");
Serial.print(data[0]);
Serial.print( ";");
Serial.print( data[1]);
Serial.print( ";");
Serial.print( round(data[2]));
Serial.print( ";");
Serial.print( data[3]);
Serial.print( ";");
}
}

 

Extremum
Offline
Зарегистрирован: 13.08.2020

не выводит текст и массив одновременно, в одном массиве тоже существовать не могут, так как разные типы данных

sadman41
Онлайн
Зарегистрирован: 19.10.2016

const char text[0] - что это?

Extremum
Offline
Зарегистрирован: 13.08.2020

это переменная, взял с примера

anatoli_nik
Offline
Зарегистрирован: 17.01.2019

Так там нет ничего!

b707
Offline
Зарегистрирован: 26.05.2017

Extremum - главное - в коде передатчика не вижу,  в какой строчке вы передаете по радио массив text

Ну и в приемнике куча ошибок, конечно, но прежде чем принимать, надо данные хотя бы отправить :)

Extremum
Offline
Зарегистрирован: 13.08.2020

а как его передавать? я и хочу узнать эту строчку

Izvekoff
Offline
Зарегистрирован: 02.03.2020

Extremum пишет:

а как его передавать? я и хочу узнать эту строчку

понимаю, что троллинг, но лови )))
 

radio.write(&text, sizeof(text));

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Extremum пишет:

 в одном массиве тоже существовать не могут, так как разные типы данных

Я же Вам писал

ЕвгенийП пишет:

А чем два раза radio.write(нечто, sizeof(нечто)) не устраивает?

Extremum
Offline
Зарегистрирован: 13.08.2020

передаёт только массив который раньше написан

Izvekoff
Offline
Зарегистрирован: 02.03.2020

Extremum пишет:

передаёт только массив который раньше написан

раньше это куда? )))

b707
Offline
Зарегистрирован: 26.05.2017

Extremum пишет:

передаёт только массив который раньше написан

выкладывайте новый код

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Похоже, случай клинический. Либо, напишите ему кто-нибудь, либо в "Ищу исполнителя".

Extremum
Offline
Зарегистрирован: 13.08.2020

Похоже помощи на форумах не дождешься. Здесь люди собираются, чтобы показать своё превосходство над тем, кто менее опытен? Правильно, случай клинический, поэтому надо ущемлять новичка

Extremum
Offline
Зарегистрирован: 13.08.2020
СOM порт
22:18:55.135 -> ;321199.00;12.00;0.15;-0.50;0;0;0;0
22:18:56.194 -> A1;0.00;0.00;0.00;0.00;0;0;0;0
22:18:56.229 -> ;322266.00;12.00;0.13;-0.27;0;0;0;0
22:18:57.270 -> A1;0.00;0.00;0.00;0.00;0;0;0;0
22:18:57.311 -> ;323338.00;12.00;0.06;-0.53;0;0;0;0
22:18:58.315 -> A1;0.00;0.00;0.00;0.00;0;0;0;0
22:18:58.349 -> ;324404.00;12.00;0.07;-0.60;0;0;0;0
22:18:59.401 -> A1;0.00;0.00;0.00;0.00;0;0;0;0
22:18:59.437 -> ;325473.00;12.00;0.10;-0.50;0;0;0;0
22:19:00.451 -> A1;0.00;0.00;0.00;0.00;0;0;0;0
22:19:00.485 -> ;326539.00;12.00;0.15;-0.38;0;0;0;0
22:19:01.539 -> A1;0.00;0.00;0.00;0.00;0;0;0;0
22:19:01.572 -> ;327608.00;12.00;0.11;-0.44;0;0;0;0
22:19:02.590 -> A1;0.00;0.00;0.00;0.00;0;0;0;0
22:19:02.624 -> ;328674.00;12.00;0.04;-0.47;0;0;0;0
22:19:03.670 -> A1;0.00;0.00;0.00;0.00;0;0;0;0
22:19:03.705 -> ;329743.00;12.00;0.11;-0.59;0;0;0;0
Может ли выдавать в одну строчку? т.е. например 
22:19:02.624 -> A1;328674.00;12.00;0.04;-0.47;0;0;0;0

 

Extremum
Offline
Зарегистрирован: 13.08.2020

при этом ругается 

C:\Users\Sergey\Documents\Arduino\priemka\priemka.ino:10:12: warning: uninitialized const 'text' [-fpermissive]
 const char text[0];
            ^~~~
C:\Users\Sergey\Documents\Arduino\priemka\priemka.ino: In function 'void loop()':
C:\Users\Sergey\Documents\Arduino\priemka\priemka.ino:36:12: warning: invalid conversion from 'const void*' to 'void*' [-fpermissive]
 radio.read(&text, sizeof(text));
            ^~~~~
In file included from C:\Users\Sergey\Documents\Arduino\priemka\priemka.ino:3:0:
C:\Program Files (x86)\Arduino\libraries\RF24/RF24.h:201:8: note:   initializing argument 1 of 'void RF24::read(void*, uint8_t)'
   void read( void* buf, uint8_t len );
        ^~~~
 
Extremum
Offline
Зарегистрирован: 13.08.2020

можно ли послать в один пакет текст и массив?

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Extremum пишет:

Похоже помощи на форумах не дождешься. Здесь люди собираются, чтобы показать своё превосходство над тем, кто менее опытен? Правильно, случай клинический, поэтому надо ущемлять новичка

Следует различать объем имеющегося опыта и потенциальную способность такой опыт обрести.

Люди с малым опытом - начинающие, люди с неспособностью к получению опыта - просто дураки. И у меня для тебя плохие новости, родное сердце!

Но ты особо не расстраивайся! Работай над собой. Только не урони ничего, и всё у тебя получится.

b707
Offline
Зарегистрирован: 26.05.2017

Extremum пишет:

при этом ругается

Extremum - выкладывать сообщения об ошибках без кода - совершенно бессмысленно
 
ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Extremum пишет:

можно ли послать в один пакет текст и массив?


Можно

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Extremum пишет:
Похоже помощи на форумах не дождешься.
Это точно! Если самому вообще ничего не делать, не читать и не изучать, дождёшься только посыла на.
Extremum пишет:
ущемлять новичка
Ну, а кого ж ещё ущемлять? Заслуженных ветеранов?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Extremum пишет:

Похоже помощи на форумах не дождешься. Здесь люди собираются, чтобы показать своё превосходство над тем, кто менее опытен? Правильно, случай клинический, поэтому надо ущемлять новичка

На форумах собираются обычно люди, имеющие достаточно опыта, чтобы отличить новичка от халявщика.

Новичкам всегда помогают, а вот халявщиков, как правило, недолюбливают и начинают над ними глумиться.

Extremum
Offline
Зарегистрирован: 13.08.2020

когда ищешь два дня информацию и пробуешь кучу способов перевода типов переменных, на форуме просто обязаны сказать, что ты халявщик.
ps редко видел на форумах помощь новичкам, только глумление

Extremum
Offline
Зарегистрирован: 13.08.2020

В спорте унижение слабого называется неуважение к противнику, в программировании-профессиональный менталитет 

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

Extremum пишет:

когда ищешь два дня информацию и пробуешь кучу способов перевода типов переменных, на форуме просто обязаны сказать, что ты халявщик.
ps редко видел на форумах помощь новичкам, только глумление

 

Вам уже ответили по делу и, причем, несколько раз. Но вы упорно это проигнорировали. Ну тогда и начали глумиться. 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Это исключительно потому, что Вы, по неопытности, еще не научились различать новичков и халявщиков.

Смотрите сами:

- два дня - это вообще не срок. От слова "совсем".

- не нужно "пробовать" с типами переменных, - нужно "знать".

Вместо того, чтобы внимательно изучить язык программирования, на котором Вы собираетесь работать (а этого за 2 дня никак не сделаешь), Вы предпочитаете побираться по форумам, чтобы кто-то сделал за Вас. Это и есть - халявщик. Новичок начинает с задач, которые он может выполнить сам, постепенно, по мере приобретения опыта, их усложняя. А халявщик хочет, чтобы ему все (или хотя бы часть, но в результате все равно оказывается, что - все) ему сделал кто-то, причем бесплатно.

Extremum
Offline
Зарегистрирован: 13.08.2020

в два пакета выводит, скинул код, скинул данные из ком порта, но вы видимо проигнорировали 

Extremum
Offline
Зарегистрирован: 13.08.2020

Я не программист, с плюсами никогда не работал. 

Extremum
Offline
Зарегистрирован: 13.08.2020

Нужно выполнить задачу, изучаю в процессе, вы можете указать на ошибку и я чему-то научусь. Но если не хотите помочь, то зачем мне тыкать на мои пробелы в теории, самоутверждение?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Здесь помогают только тем, кто хочет научиться, а тех, кому нужно выполнить конкретный проект, - направляют в платный раздел.

b707
Offline
Зарегистрирован: 26.05.2017

Extremum пишет:

в два пакета выводит, скинул код, скинул данные из ком порта, но вы видимо проигнорировали 

новый, после исправлений - код вы не показывали. А догадываться по старому коду, что и как вы в нем исправили - никто не станет.

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Апять ниправильна памагаем. И когда уже научимся?

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Горбатого могила исправит.