машинка на arduino L298n+nrf24l01

bulin
Offline
Зарегистрирован: 27.05.2018

Помогите дописать код для машинки 4wd на l298n и одном джойстике. Я не мону сделать ту часть, когда машинка должна поворачивать направо или налево

Код передатчика:

#include <SPI.h>
#include "RF24.h" 
RF24 radio(9,10);
int mas[2]; 
int pin_1 = A0; 
int val_1; 
int pin_2 = A1; 
int val_2; 
byte address[][6] = {"1Node", "2Node", "3Node", "4Node", "5Node", "6Node"};

void setup(void){
  radio.begin(); //активировать модуль
  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(pin_1);
val_2 = analogRead(pin_2);
mas[0] = val_1;
mas[1] = val_2;
radio.write(&mas, sizeof(mas));
}

Код приемника:

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

RF24 radio(9,10);
int mas[2]; 
int data; 
int fspeed;           // forward speed 
int bspeed;           // backward speed
const int in1 = 2;    // direction pin 1
const int in2 = 4;    // direction pin 2
const int ena = 5;    // PWM pin to change speed
const int in3 = 8;    // direction pin 1
const int in4 = 7;    // direction pin 2
const int enb = 3;    // PWM pin to change speed
byte address[][6] = {"1Node","2Node","3Node","4Node","5Node","6Node"};

void setup(){
  pinMode(in1, OUTPUT);    
  pinMode(in2, OUTPUT);     
  pinMode(ena, OUTPUT);      
delay(50);
  radio.begin(); //активировать модуль
  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(){
   byte pipeNo;
  while ( radio.available(&pipeNo)) {  // слушаем эфир со всех труб
    radio.read( &mas, sizeof(mas) );  // чиатем входящий сигнал
  if (mas[1] >=0 && mas[1] <=498)data = mas[1], bspeed = map(data, 498 ,0, 0, 255), backward(bspeed);
  if (mas[1] >=501 && mas[1] <=1023)data = mas[1], fspeed = map(data, 501, 1023, 0, 255), forward(fspeed);
  if (mas[1] >498 && mas[1] <501)data = mas[1], stop();
  }
}

void stop()
{
  
  analogWrite(ena, 0);
  digitalWrite(in1, 0);
  digitalWrite(in2, 0);
  analogWrite(enb, 0);
  digitalWrite(in3, 0);
  digitalWrite(in4, 0);
}

void forward(int fspeed)
{
  
  digitalWrite(in1, 1);
  digitalWrite(in2, 0);
  analogWrite(ena, fspeed);
  analogWrite(enb, fspeed);
  digitalWrite(in3, 1);
  digitalWrite(in4, 0);
}

void backward(int bspeed)
{
  
  digitalWrite(in1, 0);
  digitalWrite(in2, 1);
  analogWrite(ena, bspeed);
  analogWrite(enb, bspeed);
  digitalWrite(in3, 0);
  digitalWrite(in4, 1);
}

машинка ездит вперед и назад, только не поворачивает заранее спасибо

bulin
Offline
Зарегистрирован: 27.05.2018

И приемник и передатчик сделаны на arduino nano

svm
Offline
Зарегистрирован: 06.11.2016

А что ее заставит поворачивать? Сила внушения или как?

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

svm пишет:

А что ее заставит поворачивать? Сила внушения или как?

Добрым словом можно много добиться. А если не выходит, то к доброму слову добавить пистолет.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Иногда маленкий шажок человека это результат громадного пинка под зад. Скачиваем и на странице 359 читаем.

https://vk.com/doc190970339_454528382?hash=719036a2e93e4c67b2&dl=0b5cb86...

bulin
Offline
Зарегистрирован: 27.05.2018

svm пишет:

А что ее заставит поворачивать? Сила внушения или как?

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

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

bulin пишет:

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

Так проблема то (здесь на форуме) как раз в том, никто не видел как Вы это подаёте. Вам на это намекнули, но вы не поняли.

Покажете код, Вам, возможно, укажут на ошибку и тогда допишете.

А если Вы хотите, чтобы кто-то за Вас дописал, то Вы ошиблись разделом. Здесь коды не пишут. Их пишут в другом разделе на коммерческой основе.

bulin
Offline
Зарегистрирован: 27.05.2018

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

bulin пишет:

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

Так проблема то (здесь на форуме) как раз в том, никто не видел как Вы это подаёте. Вам на это намекнули, но вы не поняли.

Покажете код, Вам, возможно, укажут на ошибку и тогда допишете.

А если Вы хотите, чтобы кто-то за Вас дописал, то Вы ошиблись разделом. Здесь коды не пишут. Их пишут в другом разделе на коммерческой основе.

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

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

bulin пишет:

ну можете хоть намекнуть что сделать. 

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