roboforum.ru

Технический форум по робототехнике.
Текущее время: 18 фев 2025, 18:16

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: Машинка не едет по черной линии
СообщениеДобавлено: 31 мар 2018, 08:10 
Не в сети

Зарегистрирован: 07 сен 2016, 21:48
Сообщения: 23
Доброе время суток! Не откажите советом или помощью!
Изображение
Собрали машинку на deek-robot motor shield Изображение

залили скетч
Код:
#define ENA_PIN   3 // ENA attach to pin5 
#define ENB_PIN   11// ENB attach to pin6

#define MOTOR_L_1 12 // MOTOR_L_1 attach to pin8
#define MOTOR_L_2 9 // MOTOR_L_1 attach to pin9

#define MOTOR_R_1 13 // MOTOR_R_1 attach to pin10
#define MOTOR_R_2 8 // MOTOR_R_1 attach to pin11

#define FORWARD 0  //define forward=0,car move forward
#define BACK    1 //define back=1,car move back

#define LIGHT_LEFT_1_PIN  A0 //attach the left first Tracking module pinA0 to A0
#define LIGHT_LEFT_2_PIN  A1 //attach the left second Tracking module pinA0 to A1
#define LIGHT_MIDDLE_PIN  A2 //attach the module Tracking module pinA0 to A2
#define LIGHT_RIGHT_1_PIN A3 //attach the right  second Tracking module pinA0 to A3
#define LIGHT_RIGHT_2_PIN A4 //attach the right first Tracking module pinA0 to A4

#define SPEED 180 //define SPEED=180,it is the rotate speed of motor

unsigned char flag = 3;
unsigned char angle = 90;

void setup()
{
  /* set below pins as OUTPUT */
 
  pinMode(ENA_PIN, OUTPUT);
  pinMode(ENB_PIN, OUTPUT);
 
  pinMode(MOTOR_L_1, OUTPUT);
  pinMode(MOTOR_L_2, OUTPUT);
  pinMode(MOTOR_R_1, OUTPUT);
  pinMode(MOTOR_R_2, OUTPUT);
}

void loop()
{
  if (analogRead(LIGHT_LEFT_1_PIN) > 758) //if read the value of the left first Tracking module pinA0 is more than 758
    flag = 1;//flag=1
 
  else if (analogRead(LIGHT_LEFT_2_PIN) > 758) //if read the value of the left second Tracking module pinA0 is more than 758
    flag = 2;
 
  else if (analogRead(LIGHT_MIDDLE_PIN) > 758) //if read the value of the module Tracking module pinA0 is more than 758
    flag = 3;
 
  else if (analogRead(LIGHT_RIGHT_2_PIN) > 758) //if read the value of the right  second Tracking module pinA0 is more than 758
    flag = 4;
 
  else if (analogRead(LIGHT_RIGHT_1_PIN) > 758) //if read the value of the right first Tracking module pinA0 is more than 758
    flag = 5;
  else
    flag = 6;
  CAR_move(FORWARD, SPEED, SPEED); //car move forward with speed 180
}

void CAR_move(unsigned char direction, unsigned char speed_left, unsigned char speed_right)
{
  switch (direction)
  {
    //car move forward with speed 180
    case 0:
      digitalWrite(MOTOR_L_1, HIGH); digitalWrite(MOTOR_L_2, LOW); //left motor clockwise rotation
      digitalWrite(MOTOR_R_1, HIGH); digitalWrite(MOTOR_R_2, LOW); break; //right motor clockwise rotation
    //car move back with speed 180
    case 1:
      digitalWrite(MOTOR_L_1, LOW); digitalWrite(MOTOR_L_2, HIGH);
      digitalWrite(MOTOR_R_1, LOW); digitalWrite(MOTOR_R_2, HIGH); break;
    default: break;
  }
  analogWrite(ENA_PIN, speed_left); //write speed_left to ENA_PIN,if speed_left is high,allow left motor rotate
  analogWrite(ENB_PIN, speed_right); //write speed_right to ENB_PIN,if speed_right is high,allow right motor rotate
}



датчики на линию срабатывают но колёса все время крутятся вперед
подскажите пожалуйста как поправить!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Машинка не едет по черной линии
СообщениеДобавлено: 31 мар 2018, 13:14 
Не в сети
скрытый хозяин вселенной :)
Аватара пользователя

Зарегистрирован: 18 сен 2006, 12:26
Сообщения: 18018
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич
так и должно быть, в программе происходит сканирование датчиков, но результат сканирования нигде потом не используется.
просто даётся команда ехать вперёд.
при этом есть ещё некая переменная отвечающая за угол, которая тоже не используется...
могу посоветовать лишь найти полную программу, а не этот огрызок.

_________________
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Машинка не едет по черной линии
СообщениеДобавлено: 08 апр 2018, 17:52 
Не в сети

Зарегистрирован: 07 сен 2016, 21:48
Сообщения: 23
Искал код полной программы так и не нашел. Может кому попадалась рабочая программка. Подскажите пожалуйста где искать?


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO