Управление реле модулем с помощью nrf24l01 и джойстиком

Tsepa

✩✩✩✩✩✩✩
22 Июн 2019
23
0
Написал скетч для передачи,и для принятие сигнала.Все компилируется,вроде как все должно работать,но увы не работает,реле работают,нрф модуля тоже,подключено все правильно,пробовал делать передачу сигнала через комп порт,все работает,а вот через джойстик не как,может у кого-то есть скетч готовый,посмотреть что да как,или же может кто-то разобраться в моем,помочь?!
 

Tsepa

✩✩✩✩✩✩✩
22 Июн 2019
23
0
Там еще написан код для сервы,но то не нужно разбирать,только для моторчиков,а моторчики ездят с помощью реле модуля
 

Вложения

Александр Симонов

★★★✩✩✩✩
2 Авг 2018
519
134
Не особо вникая в код, вот что нашёл компилятор в "строгом режиме":
строка 55: сравнение указателя с числом (даже если тебе это ни о чём не говорит, присмотрись к этой строке)
строки 69-71: результат constrain-а не используется. constrain не меняет переменную в первом параметре, он возвращает новое, ограниченное, значение.
 

Александр Симонов

★★★✩✩✩✩
2 Авг 2018
519
134
@Пожилой транзистор 1990, странный вывод...
constrain это функция, она возвращает значение. В приведенном скетче (RX1231.ino) значение, возвращаемое функцией constrain никуда не записывается, т.е. её можно смело стереть и работа скетча не изменится. Если автор так и хотел, то всё норм, а если он думал, что строчка
C:
constrain(x, 0, 180);
ограничит значение переменной x диапазоном от 0 до 180, то он не понимает как работают функции.
 

Tsepa

✩✩✩✩✩✩✩
22 Июн 2019
23
0
Это команда чисто для сервопривода,чтобы задать угол,но на прием/передачу данных она не как не влияет,в чем заключается проблема,прием/передача данных не работает?!
 

Tsepa

✩✩✩✩✩✩✩
22 Июн 2019
23
0
В том прикол что данные не принимаются, сейчас кину скриншот,что выводится в компорт
 

Tsepa

✩✩✩✩✩✩✩
22 Июн 2019
23
0
Я погонял,через компорт нрф все получают,все передают,а вот через джойстики не как
 

Tsepa

✩✩✩✩✩✩✩
22 Июн 2019
23
0
Как бы тестовые примеры погонял,все нормально работают
 

Александр Симонов

★★★✩✩✩✩
2 Авг 2018
519
134
@Tsepa, ок, значит сами приемо-передатчики работают.

Почитал код твоих скетчей, ошибку вижу, вот тебе наводящие вопросы:
- что возвращает функция sizeof(xxx)? В случае если xxx int. А если int*? А если int[123]?
- что ожидает метод radio.write в первом и втором параметрах? И то же для radio.read
 

Tsepa

✩✩✩✩✩✩✩
22 Июн 2019
23
0
-Ну функция sizeof вычисляет размер массива в байтах,я так понял её не хватает в моем коде.
А что значит ***int и int*,int[123]?
 

Александр Симонов

★★★✩✩✩✩
2 Авг 2018
519
134
@Tsepa, нет, sizeof не вычисляет размер массива в байтах, почитай документацию.
Ну и по указателям в Си почитай чего-нибудь.
 

Tsepa

✩✩✩✩✩✩✩
22 Июн 2019
23
0
Оператор sizeof возвращает количество байт, занимаемых типом переменной, либо количество байт, занимаемых массивом
 

Tsepa

✩✩✩✩✩✩✩
22 Июн 2019
23
0
а что в моем случае?нужно вставить эту функцию в код,я так понимаю
 

Александр Симонов

★★★✩✩✩✩
2 Авг 2018
519
134
@Tsepa, не, мои претензии вообще не в тему, дело в чем-то другом.
Попробуй в скетче передатчика radio.openWritingPipe(address[0]); заменить на radio.openWritingPipe(0xE8E8F0F0E1LL);
и в приемнике соответственно radio.openReadingPipe(1, address[0]); заменить на radio.openReadingPipe(1, 0xE8E8F0F0E1LL);

И скажи, какой пример у тебя работает.
 

Александр Симонов

★★★✩✩✩✩
2 Авг 2018
519
134
@Tsepa, тогда следующая догадка. Добавь в инициализацию радио
C:
  radio.begin();
  radio.setAutoAck(1);// <-- добавь вот эту строчку
  radio.enableAckPayload(); // ну и эту тоже можно
  radio.setRetries(0,15); // да и эта лишней не будет