Помогите дописать скетч

JesterKING
Offline
Зарегистрирован: 09.03.2021

Привет. Две ардуино связанны нрф24л01. На приемнике L298N , а на передатчике джойстик. Проблема в том , что двигатель не крутится. Помогите , пожалуйста
//ПРИЕМНИК

#include
#include
#include "RF24.h"
Servo servo1;

RF24 radio(9,10);
const uint64_t pipe = 0xE8E8F0F0E1LL;
int massiv[2];
int enA = 5;
int in1 = 2;
int in2 = 4;
int fspeed;
int bspeed;
void setup()
{
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(enA, OUTPUT);
servo1.attach(3);
delay(50);
radio.begin();
radio.openReadingPipe(1,pipe);
radio.startListening();
}

void loop(){

if (radio.available()){
radio.read(&massiv,sizeof (massiv));}

servo1.write(map(massiv[0], 0, 126, 7,177 ));

if (massiv[1]>0 && massiv[1]<110){
fspeed = map(massiv[1],110,0,0,255);
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
} analogWrite(enA, fspeed);

if (massiv[1]>145&&massiv[1]<255){
bspeed = map(massiv[1],144,255,0,255);
analogWrite (enA, bspeed);
digitalWrite(in1,HIGH);
digitalWrite(in2,LOW);
}

if (massiv[1]>110&&massiv[1]<145){
digitalWrite(in1,LOW);
digitalWrite(in2,LOW);}

}

//ПЕРЕДАТЧИК
#include
#include "RF24.h"
RF24 radio(9,10);
const uint64_t pipe = 0xE8E8F0F0E1LL;
int massiv[2];
void setup(void){
radio.begin();
radio.openWritingPipe(pipe);
}
void loop() {

massiv[0] = map (analogRead(A0),0,1023,0,127);
massiv[1] = map (analogRead(A2),0,1023,128,255);
radio.write(&massiv, sizeof(massiv));

}

sadman41
Offline
Зарегистрирован: 19.10.2016

Вы просите о помощи, но делаете это без уважения...

http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukomment...

JesterKING
Offline
Зарегистрирован: 09.03.2021

ИЗВИНЯЮСЬ

#include 
#include
#include "RF24.h"
Servo servo1;

RF24 radio(9,10);
const uint64_t pipe = 0xE8E8F0F0E1LL;
int massiv[2];
int enA = 5;
int in1 = 2;
int in2 = 4;
int fspeed;
int bspeed;
void setup()
{
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(enA, OUTPUT);
servo1.attach(3);
delay(50);
radio.begin();
radio.openReadingPipe(1,pipe);
radio.startListening();
}

void loop(){

if (radio.available()){
radio.read(&massiv,sizeof (massiv));}

servo1.write(map(massiv[0], 0, 126, 7,177 ));

if (massiv[1]>0 && massiv[1]<110){
fspeed = map(massiv[1],110,0,0,255);
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
} analogWrite(enA, fspeed);

if (massiv[1]>145&&massiv[1]<255){
bspeed = map(massiv[1],144,255,0,255);
analogWrite (enA, bspeed);
digitalWrite(in1,HIGH);
digitalWrite(in2,LOW);
}

if (massiv[1]>110&&massiv[1]<145){
digitalWrite(in1,LOW);
digitalWrite(in2,LOW);}

}

//ПЕРЕДАТЧИК
#include
#include "RF24.h"
RF24 radio(9,10);
const uint64_t pipe = 0xE8E8F0F0E1LL;
int massiv[2];
void setup(void){
radio.begin();
radio.openWritingPipe(pipe);
}
void loop() {

massiv[0] = map (analogRead(A0),0,1023,0,127);
massiv[1] = map (analogRead(A2),0,1023,128,255);
radio.write(&massiv, sizeof(massiv));

}

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Строка 37 соответствует задумке?

JesterKING
Offline
Зарегистрирован: 09.03.2021

Да-да, просто вовремя переноса кода, скобках сдвинулась

kalapanga
Offline
Зарегистрирован: 23.10.2016

Чего-то со значениями непонятное делаете. На передатчике - какой смысл функций map() в строках 64 и 65? И если massiv[1] приводится к диапазону от 128 до 255, то откуда на приёмнике возьмутся значения от 0 до 110 (первый if)?

Разберитесь с логикой, что Вы этим сделать хотели? После этого нужно выводом в монитор порта проконтролировать, что отправляется и что принимается. А то может ничего!

Скобочку в 37 строке поправьте (здесь только первое сообщение не редактируется и цитированные).

inspiritus
Offline
Зарегистрирован: 17.12.2012

Садман 

красавец !!! Сразу вспоминается Марлон Брандо.

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

kalapanga пишет:

Чего-то со значениями непонятное делаете. На передатчике - какой смысл функций map() в строках 64 и 65? И если massiv[1] приводится к диапазону от 128 до 255, то откуда на приёмнике возьмутся значения от 0 до 110 (первый if)?

Разберитесь с логикой, что Вы этим сделать хотели? После этого нужно выводом в монитор порта проконтролировать, что отправляется и что принимается. А то может ничего!

kalapanga, тут все понятно, этот код где-то списан , у автора исходного скетча два значения запихивались в один байт, первый потенциометр - в диапазон 0-127, второй - 128-255

Проблема в том, что наш ТС ничего не понимает в этом коде, это у него толи третий, толи четвертый заход на форумы с вопросами.  После каждого ответа он свои операторы тасует без малейшего понятия. Изначально у него был массив из одного байта, который он отправлял дважды, потом сделал массив из двух байт. но отправлял один, теперь и массив из двух байт и отправляет два - но данные-то рассчитаны на упаковку в один байт... опять ничего не работает...

JesterKING - пока вы не разберетесь, как работает этот код - у вас ничего не выйдет. А еще лучше не пытаться списать код, который слишком сложен для вас - лучше напишите что-то попроще сами, по примерам к библиотеке NRF24

 

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

А первые две строки про что? Вы можете нормально код вставить? Как его смотреть-то? Догадываться?

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

JesterKING пишет:

ИЗВИНЯЮСЬ

Да нет, братан, нормальный код. Х-вая программа. Сами писали? Похоже - нет. Этим заполнен весь интернет.