ARDUINO Машинка на nrf24l01

Артёмwundervafla

✩✩✩✩✩✩✩
8 Мар 2020
2
0
Здравствуйте не могли бы вы подсказать как в скетче сделать так чтобы двигателями управлял драйвер L298n
 

РыкаВладимир

✩✩✩✩✩✩✩
20 Мар 2020
25
3
Оформи код соответствующим тэгом
@Артём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);

}
 

Ros

✩✩✩✩✩✩✩
27 Дек 2020
1
0
Если хотите подключить ещё один похожий мотор, то нужен ещё один драйвер. Данный драйвер рассчитан на два мотора, с характеристиками: рекомендуемое напряжение двигателя (VMOT) от 4.5 V до 13.5 V, непрерывной выходной ток 1 A на канал.
А если я хочу добавить пару двигателей с шим сигналом? Я продублировал строки кода в машинке но не понимаю что добавить в скетч пульта для их управления .(схема пульта та же что и в начале проекта только управление перенесено на один джойстик. Драйвера- L298N и TB6612FNG )
 

Вложения

rockstar203

✩✩✩✩✩✩✩
4 Авг 2020
1
0
Добрый день. Собрал по Вашему проекту схемму. Но работает немного не корректно. Сложно объяснить, снял видео ссылка. Все проверил 10 раз, собрано по схемме. Буду благодарен за помощь.