#1 2017-10-24 15:53:11

Edikxp
Участник
Зарегистрирован: 2017-10-24
Сообщений: 2

Помогите разобраться с кодом

Хочу переделать китайскую машинку на ардуино. Arduino micro pro + TB6612FNG + NRF24L01 с антенкой. Два моторчика соединены к драйверу TB6612FNG, один будет поворачивать колеса, а другой движение назад вперед. Тестировал беспроводную связь между двумя NRF24L01, все пакеты отсылаются и приходят нормально,так что с проводками я не напутал. Код взял с проекта на ютубе, но он меня не работает ) Пытался методом тыка менять значения всякие, но понял что я в этом не понимаю совсем, то моторчик крутиться сначала на высоких оборотах, то на маленьких, то реагирует на джойстик совcем не так.

Джойстики рабочие, центральное положение у меня такие значение x-543 (0-1023), y-590 (25-1023)

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

#include <SPI.h>
#include "RF24.h" 
RF24 radio(3,2);
const uint64_t pipe = 0xE8E8F0F0E1LL; 
int msg[1]; 
int potpin_1 = A9; 
int val_1; 
int potpin_2 = A8; 
int val_2; 

void setup(void){
radio.begin();
radio.openWritingPipe(pipe); 

}
void loop() {
val_1 = analogRead(potpin_1),val_1 = map(val_1, 0, 1023, 0, 127),msg[0] = val_1,radio.write(msg, 1);
val_2 = analogRead(potpin_2),val_2 = map(val_2, 0, 1023, 128, 255),msg[0] = val_2,radio.write(msg, 1);

  
}

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

// Необходимо установить библиотеку для радиомодуля nRF24
#include <SPI.h>
#include "RF24.h"


RF24 radio(3,2);
const uint64_t pipe = 0xE8E8F0F0E1LL; 
int msg[1]; 
int data; 
int fspeed;           // forward speed 
int bspeed;           // backward speed
int lspeed;           // left speed 
int rspeed;           // right speed
const int in1 = 4;    // direction pin 1
const int in2 = 5;    // direction pin 2
const int ena = 6;    // PWM pin to change speed
const int in3 = 7;    // direction pin 3
const int in4 = 8;    // direction pin 4
const int enb = 9;    // PWM pin to change speed
void setup()
{
  
  pinMode(in1, OUTPUT);      // connection to L298n
  pinMode(in2, OUTPUT);      // connection to L298n
  pinMode(ena, OUTPUT);      // connection to L298n
  pinMode(in3, OUTPUT);      // connection to L298n
  pinMode(in4, OUTPUT);      // connection to L298n
  pinMode(enb, OUTPUT);      // connection to L298n
delay(50);
radio.begin();
radio.openReadingPipe(1,pipe); 
radio.startListening();
}

void loop()
{
  if (radio.available())radio.read(msg, 1);  
  if (msg[0] >=1 && msg[0] <=63)data = msg[0], rspeed = map(data, 126, 64, 0, 255), right(rspeed);
  if (msg[0] >=64 && msg[0] <=127)data = msg[0], lspeed = map(data, 63, 1, 0, 255), left(lspeed);
  if (msg[0] >=128 && msg[0] <=189)data = msg[0], bspeed = map(data, 255, 201, 0, 255), backward(bspeed);
  if (msg[0] >=201 && msg[0] <=255)data = msg[0], fspeed = map(data, 189, 128, 0, 255), forward(fspeed);
  if (msg[0] >190 && msg[0] <200)data = msg[0], stop();
}

void stop()
{
  
  analogWrite(ena, 0);
  digitalWrite(in1, LOW);
  digitalWrite(in2, LOW);
}

void forward(int fspeed)
{
  
  digitalWrite(in1, HIGH);
  digitalWrite(in2, LOW);
  analogWrite(ena, fspeed);
}

void backward(int bspeed)
{
  
  digitalWrite(in1, LOW);
  digitalWrite(in2, HIGH);
  analogWrite(ena, bspeed);
}
void right(int rspeed)
{
  
  digitalWrite(in3, HIGH);
  digitalWrite(in4, LOW);
  analogWrite(enb, rspeed);
}

void left(int lspeed)
{
  
  digitalWrite(in3, LOW);
  digitalWrite(in4, HIGH);
  analogWrite(enb, lspeed);
}

Быстрое сообщение

Введите сообщение и нажмите Отправить

Подвал раздела