Помогите новичку
- Войдите на сайт для отправки комментариев
Чт, 09/11/2017 - 00:57
Я новичек. Хочу запустить конструктор для обьезда препятствий. По обучающему видео собрал, код который был в дополнии, очевидно не правильный. Кто то говорит, что поменял название пинов и поехало. У меня не работает, только иногда серво чуть движется. Помогите пожалуйста, что у меня собрано, написано не так? Почему на модуле двигателей на 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
Если есть сомнение по распиновке нарисуте и выложите схему, по фоткам Не разбрать.
имеется сомнение, что это все будет работать от двух элементов АА. Обычно питание 5в.
И не старайтесь бездумно всю программу пытаться запустить. Покрутите отдельно сервой, повесив ее именно на 9 пин.
Покрутите туда-сюда мотор. Убедитесь, что Ваши железки вообще работают.
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
Питание на модуле двигателей есть +12 и +5. Подключаю к +5
Это что значит "подключаю к +5"? А на двигатели-то питание подали?
ну вот так http://s019.radikal.ru/i633/1711/fb/d0e4b62c089b.jpg от батареек идет два провода. На модуле, есть вход для питания +5 и +12. Не могу нормально сказать.
если 2 элемента АА, то откуда у Вас +5 берется?
Ну, в интернете как то на двух 18650 работают такие конструкторы. Я не разбираюсь, но может две паралельные батарейки 3,7V дают в сумме 7,4V ?
ну вот так http://s019.radikal.ru/i633/1711/fb/d0e4b62c089b.jpg от батареек идет два провода. На модуле, есть вход для питания +5 и +12. Не могу нормально сказать.
На этом модуле +12 - это то что будет подаваться на двигатели (там до +12). А ещё надо чем-то логику модуля питать. Определяется перемычкой. Либо из напряжения двигателей понижать собственным стабилизатором (если оно сильно больше 5 вольт, то так лучше не надо), либо снаружи +5 подавать. Судя по всему Вы вот эти +5 и подали, а на двигатели совсем ничего.
Ну, в интернете как то на двух 18650 работают такие конструкторы. Я не разбираюсь, но может две паралельные батарейки 3,7V дают в сумме 7,4V ?
Они там последовательно.
Соответственно, Вам на модуле плюсовой провод от батареек надо перекинуть - не в +5 а в +12 втыкать. Перемычка на модуле должна стоять на использование собственного стабилизатора.
inspiritus Это две литиевые батарейки 7,2-8,4 В
Andrushe4kanka Напряжение на моторы подайте с аккумуляторов сразу на вход драйвера 12 В (красная плата). На плате стоит свой преобразователь в 5 вольт (моторы к нему не подключаются).
Там и не разглядишь, мне увиделись две АА. Да ладно, главное, чтобы он эти 7с хвостом не подал на +5 контроллера.
главное, чтобы он эти 7с хвостом не подал на +5 контроллера.
зато сразу станет опытнее
может уже стал, поэтому и не работает.
а нет, подключил батарейку через два провода к двигателям отдельно крутятся. Но вот почему не ездит. Может кто то напишет мне програмку, что бы он хотябы прямо поехал и все?(
а где эта перемычка?
может две паралельные батарейки 3,7V дают в сумме 7,4V ?
Может и так, "но Черноморск всё равно должен быть вольным городом"!
а где эта перемычка?
На модуле, она одна там такая отдельностоящая. Да перемычка скорее всего правильно стоит. Она помоему когда установлена, как раз свой стабилизатор и используется. Диоды-то на модуле светятся? Проверяйте, всё ли так собрали.
С этим конструктором надо всё по частям пробовать. Отдельно добейтесь моторов работающих. Отдельно сервой покрутите. Отдельно с дальномером поиграйтесь. А уж потом только всё в один скетч собирайте.
ну буду пробовать тогда. Не знаете сайта, где можно простейшим коммандам научиться?)
Тут
спасибо