Скетч для драйвера моторов на радиоуправлении

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Ответить
юрец
Сообщения: 1
Зарегистрирован: Пт июл 14, 2017 10:13 pm
Благодарил (а): 0
Поблагодарили: 0

Скетч для драйвера моторов на радиоуправлении

Сообщение юрец » Пт июл 14, 2017 10:18 pm

Добрый день!
Решили собрать корабль на радиоуправлении (первый раз,никогда не работали с ардуино),удалось собрать пульт который управляет четырьмя серво,но моторчики не работают через драйвер мотора. Моторы хотим сделать чтобы регулировать скорость вращения.
Помогите написать скетч для приёмника.
Может где ошибка? Скетч ниже.


Материалы которые используем.
DCcduino UNO R3 на CH340G 2 шт
Драйвер моторов на L298N
Trema Shield для Arduino 2 шт
Радио модуль 1100м. 2.4G NRF24L01+PA+LNA 2 шт
Микросервопривод SG90 6 шт
Потенциометр (Trema-модуль) 8 шт


Скетч пульта:
#include <nRF24L01.h>
#include <RF24.h>
#include <RF24_config.h>
#include <SPI.h>
RF24 radio(9,10);
int data[6];
void setup(){
radio.begin();
radio.setChannel(5);
radio.setDataRate (RF24_1MBPS);
radio.setPALevel (RF24_PA_HIGH);
radio.openWritingPipe (0x1234567890LL);
}
void loop(){
data[0] = analogRead(A0);
data[1] = analogRead(A1);
data[2] = analogRead(A2);
data[3] = analogRead(A3);
data[4] = analogRead(A4);
data[5] = analogRead(A5);
radio.write(&data, sizeof(data));
}




Скетч платы корабля:(приёмник)
#include <nRF24L01.h>
#include <SPI.h>
#include <Servo.h>
#include <RF24.h>
#include <RF24_config.h>
RF24 radio (9,10);
int data[6];
Servo ser11;
Servo ser12;
Servo ser21;
Servo ser22;
#define EN 4
#define EN2 6
#define MC1 5
#define MC2 7
int val = 0;
int velocity = 0;



void setup() {
pinMode (EN, OUTPUT);
pinMode (EN2, OUTPUT);
pinMode (MC1, OUTPUT);
pinMode (MC2, OUTPUT);
delay(1000);
ser11.attach(0);
ser12.attach(1);
ser21.attach(2);
ser22.attach(3);
val.attach (4);
radio.begin();
radio.setChannel(5);
radio.setDataRate (RF24_1MBPS);
radio.setPALevel (RF24_PA_HIGH);
radio.openReadingPipe (1, 0x1234567890LL);
radio.startListening ();
}
void loop(){
if(radio.available()){
radio.read(&data, sizeof(data));
ser11.write(map(data[2],0,1023,0,180));
ser12.write(map(data[3],0,1023,0,180));
ser21.write(map(data[4],0,1023,0,180));
ser22.write(map(data[5],0,1023,0,180));
}
}
ВАРИАНТ 2:
#include <nRF24L01.h>
#include <SPI.h>
#include <Servo.h>
#include <RF24.h>
#include <RF24_config.h>
RF24 radio (9,10);
int data[4];
Servo ser11;
Servo ser12;
Servo ser21;
Servo ser22;
int msg[1];
int data1;
int pos;
int fspeed;
int bspeed;
const int in1 = 5; // direction pin 1
const int in2 = 7; // direction pin 2
const int ena = 4; // PWM pin to change speed

void setup() {
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(ena, OUTPUT);
delay(1000);
ser11.attach(0);
ser12.attach(1);
ser21.attach(2);
ser22.attach(3);
radio.begin();
radio.setChannel(5);
radio.setDataRate (RF24_1MBPS);
radio.setPALevel (RF24_PA_HIGH);
radio.openReadingPipe (1, 0x1234567890LL);
radio.startListening ();
}
void loop(){
if(radio.available()){
radio.read(&data, sizeof(data));
ser11.write(map(data[0],0,1023,0,180));
ser12.write(map(data[1],0,1023,0,180));
ser21.write(map(data[2],0,1023,0,180));
ser22.write(map(data[3],0,1023,0,180));
}
if (msg[0] >=128 && msg[0] <=189)data1 = msg[0], bspeed = map(data1, 255, 201, 0, 255), backward(bspeed);
if (msg[0] >=201 && msg[0] <=255)data1 = msg[0], fspeed = map(data1, 189, 128, 0, 255),
forward(fspeed);
if (msg[0] >190 && msg[0] <200)data1 = 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);
}
gnom537
Сообщения: 111
Зарегистрирован: Вт июн 17, 2014 1:06 pm
Откуда: нижний новгород
Благодарил (а): 5 раз
Поблагодарили: 12 раз

Re: Скетч для драйвера моторов на радиоуправлении

Сообщение gnom537 » Сб июл 15, 2017 7:19 am

SG90 это серво привод, управляется ШИМом и порачивается на заданный угол. Ему не нужен драйвер! Драйвер применяется для обычного коллекторного моторчика и для регулирования скорости тоже нужно использовать ШИМ. Что у вас делает серва?

А что за модель ? Можно фото? И набросайте схему подключения как вы её видите

https://m.youtube.com/watch?v=AcV9mvHtgNI
Ответить