@Артёмwundervafla, например так:
/*
Управление двумя коллекторными двигателями постоянного тока через драйвер L298N, Arduino Nano, FLYSKY пульт и приемник.
использую левый стик -это каналы 3 и 4 приемника.
*/
byte in1 = 7; //Пины 7,8,12,13 ардуино соответственно с 1,2,3,4 пинами драйвера управляющего направлением моторов.
byte in2 = 8;
byte in3 = 12;
byte in4 = 13;
byte enA = 5;
byte enB = 6;
byte channelFS_3 = A1; //третий канал приемника FS и пин A1(15) ардуино.
byte channelFS_4 = A2;
void setup() {
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
pinMode(enA, OUTPUT);
pinMode(enB, OUTPUT);
pinMode(channelFS_3, INPUT);
pinMode(channelFS_4, INPUT);
Serial.begin(9600);//последовательный порт
}
void loop() {
int pwmA = 0;
int pwmB = 0;
int FS_3 = pulseIn(channelFS_3, HIGH);
int FS_4 = pulseIn(channelFS_4, HIGH);
if (FS_3 != 0 || FS_4 != 0){
FS_3 = FS_3 - 1480;//диапазон приемника примерно 900-1970(микросекунды).
FS_4 = FS_4 - 1480;//приводим значение среднего положениея стиков к нолю.
}
int v3A = FS_3 + FS_4;//преобразуем данные с двух стиков(3,4) пульта в данные для одного двигателя(A).
int v4B = FS_3 - FS_4;
Serial.print("FS_3 ");
Serial.print(FS_3);
Serial.print(" FS_4 ");
Serial.print(FS_4);
Serial.print(" v3A ");
Serial.print(v3A);
Serial.print(" v4B ");
Serial.print(v4B);
if(v3A >= 20){ //левый(A) дигатель вперед
pwmA = map(v3A, 20, 500, 0, 255);//маштабируем диапазон датчиков в диапазон шим.
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
analogWrite(enA, pwmA);
}
if(v3A <= -20){ //левый(A)двигатель назад
pwmA = map(v3A, -20, -500, 0, 255);
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
analogWrite(enA, pwmA);
}
if(v3A > -20 && v3A < 20){ //левый(A)двигатель на месте
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
analogWrite(enA, 0);
}
if(v4B >= 20){ //правый(B) дигатель вперед
pwmB = map(v4B, 20, 500, 0, 255);//маштабируем диапазон датчиков в диапазон шим.
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
analogWrite(enB, pwmB);
}
if(v4B <= -20){ //правый(B)двигатель назад
pwmB = map(v4B, -20, -500, 0, 255);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
analogWrite(enB, pwmB);
}
if(v4B > -20 && v4B < 20){ //правый(B)двигатель на месте
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
analogWrite(enB, 0);
}
Serial.print(" pwmA ");
Serial.print(pwmA);
Serial.print(" pwmB ");
Serial.println(pwmB);
}