L298N, HC-05 Простой автомобиль с дистанционным управлением через Bluetooth, не работающий в Arduino

Тип платы Arduino, используемый в этом сеансе: Arduino Uno R3 DIP/SMD CH340

Ниже приведено описание проводки и кода в Arduino для сборки радиоуправляемой машины с Bluetooth с помощью смартфона Android:

  1. Проверено, что двигатель постоянного тока работает как колесо (может вращаться вперед и назад). питание напрямую от аккумулятора.
  2. Протестировано Bluetooth-модуль HC-05. Телефон может подключить модуль Bluetooth.
  3. Проверено out1 out2 out3 и out4 на L298N с использованием прямого питания от аккумулятора, когда колесо вращается (вперед и/или назад).
  4. Код для простого автомобиля Bluetooth rc, используемый ниже, как описано.

Автомобиль не смог двигаться (вперед, назад, повернуть налево/направо). как заставить двигатель постоянного тока или шаговый двигатель работать удаленно. спасибо

Таблица соединений

Шаговой двигатель L298N/приводной двигатель

Модуль Bluetooth HC-05

Прикрепить к Arduino

Fritzing Skematic #включать SoftwareSerial mySerial(12, 13); // прием, передача #определить m1 3 #define м2 5 #определить м3 9 #define m4 10

int data=0,kec=0;
boolean forward=true;


int fast[11]={0,80,100,120,140,160,180,200,220,240,255};

void setup()
{
  pinMode(m1,OUTPUT);
  pinMode(m2,OUTPUT);
  pinMode(m3,OUTPUT);
  pinMode(m4,OUTPUT);

  mySerial.begin(9600);
 }

void motorOut(unsigned char lpwm, unsigned char rpwm, boolean arrow){
   if(arrow==false){
      digitalWrite(m3,HIGH);
      digitalWrite(m1,LOW);
      analogWrite(m4,255-lpwm);
      analogWrite(m2,rpwm);
   }
   else{
     digitalWrite(m3,LOW);
     digitalWrite(m1,HIGH);
     analogWrite(m4,lpwm);
     analogWrite(m2,255-rpwm);
  }
}

void loop(){
  if(mySerial.available()>0){
    data=mySerial.read();
    if (data =='0') { kec=0;}
      else if (data =='1') { kec=1;}
        else if (data =='2') { kec=2;}
          else if (data =='3') { kec=3;}
            else if (data =='4') { kec=4;}
             else if (data =='5') { kec=5;}
              else if (data =='6') { kec=6;}
                else if (data =='7') { kec=7;}
                  else if (data =='8') { kec=8;}
                    else if (data =='9') { kec=9;}
                      else if (data =='q') {kec=10;}

  //S= Стоп
 if (data == 'S')
 { motorOut(0,0,false); }

//F=Вперед
if (data=='F')
{ motorOut(fast[kec],fast[kec],true); }

//I=повернуть направо вперед
if (data=='I')
{ motorOut(fast[kec],((fast[kec])/2),true);}

//G=поворот налево вперед
if (data=='G')
{ motorOut(((fast[kec])/2),fast[kec],true); }

//R=повернуть направо
if(data=='R')
{ motorOut(fast[kec],0,true); }

//L=повернуть налево
if(data=='L')
{ motorOut(0,fast[kec],true); }

//Б=назад
if(data=='B')
{ motorOut(fast[kec],fast[kec],false); }

//H=повернуть налево назад
 if (data=='H')
   { motorOut(((fast[kec])/2),fast[kec],false); }

//повернуть направо назад
   if (data=='J')
    { motorOut(fast[kec],((fast[kec])/2),false); }
  }
}

, 👍0

Обсуждение

ты забыл задать вопрос, @jsotola

какие тесты ты сдавал?, @jsotola

Вместо того, чтобы писать множество операторов if-else if, используйте простой switch(data){case '0':, @chrisl

Какие данные отправляются в mySerial? Можете ли вы подтвердить, что действительно получены правильные данные? Возможно, повторим это обратно к источнику. Если это не работает, значит, ваше последовательное соединение не работает (возможно, потому, что HC-05 на самом деле не подключен). Если работает, попробуйте завести двигатель через драйвер, подключив соответствующие контакты к 5В. Если это не помогло, значит подключение драйвера неправильное. Вместо фотографий желательно предоставить схему., @chrisl

ничего не отображало данные с последовательного монитора. HC-05, зеленый значок индикатора на телефоне Android (успешное подключение к автомобилю). L298N, двигатель заработает после того, как я подаю питание на контакт 5 и массу. батарейка 4 х 1,2 щелочная или 9В, @user47938


1 ответ


Лучший ответ:

-1

извините за мою невнимательность. наконец-то все работает.... основная проблема связана с неправильным назначением контакта.... должны быть IN1, IN2, IN4 и IN3, а не IN1, IN2, IN3 и IN4. спасибо всем за помощь раньше

,