Добрый день , помогите убрать непроизвольные повороты сервоприводов.
В проекте используется 4 сервопривода и коллекторный мотор.
Передатчик(пульт 2 джойстика + 3х позиционная кнопка"крайнее положение 0v- среднее 2.5в - крайнее 5в ) и потенциометр
Скетч
Данные передаются в формате 9246458977
В проекте используется 4 сервопривода и коллекторный мотор.
Передатчик(пульт 2 джойстика + 3х позиционная кнопка"крайнее положение 0v- среднее 2.5в - крайнее 5в ) и потенциометр
Скетч
//Скетч передатчика::
#include <SoftwareSerial.h>
SoftwareSerial HC12(11, 10); //выбор пинов для обмена данными (D11 - TX, D10 - RX)
int pin1 = A0; //пин для приема сигнала с первого стика газ вперед мотор
int pin2 = A1; //пин для приема сигнала со второго стика поворот лево-право
int pin3 = A2; //пин для приема сигнала с второго стика поворот вверх-вниз
int pin4 = A3; //пин для приема сигнала с 3х позиц.тумблер глубина
int pin5 = A4;//пин для приема сигнала с крутилки 2 крылья
byte arr[] = {0, 0, 0, 0, 0}; //массив, в котором будем отправлять данные
void setup() {
//Serial.begin(9600); //инициализация работы порта на скорости 9600 бод
HC12.begin(57600); //инициализация работы порта на скорости 57600 бод
pinMode(pin1, INPUT); //настройка пина A0 на прием данных
pinMode(pin2, INPUT); //настройка пина A1 на прием данных
pinMode(pin3, INPUT); //настройка пина A2 на прием данных
pinMode(pin4, INPUT); //настройка пина A3 на прием данных
pinMode(pin5, INPUT); //настройка пина A4 на прием данных
}
void loop() {
//чтение, масштабирование и запись в массив данных с пинов А0 - А7
arr[0] = map(analogRead(pin1), 0, 1023, 0, 180); //пин для приема сигнала с первого стика газ вперед мотор 180
arr[1] = map(analogRead(pin2), 0, 1023, 0, 90); //пин для приема сигнала со второго стика поворот лево-право 90
arr[2] = map(analogRead(pin3), 0, 1023, 0, 90); //пин для приема сигнала с второго стика поворот вверх-вниз 90
arr[3] = map(analogRead(pin4), 0, 1023, 30, 140); //пин для приема сигнала с 3х позиц.тумблер глубина 179
arr[4] = map(analogRead(pin5), 0, 1023, 20, 160); //пин для приема сигнала с с крутилки 2 крылья 160
//Вывод в монитор портов что передаем ВКЛЮЧИ ВЫШЕ Serial.begin(9600);
//Serial.print(arr[0]);
//Serial.print(arr[1]);
//Serial.print(arr[2]);
//Serial.print(arr[3]);
//Serial.print(arr[4]);
//Serial.println( " " );
HC12.write(arr, 5); //передача сигнала другому модулю
delay(200); //пауза на 0.2 секунды для стабилизации
}
Данные передаются в формате 9246458977
//Скетч приемника::
#include <SoftwareSerial.h>
#include <Servo.h>
SoftwareSerial HC12(11, 10); //выбор пинов для обмена данными (D11 - TX, D10 - RX)
Servo motor, servo2, servo3, servo4, servo5; // задаем переменные типа Servo
byte arr[] = {0, 0, 0, 0, 0}; //массив для записи входящего сигнала
void setup() {
HC12.begin(57600); //инициализируем работу порта на скорости 57600 бод
motor.attach(3); //привязка мотор к пину 3 мотор газ
servo2.attach(4); //привязка серводвигателя к пину 4 лево-право
servo3.attach(5); //привязка серводвигателя к пину 5 вверх-вниз
servo4.attach(6); //привязка серводвигателя к пину 6 сервопривод глубины
servo5.attach(7); //привязка серводвигателя к пину 7 сервопривод выход передних рулей
}
void loop() {
HC12.readBytes(arr, 5); //принимаем сигнал и заполняем ячейки массива
motor.write(arr[0]); //фиксируем вал первого серводвигателя под заданным углом
delay(10); //пауза на 0.01 секунды для стабилизации
servo2.write(arr[1]); //фиксируем вал второго серводвигателя под заданным углом
delay(10); //пауза на 0.01 секунды для стабилизации
servo3.write(arr[2]); //фиксируем вал первого серводвигателя под заданным углом
delay(10); //пауза на 0.01 секунды для стабилизации
servo4.write(arr[3]); //фиксируем вал второго серводвигателя под заданным углом
delay(10); //пауза на 0.01 секунды для стабилизации
servo5.write(arr[4]); //фиксируем вал первого серводвигателя под заданным углом
delay(10); //пауза на 0.01 секунды для стабилизации
}