Помогите новичку
- Войдите на сайт для отправки комментариев
Чт, 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 ?
Может и так, "но Черноморск всё равно должен быть вольным городом"!
а где эта перемычка?
На модуле, она одна там такая отдельностоящая. Да перемычка скорее всего правильно стоит. Она помоему когда установлена, как раз свой стабилизатор и используется. Диоды-то на модуле светятся? Проверяйте, всё ли так собрали.
С этим конструктором надо всё по частям пробовать. Отдельно добейтесь моторов работающих. Отдельно сервой покрутите. Отдельно с дальномером поиграйтесь. А уж потом только всё в один скетч собирайте.
ну буду пробовать тогда. Не знаете сайта, где можно простейшим коммандам научиться?)
Тут
спасибо