arduino nrf24l01 машинка.

Юра_1985

✩✩✩✩✩✩✩
29 Май 2021
27
0
Я так понял в коде есть мусор? Покажите. Вот кинул строчку в код и мой драйвер работает вперед и назад. Для меня етот день отличный.

GMotor motorR(DRIVER3WIRE, 2, 4, 7, (LOW/HIGH) );
GMotor motorL(DRIVER2WIRE, 6, 5, HIGH);
 

bort707

★★★★★★✩
21 Сен 2020
2,898
862
Я так понял в коде есть мусор? Покажите.
я вам несколько раз сказал про прием какого-то левого массива, сами-то не видите? Или вы в этом коде ничего не понимаете?

Кстати, что это у вас за параметр такой в конструкторе мотора? :) - LOW/HIGH ?
GMotor motorR(DRIVER3WIRE, 2, 4, 7, (LOW/HIGH) );
 

Юра_1985

✩✩✩✩✩✩✩
29 Май 2021
27
0
@bort707,
Добрий день.
Я на тот параметр не обращаю внимание. Там вроде драйвер с шим сигналов. У меня не такого.
 

bort707

★★★★★★✩
21 Сен 2020
2,898
862
@Юра_1985, просто это смешно. Хотя наверно смеяться надо не над вами, а над тем, кто этот код посоветовал.
Посмотрите описание библиотеки, они у гайвера обьяснены так подробно, что любая блондинка разберется
 

Юра_1985

✩✩✩✩✩✩✩
29 Май 2021
27
0
@bort707,
Да я хуже блондинки. Не вижу то что вам видно. Но попробую розобратся за один вечер. Шучу. Тут больше времени нужно.
 

BMW25

✩✩✩✩✩✩✩
8 Дек 2019
5
0
если вы знаете, как это сделать вперед_ bort707
 

bort707

★★★★★★✩
21 Сен 2020
2,898
862
если вы знаете, как это сделать вперед_ bort707
что сделать?
Вы предложили ТС код - отлично, а ему подсказываю ошибки в вашем коде.
Кстати , вопрос про параметр LOW/HIGH вам надо задавать. Что эта запись означает, поясните
 
Изменено:

Юра_1985

✩✩✩✩✩✩✩
29 Май 2021
27
0
@bort707,
Добрый день!
LOW/HIGH ето означает уровень высокий и низкий.
Ето я не искал в инете а просто мой ответ.
Вроде просто но разобрать логику как параметр работает в скетче иду почитаю.
Кстате уже знаю что в строке GMotor motorR(DRIVER3WIRE, 2, 4, 7, (LOW/HIGH) );
пин 7 ето шим . Тоисть для меня ето сигнал прямоугольной формы..
а 2 и 4 реверс . ето или 5в или земля на пинах 2 и 4.
(Управления я так догадываюсь LOW/HIGH).
Но могу ошибатся.
Простите за русский язык. Я не умею грамотно написать и пояснить.
 

bort707

★★★★★★✩
21 Сен 2020
2,898
862
Юра, запись LOW/HIGH в описании означает LOW или HIGH:) Это общепринятое для мануалов обозначение, показывающее что надо выбрать ОДИН из нескольких вариантов. То есть в программе надо писать не оба варианта через черту, а что-то одно!
У вас же получилось " лоу делить на хай" что бессмысленно и смешно.
Читайте книжки, чтобы понимать что написано в коде и не копировать чужие ляпы
 

Юра_1985

✩✩✩✩✩✩✩
29 Май 2021
27
0
@Старик Похабыч,
Мучаю скетч написаный вами.

byte trans_data[] = {0, 0, 0, 0};

Пробую поменять byte trans_data[] = {0, 1, 2, 3}
Но не работает у меня передатчик с приемником.
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,192
1,281
Москва
Зачем надо менять ? Это начальная инициация массива, далее эти данные перезаписываются считанными с потенциометров. Правда не помню, что бы у меня 4 было байта. Но вполне может быть.
Но поменять то конечно можно.
 

Юра_1985

✩✩✩✩✩✩✩
29 Май 2021
27
0
@Старик Похабыч,
Я теперь понял про какие байты вы говорили на форуме. Ето про массив. Значит мне два нужно удалить. Или дописать тому кто умеет.
 

Юра_1985

✩✩✩✩✩✩✩
29 Май 2021
27
0
Пульт:
//*********************************************************************************
//   Пульт
//*********************************************************************************
/*
RF24 radio(9,10); // CE, CSN

A0_Джойстик A (М1)
A1_Джойстик B (М2)
A2_Джойстик C (Серво1)
A3_Джойстик D (Серво2)
D2_кнопка     (Реле)
*/

#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"

RF24 radio(9,10); // CE, CSN
byte address[][6] = {"1Node", "2Node", "3Node", "4Node", "5Node", "6Node"}; //возможные номера труб
char xyData[32] = "";
int joystick[6];
int potpin_1 = A2;//Серво 1 на A2
int val_1;
int potpin_2 = A3;// Серво 2 на A3
int val_2;
int button1 = 2;// Кнопка 1 на D2

