Скетч для драйвера моторов на радиоуправлении
Добавлено: Пт июл 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);
}
Решили собрать корабль на радиоуправлении (первый раз,никогда не работали с ардуино),удалось собрать пульт который управляет четырьмя серво,но моторчики не работают через драйвер мотора. Моторы хотим сделать чтобы регулировать скорость вращения.
Помогите написать скетч для приёмника.
Может где ошибка? Скетч ниже.
Материалы которые используем.
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);
}