Тест-код для моделей с мостом L298N
#define PIN_ENA 9 // //Вывод управления скоростью вращения мотора №1
#define PIN_ENB 10 // //Вывод управления скоростью вращения мотора №2
#define PIN_ENC 11 // //Вывод управления скоростью вращения мотора №1
#define PIN_END 12 // //Вывод управления скоростью вращения мотора №2
#define PIN_IN1 51// 51//Вывод управления направлением вращения мотора №1
#define PIN_IN2 53// 53//Вывод управления направлением вращения мотора №1
#define PIN_IN3 47// 49//Вывод управления направлением вращения мотора №2
#define PIN_IN4 49// 47//Вывод управления направлением вращения мотора №2
#define PIN_IN5 27// 29//Вывод управления направлением вращения мотора №1
#define PIN_IN6 29// 27//Вывод управления направлением вращения мотора №1
#define PIN_IN7 25// 25//Вывод управления направлением вращения мотора №2
#define PIN_IN8 23// 23//Вывод управления направлением вращения мотора №2
uint8_t power = 10; // Значение ШИМ (или скорости вращения)
void setup() {
// Установка всех управляющих пинов в режим выхода
pinMode(PIN_ENA, OUTPUT);
pinMode(PIN_ENB, OUTPUT);
pinMode(PIN_ENC, OUTPUT);
pinMode(PIN_END, OUTPUT);
pinMode(PIN_IN1, OUTPUT);
pinMode(PIN_IN2, OUTPUT);
pinMode(PIN_IN3, OUTPUT);
pinMode(PIN_IN4, OUTPUT);
pinMode(PIN_IN5, OUTPUT);
pinMode(PIN_IN6, OUTPUT);
pinMode(PIN_IN7, OUTPUT);
pinMode(PIN_IN8, OUTPUT);
// Команда остановки двум моторам
digitalWrite(PIN_IN1, LOW);
digitalWrite(PIN_IN2, LOW);
digitalWrite(PIN_IN3, LOW);
digitalWrite(PIN_IN4, LOW);
digitalWrite(PIN_IN5, LOW);
digitalWrite(PIN_IN6, LOW);
digitalWrite(PIN_IN7, LOW);
digitalWrite(PIN_IN8, LOW);
}
void loop() {
// Вращаем моторы в одну сторону с разной скоростью
analogWrite(PIN_ENA, power); // Устанавливаем скорость 1-го мотора
analogWrite(PIN_ENB, power); // Устанавливаем скорость 2-го мотора
analogWrite(PIN_ENC, power); // Устанавливаем скорость 1-го мотора
analogWrite(PIN_END, power); // Устанавливаем скорость 2-го мотора
// Задаём направление для 1-го мотора
digitalWrite(PIN_IN1, HIGH);
digitalWrite(PIN_IN2, LOW);
// Задаём направление для 2-го мотора
digitalWrite(PIN_IN3, HIGH);
digitalWrite(PIN_IN4, LOW);
// Задаём направление для 3-го мотора
digitalWrite(PIN_IN5, HIGH);
digitalWrite(PIN_IN6, LOW);
// Задаём направление для 4-го мотора
digitalWrite(PIN_IN7, HIGH);
digitalWrite(PIN_IN8, LOW);
delay(3000); // Пауза 3 секунды
// Увеличиваем скорость
// Команда остановки двум моторам
digitalWrite(PIN_IN1, LOW);
digitalWrite(PIN_IN2, LOW);
digitalWrite(PIN_IN3, LOW);
digitalWrite(PIN_IN4, LOW);
digitalWrite(PIN_IN5, LOW);
digitalWrite(PIN_IN6, LOW);
digitalWrite(PIN_IN7, LOW);
digitalWrite(PIN_IN8, LOW);
delay(3000); // Пауза 3 секунды
}
Тест-код для моделей с мостом L9110S
// определяем, какие порты будем использовать для управления мотором и светодиодами
#define FORWARDFR 23
#define BACKFR 25
#define FORWARDBR 27
#define BACKBR 29
#define FORWARDFL 35
#define BACKFL 37
#define FORWARDBL 31
#define BACKBL 33
#define TIME 1000
unsigned char Forward_Speed = 200;
unsigned char Back_Speed = 160;
unsigned char White_Light = 210;
unsigned char Red_Light = 220;
void setup() {
// объявляем пины управления мостом как выходы:
pinMode(FORWARDFR, OUTPUT);
pinMode(BACKFR, OUTPUT);
pinMode(FORWARDBR, OUTPUT);
pinMode(BACKBR, OUTPUT);
pinMode(FORWARDFL, OUTPUT);
pinMode(BACKFL, OUTPUT);
pinMode(FORWARDBL, OUTPUT);
pinMode(BACKBL, OUTPUT);
// Работа заднего левого мотора вперед
analogWrite(FORWARDFR, Forward_Speed);
analogWrite(BACKFR, 0);
analogWrite(FORWARDBR, 0);
analogWrite(BACKBR, 0);
analogWrite(FORWARDFL, 0);
analogWrite(BACKFL, 0);
analogWrite(FORWARDBL, 0);
analogWrite(BACKBL, 0);
delay( TIME); // и немного подождать
// Работа переднего левого мотора вперед
analogWrite(FORWARDFR, 0);
analogWrite(BACKFR, 0);
analogWrite(FORWARDBR, Forward_Speed);
analogWrite(BACKBR, 0);
analogWrite(FORWARDFL, 0);
analogWrite(BACKFL, 0);
analogWrite(FORWARDBL, 0);
analogWrite(BACKBL, 0);
delay( TIME); // и немного подождать
// Работа заднего правого мотора вперед
analogWrite(FORWARDFR, 0);
analogWrite(BACKFR, 0);
analogWrite(FORWARDBR, 0);
analogWrite(BACKBR, 0);
analogWrite(FORWARDFL, Forward_Speed);
analogWrite(BACKFL, 0);
analogWrite(FORWARDBL, 0);
analogWrite(BACKBL, 0);
delay( TIME); // и немного подождать
// Работа переднего правого мотора вперед
analogWrite(FORWARDFR, 0);
analogWrite(BACKFR, 0);
analogWrite(FORWARDBR, 0);
analogWrite(BACKBR, 0);
analogWrite(FORWARDFL, 0);
analogWrite(BACKFL, 0);
analogWrite(FORWARDBL, Forward_Speed);
analogWrite(BACKBL, 0);
delay( TIME); // и немного подождать
// Работа задних моторов вперед
analogWrite(FORWARDFR, Forward_Speed);
analogWrite(BACKFR, 0);
analogWrite(FORWARDBR, 0);
analogWrite(BACKBR, 0);
analogWrite(FORWARDFL, Forward_Speed);
analogWrite(BACKFL, 0);
analogWrite(FORWARDBL, 0);
analogWrite(BACKBL, 0);
delay( TIME); // и немного подождать
// Работа передних моторов вперед
analogWrite(FORWARDFR, 0);
analogWrite(BACKFR, 0);
analogWrite(FORWARDBR, Forward_Speed);
analogWrite(BACKBR, 0);
analogWrite(FORWARDFL, 0);
analogWrite(BACKFL, 0);
analogWrite(FORWARDBL, Forward_Speed);
analogWrite(BACKBL, 0);
delay( TIME); // и немного подождать
// Работа всех моторов вперед
analogWrite(FORWARDFR, Forward_Speed);
analogWrite(BACKFR, 0);
analogWrite(FORWARDBR, Forward_Speed);
analogWrite(BACKBR, 0);
analogWrite(FORWARDFL, Forward_Speed);
analogWrite(BACKFL, 0);
analogWrite(FORWARDBL, Forward_Speed);
analogWrite(BACKBL, 0);
delay( TIME); // и немного подождать
// All STOP
analogWrite(FORWARDFR, 0);
analogWrite(BACKFR, 0);
analogWrite(FORWARDBR, 0);
analogWrite(BACKBR, 0);
analogWrite(FORWARDFL, 0);
analogWrite(BACKFL, 0);
analogWrite(FORWARDBL, 0);
analogWrite(BACKBL, 0);
}
// the loop routine runs over and over again forever:
void loop() {
}