Помогите новичку

Andrushe4kanka
Offline
Зарегистрирован: 08.11.2017

Я новичек. Хочу запустить конструктор для обьезда препятствий. По обучающему видео собрал, код который был в дополнии, очевидно не правильный. Кто то говорит, что поменял название пинов и поехало. У меня не работает, только иногда серво чуть движется. Помогите пожалуйста, что у меня собрано, написано не так?  Почему на модуле двигателей на ENA и ENB  по два штырька, с заглушкой? Спасибо

#include <Servo.h>
Servo myservo;
int enableA = 1;
int pinA1 = 3;
int pinA2 = 2;

int servposnum = 0;
int servpos = 0;

int enableB = 6;
int pinB1 = 5;
int pinB2 = 4;
#define trigPin 7
#define echoPin 8


void setup() {
  // put your setup code here, to run once:
  //configure pin modes for the drive motors
   pinMode (enableA, OUTPUT);
   pinMode (pinA1, OUTPUT);
   pinMode (pinA2, OUTPUT);

   pinMode (enableB, OUTPUT);
   pinMode (pinB1, OUTPUT);
   pinMode (pinB2, OUTPUT); 

   //configure pin modes for the ultrasonci se3nsor
   pinMode(trigPin, OUTPUT);
   pinMode(echoPin, INPUT);

   //Servo pins
   myservo.attach(9);
}

void loop() {
  // put your main code here, to run repeatedly:

     car();
     avoid();
     
}

//Defining functions so it's more easy
//motor functions
void motorAforward() {
 digitalWrite (pinA1, HIGH);
 digitalWrite (pinA2, LOW);
}
void motorBforward() {
 digitalWrite (pinB1, LOW);
 digitalWrite (pinB2, HIGH);
}
void motorAbackward() {
 digitalWrite (pinA1, LOW);
 digitalWrite (pinA2, HIGH);
}
void motorBbackward() {
 digitalWrite (pinB1, HIGH);
 digitalWrite (pinB2, LOW);
}
void motorAstop() {
 digitalWrite (pinA1, HIGH);
 digitalWrite (pinA2, HIGH);
}
void motorBstop() {
 digitalWrite (pinB1, HIGH);
 digitalWrite (pinB2, HIGH);
}
void motorAcoast() {
 digitalWrite (pinA1, LOW);
 digitalWrite (pinA2, LOW);
}
void motorBcoast() {
 digitalWrite (pinB1, LOW);
 digitalWrite (pinB2, LOW);
}
void motorAon() {
 digitalWrite (enableA, HIGH);
}
void motorBon() {
 digitalWrite (enableB, HIGH);
}
void motorAoff() {
 digitalWrite (enableA, LOW);
}
void motorBoff() {
 digitalWrite (enableB, LOW);
}
// Movement functions
void forward (int duration) {
 motorAforward();
 motorBforward();
 delay (duration);
}
void backward (int duration) {
 motorAbackward();
 motorBbackward();
 delay (duration);
}
void right (int duration) {
 motorAbackward();
 motorBforward();
 delay (duration);
}
void left (int duration) {
 motorAforward();
 motorBbackward();
 delay (duration);
}
void coast (int duration) {
 motorAcoast();
 motorBcoast();
 delay (duration);
}
void breakRobot (int duration) {
 motorAstop();
 motorBstop();
 delay (duration);
}
void disableMotors() {
 motorAoff();
 motorBoff();
}
void enableMotors() {
 motorAon();
 motorBon();
}

int distance() {
  int duration, distance;
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(1000);
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  distance = (duration/2) / 29.1;
  return distance;
}


void car() {
int distance_0;
distance_0 = distance();
  while(distance_0 > 15)
  {
     
     if(servposnum == 0)
     {
      myservo.writeMicroseconds (1900);
      servposnum = 1;
      delay(100);     
     }
     else if(servposnum == 1)
     {
      myservo.writeMicroseconds (2200);
      servposnum = 2;
     delay(100);
     }
     else if(servposnum  == 2)
     {
      myservo.writeMicroseconds (1900);
      servposnum = 3;
      delay(100);
     }
     else if(servposnum == 3)
     {
      myservo.writeMicroseconds (1600);
      servposnum = 1;
      delay(100);
     }
     motorAon();
     motorBon();
     forward(1);    
     distance_0 = distance();
     

  }
  breakRobot(0);

}
void avoid()
{
    backward(500);
    right(360);
}

фото робота: http://s019.radikal.ru/i644/1711/70/3274b2cf244b.jpg

 
 
 
 
 
inspiritus
Offline
Зарегистрирован: 17.12.2012

Если есть сомнение по распиновке нарисуте и выложите схему, по фоткам Не разбрать.

имеется сомнение, что это все будет работать от двух элементов АА. Обычно питание 5в. 

И не старайтесь бездумно всю программу пытаться запустить. Покрутите отдельно сервой, повесив ее именно на 9 пин. 

