Не приходит значение от передатчика на приемник
- Войдите на сайт для отправки комментариев
Вс, 14/11/2021 - 21:10
В чем суть этих скетчей. На приемнике есть кнопка. Вот если нажать на кнопку, то отправляется 1 на передатчик, а на передатчике если отправлено 1(т.е. нажата кнопка), то обратно на приемник отправляется 1.
Однако, от приемника приходит 1 на передатчик, но обратно на приемник приходит 0.00, хотя transmit_data[8] меняю на 1.
Вот что выводится в порт, когда приходит 1 от приемника на передатчик:
pered otpravkoy transmit_data[8] = 1.00
telemetry[0] = 1
transmit_data[8] = 1.00
transmit_data[8] нигде в другом месте не меняется
-----------------------
На приемнике в порт выводится так(когда нажата кнопка):
0.00
1
====
Остальные данные приходят
Код настройки nrf вырезал, чтобы тут лишнее в глаза не бросалось
Передатчик:
float transmit_data[9]; // массив пересылаемых данных
int telemetry[1]; // массив принятых от приёмника данных телеметрии
void loop()
{
transmit_data[0] = 0;
transmit_data[1] = 1;
transmit_data[2] = 2;
transmit_data[3] = 3;
transmit_data[4] = 4;
transmit_data[5] = 5;
transmit_data[6] = 6;
transmit_data[7] = 7;
if (radio.write(&transmit_data, sizeof(transmit_data))) { // отправка пакета transmit_data
trnsmtd_pack++;
if (!radio.available()) { // если получаем пустой ответ
} else {
while (radio.available() ) { // если в ответе что-то есть
radio.read(&telemetry, sizeof(telemetry)); // читаем
// получили забитый данными массив telemetry ответа от приёмника
Serial.println("telemetry[0] = ");Serial.print(telemetry[0]);
if(telemetry[0] == 1) transmit_data[8] = 1;//отправляем то, что сигнал принят
else if(telemetry[0] == 0) transmit_data[8] = 0;
Serial.println("transmit_data[8] = ");Serial.print(transmit_data[8]);
}
}
} else {
failed_pack++;
}
}
Приемник:
float recieved_data[9]; // массив принятых данных
int telemetry[1]; // массив данных телеметрии (то что шлём на передатчик)
//--------------------- ПЕРЕМЕННЫЕ ----------------------
unsigned long outTime = 0;
const int PIN_BUTTON = 2;//пин кнопки
int buttonState = 0;
void setup() {
Serial.begin(9600);
//настраиваем кнопку
pinMode(PIN_BUTTON, INPUT_PULLUP);
digitalWrite(PIN_BUTTON, HIGH);
}
void loop() {
while (radio.available(&pipeNo)) { // слушаем эфир
radio.read( &recieved_data, sizeof(recieved_data)); // чиатем входящий сигнал
Serial.println(recieved_data[8]);
if(millis() - outTime > 100)
{
buttonState = !digitalRead(PIN_BUTTON);//меняем на противоположное, т.к. при ненажатой кнопке значение 1
Serial.println(buttonState);
if(buttonState == true) telemetry[0] = 1;
else telemetry[0] = 0;
outTime = millis();
}
Serial.println("========");
}
Может у кого-то есть какие-то предположения? Никак не могу исправить.
Перед отправкой transmit_data[8] = 1, но на приемник приходит 0.00, хотя остальные данные приходят нормально
Может у кого-то есть какие-то предположения? Никак не могу исправить.
Перед отправкой transmit_data[8] = 1, но на приемник приходит 0.00, хотя остальные данные приходят нормально
Зачем Вы показываете куски скетчей? Где остальное?
это NRF24 ? - покажите секцию инициализации НРФ. А лучше сделайте тестовый код приемника и передатчика , который будет компилироваться но где не будет ничего лишнего
так он флоат в буфер пихает, естественно не пролезет, если не изменяет память в библиотеке буфер 32 байта 8х4 = 32, а он 9-й элемент массива впихует
так он флоат в буфер пихает, естественно не пролезет, если не изменяет память в библиотеке буфер 32 байта 8х4 = 32, а он 9-й элемент массива впихует
Спасибо большое
так он флоат в буфер пихает, естественно не пролезет, если не изменяет память в библиотеке буфер 32 байта 8х4 = 32, а он 9-й элемент массива впихует
Спасибо большое
да не за что, там жеж в голове примера библиотеки это было написано, ту, что я видел