void setup() {
Serial.begin(9600);

pinMode(button1, INPUT_PULLUP);

radio.begin();
radio.setAutoAck(1); //режим подтверждения приёма, 1 вкл 0 выкл
radio.setRetries(0, 15); //(время между попыткой достучаться, число попыток)
radio.enableAckPayload(); //разрешить отсылку данных в ответ на входящий сигнал
radio.setPayloadSize(32); //размер пакета, в байтах
radio.openWritingPipe(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_250KBPS); //скорость обмена. На выбор RF24_2MBPS, RF24_1MBPS, RF24_250KBPS
radio.powerUp(); //начать работу
radio.stopListening(); //не слушаем радиоэфир, мы передатчик

}
void loop() {

val_1 = analogRead(potpin_1),val_1 = map(val_1, 0, 1023, 0, 127);// Серво 1
val_2 = analogRead(potpin_2),val_2 = map(val_2, 0, 1023, 0, 180);// Серво 2

int signalX = 255 - analogRead(0) / 2; // Джойстик на А0
int signalY = 255 - analogRead(1) / 2; // Джойстик на А1

joystick[0] = signalX ;
joystick[1] = signalY ;
joystick[2] = val_1 ;
joystick[3] = val_2 ;
joystick[4] = !digitalRead(button1);

radio.write( joystick, sizeof(joystick) ); // Читаем сигнал
}
Машинка:
//*********************************************************************************
//                                 Машинка
//*********************************************************************************
/* https://community.alexgyver.ru/threads/arduino-nrf24l01-mashinka.5463/

RF24 radio(9,10); // CE, CSN

D2 D3__ DriwerA (плавно вперед назад один канал,
        Тут есть функцыя СТОП мотор при пропадании сигнала с передатчика)
D5 D6__ DriwerB (плавно вперед назад второй канал)
D7 ____Серво 1
D8 ____Серво 2
D4 ____Реле (фара)

*/
#include <Servo.h>
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
#include "GyverMotor.h"

GMotor motorR(DRIVER2WIRE, 2, 3, HIGH);
GMotor motorL(DRIVER2WIRE, 5, 6, HIGH);
RF24 radio(9, 10);
byte address[][6] = {"1Node", "2Node", "3Node", "4Node", "5Node", "6Node"}; //возможные номера труб
char recieved_data[32] = "" ;
int xAxis, yAxis;
int joystick[6];
int signalY = 0 ;
int signalX = 0 ;
int relay1 = 4;

Servo servo1;
Servo servo2;

int timeout = 500;
int lastTime = 0;

void setup() {
pinMode(relay1, OUTPUT);

servo1.attach(7);
servo2.attach(8);
motorR.setMode(FORWARD);
motorL.setMode(FORWARD);

Serial.begin(9600);
radio.begin();

///_________________________________________________________________///
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_250KBPS); //скорость обмена. На выбор RF24_2MBPS, RF24_1MBPS, RF24_250KBPS
radio.powerUp(); //начать работу
radio.startListening(); //начинаем слушать эфир, мы приёмный модуль
///_________________________________________________________________________________________________________///

}
void loop() {

if (radio.available()) {
  lastTime = millis();

radio.read( joystick, sizeof(joystick) );


signalY = joystick[0];
signalX = joystick[1];

Serial.println(signalY);
Serial.println(signalX);

int dutyR = signalY;
int dutyL = signalX;

motorR.setSpeed(dutyR);
motorL.setSpeed(dutyL);

servo1.write(joystick[2]);
servo2.write(joystick[3]);

digitalWrite(relay1, joystick[4]);
}
int dt = millis() - lastTime;
if (dt >= timeout) {
motorR.setSpeed(0);
}
}
 
Изменено:

Юра_1985

✩✩✩✩✩✩✩
29 Май 2021
27
0
Большое спасибо BMW25!
За код который выложыли тут.
Теперь попробую добавить кнопку для реле. Там в приемнике видно что можно подключить.
 

Юра_1985

✩✩✩✩✩✩✩
29 Май 2021
27
0
А вот и кнопка. Видать день сегодня мой. Повезло. Угадал куда и что вставить..
Выше перезалил коды.
 

Юра_1985

✩✩✩✩✩✩✩
29 Май 2021
27
0
@BMW25,
Привет. Я пробовал два канала читать но не получилось. И я не знаю будет два радиоканала одновременно принимать или нет.

joystick
sw


Приемник:
radio.read(sw, sizeof(sw) );
radio.read( joystick, sizeof(joystick) );
 
Изменено:

Юра_1985

✩✩✩✩✩✩✩
29 Май 2021
27
0
@bort707,
Я так и сделал.
Почему тогда другой канал для реле почти открыт не пойму.