Покрутите туда-сюда мотор. Убедитесь, что Ваши железки вообще работают.

Andrushe4kanka
Offline
Зарегистрирован: 08.11.2017

LFEngine (-), LREngine (-) = Out 1

LFEngine (+), LREngine (+) = Out 2

RFEngine (-), RREngine (-) = Out 3

RFEngine (+), RREngine (+) = Out 4

ENA, IN1, IN2, IN3, IN4, ENB = 1, 2, 3, 4, 5, 6.

UltraSonic Trig = 7, VCC = 7, GRD =7, Echo = 8. 

Servo = 9.

Питание на модуле двигателей есть +12 и +5. Подключаю к +5

 

kalapanga
Offline
Зарегистрирован: 23.10.2016

Andrushe4kanka пишет:

Питание на модуле двигателей есть +12 и +5. Подключаю к +5

Это что значит "подключаю к +5"? А на двигатели-то питание подали?

 

Andrushe4kanka
Offline
Зарегистрирован: 08.11.2017

ну вот так http://s019.radikal.ru/i633/1711/fb/d0e4b62c089b.jpg от батареек идет два провода. На модуле, есть вход для питания +5 и +12. Не могу нормально сказать.

inspiritus
Offline
Зарегистрирован: 17.12.2012

если 2 элемента АА, то откуда у Вас +5 берется?

Andrushe4kanka
Offline
Зарегистрирован: 08.11.2017

Ну, в интернете как то на двух 18650 работают такие конструкторы. Я не разбираюсь, но может две паралельные батарейки 3,7V дают в сумме 7,4V ?

kalapanga
Offline
Зарегистрирован: 23.10.2016

Andrushe4kanka пишет:

ну вот так http://s019.radikal.ru/i633/1711/fb/d0e4b62c089b.jpg от батареек идет два провода. На модуле, есть вход для питания +5 и +12. Не могу нормально сказать.

На этом модуле +12 - это то что будет подаваться на двигатели (там до +12). А ещё надо чем-то логику модуля питать. Определяется перемычкой. Либо из напряжения двигателей понижать собственным стабилизатором (если оно сильно больше 5 вольт, то так лучше не надо), либо снаружи +5 подавать. Судя по всему Вы вот эти +5 и подали, а на двигатели совсем ничего.

Andrushe4kanka пишет:

Ну, в интернете как то на двух 18650 работают такие конструкторы. Я не разбираюсь, но может две паралельные батарейки 3,7V дают в сумме 7,4V ?

Они там последовательно.

Соответственно, Вам на модуле плюсовой провод от батареек надо перекинуть - не в +5 а в +12 втыкать. Перемычка на модуле должна стоять на использование собственного стабилизатора.

andrikll
Offline
Зарегистрирован: 04.08.2013

inspiritus Это две литиевые батарейки 7,2-8,4 В

Andrushe4kanka Напряжение на моторы подайте с аккумуляторов сразу на вход драйвера 12 В (красная плата). На плате стоит свой преобразователь в 5 вольт (моторы к нему не подключаются).

inspiritus
Offline
Зарегистрирован: 17.12.2012

Там и не разглядишь, мне увиделись две АА. Да ладно, главное, чтобы он эти 7с хвостом не подал на +5 контроллера.

b707
Offline
Зарегистрирован: 26.05.2017

inspiritus пишет:

главное, чтобы он эти 7с хвостом не подал на +5 контроллера.

зато сразу станет опытнее

Andrushe4kanka
Offline
Зарегистрирован: 08.11.2017

может уже стал, поэтому и не работает.

Andrushe4kanka
Offline
Зарегистрирован: 08.11.2017

а нет, подключил батарейку через два провода к двигателям отдельно крутятся. Но вот почему не ездит. Может кто то напишет мне програмку, что бы он хотябы прямо поехал и все?(

Andrushe4kanka
Offline
Зарегистрирован: 08.11.2017

а где эта перемычка?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Andrushe4kanka пишет:

может две паралельные батарейки 3,7V дают в сумме 7,4V ?

Может и так, "но Черноморск всё равно должен быть вольным городом"!

kalapanga
Offline
Зарегистрирован: 23.10.2016

Andrushe4kanka пишет:

а где эта перемычка?

На модуле, она одна там такая отдельностоящая. Да перемычка скорее всего правильно стоит. Она помоему когда установлена, как раз свой стабилизатор и используется. Диоды-то на модуле светятся? Проверяйте, всё ли так собрали.

С этим конструктором надо всё по частям пробовать. Отдельно добейтесь моторов работающих. Отдельно сервой покрутите. Отдельно с дальномером поиграйтесь. А уж потом только всё в один скетч собирайте.

Andrushe4kanka
Offline
Зарегистрирован: 08.11.2017

ну буду пробовать тогда. Не знаете сайта, где можно простейшим коммандам научиться?)

inspiritus
Offline
Зарегистрирован: 17.12.2012
Andrushe4kanka
Offline
Зарегистрирован: 08.11.2017

спасибо