Робот ездящий по линии

yanbaev72
Offline
Зарегистрирован: 08.11.2013

Есть датчики 

L293D Motor Drive Shield

UNO R3 ATmega328P

Шасси сдвумя мотор-редукторами

Собрал все примерно так.

На сколько я знаю моторы М1 и М2 работают через шилд по 4,5,6,7 пинам.

датчики я подключил к выходам под серво- левый на 9 пин, правый на 10.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

ну тогда поправлю код

//думаю здесь прерывания это лишнее
#define pwm_1 5                 //левый мотор
#define dir_1 4
#define pwm_2 6                 //правый мотор
#define dir_2 7

#define led_1 9                 //левый датчик
#define led_2 10                //правый датчик

#define sped 100                //зададим максимум скорости
#define turn 50                 //зададим скорость на повороте колеса тормозящего
#define pausa 200               //пауза между опросами датчиков
boolean sens_L = 0;             //переменные для хранения состояния датчиков
boolean sens_R = 0;

void setup(){
  pinMode(pwm_1, OUTPUT);       //настраиваем порты на выход
  pinMode(dir_1, OUTPUT);
  pinMode(pwm_2, OUTPUT);
  pinMode(dir_2, OUTPUT);
  pinMode(led_1, INPUT);
  pinMode(led_2, INPUT);
  
  digitalWrite(dir_1, HIGH);    //включаем езду вперед, назад врядли пока нужно
  digitalWrite(dir_1, HIGH);
}
void loop(){
  sens_L = digitalRead(led_1);
  sens_L = digitalRead(led_2);

  if(sens_L==1 & sens_R==1){    //если все норм едем вдоль линии
    go(sped, sped);
  }
   if(sens_L==1 & sens_R==0){   //справа наехали на линию
    go(sped, turn);
  }
  if(sens_L==0 & sens_R==1){    //слева наехали на линию
    go(turn, sped);
  }
  if(sens_L==0 & sens_R==0){    //мы на чем то но не на белой бумаге. встаем
    stop();
  }
  delay(pausa);
}


void go(int speed_L, int speed_R){  //подпрограмма езды
  analogWrite(pwm_1, speed_L);
  analogWrite(pwm_2, speed_R);
} 
void stop(){                        //подпрограмма остановки
  analogWrite(pwm_1, 0);           
  analogWrite(pwm_2, 0);
} 

насчет пинов не проверял. испльзовал те что написали вы

а где фото листа с линией?

yanbaev72
Offline
Зарегистрирован: 08.11.2013

jeka_tm пишет:

ну тогда поправлю код

//думаю здесь прерывания это лишнее
#define pwm_1 5                 //левый мотор
#define dir_1 4
#define pwm_2 6                 //правый мотор
#define dir_2 7

#define led_1 9                 //левый датчик
#define led_2 10                //правый датчик

#define sped 100                //зададим максимум скорости
#define turn 50                 //зададим скорость на повороте колеса тормозящего
#define pausa 200               //пауза между опросами датчиков
boolean sens_L = 0;             //переменные для хранения состояния датчиков
boolean sens_R = 0;

void setup(){
  pinMode(pwm_1, OUTPUT);       //настраиваем порты на выход
  pinMode(dir_1, OUTPUT);
  pinMode(pwm_2, OUTPUT);
  pinMode(dir_2, OUTPUT);
  pinMode(led_1, INPUT);
  pinMode(led_2, INPUT);
  
  digitalWrite(dir_1, HIGH);    //включаем езду вперед, назад врядли пока нужно
  digitalWrite(dir_1, HIGH);
}
void loop(){
  sens_L = digitalRead(led_1);
  sens_L = digitalRead(led_2);

  if(sens_L==1 & sens_R==1){    //если все норм едем вдоль линии
    go(sped, sped);
  }
   if(sens_L==1 & sens_R==0){   //справа наехали на линию
    go(sped, turn);
  }
  if(sens_L==0 & sens_R==1){    //слева наехали на линию
    go(turn, sped);
  }
  if(sens_L==0 & sens_R==0){    //мы на чем то но не на белой бумаге. встаем
    stop();
  }
  delay(pausa);
}


void go(int speed_L, int speed_R){  //подпрограмма езды
  analogWrite(pwm_1, speed_L);
  analogWrite(pwm_2, speed_R);
} 
void stop(){                        //подпрограмма остановки
  analogWrite(pwm_1, 0);           
  analogWrite(pwm_2, 0);
} 

насчет пинов не проверял. испльзовал те что написали вы

а где фото листа с линией?

Залил скетч, постоянно крутится правый мотор. на датчики не реагирует...

 

maksim
Offline
Зарегистрирован: 12.02.2012

yanbaev72 пишет:

На сколько я знаю моторы М1 и М2 работают через шилд по 4,5,6,7 пинам.

Неверно знаете.

Используйте библиотеку AFmotor и будет вам счастье.

только папку Adafruit-Motor-Shield-library-master переименуйте в AFMotor

yanbaev72
Offline
Зарегистрирован: 08.11.2013

maksim пишет:

yanbaev72 пишет:

На сколько я знаю моторы М1 и М2 работают через шилд по 4,5,6,7 пинам.

Неверно знаете.

Используйте библиотеку AFmotor и будет вам счастье.

только папку Adafruit-Motor-Shield-library-master переименуйте в AFMotor

Вот я кстати думал про эту библиотеку, так как без 64KHZ походу не обойтись?!

 

А как грамотно добавить библиотеку точнее как добавить я знаю, как адаптировать скетч под 

AF_DCMotor motor_a(1, MOTOR12_64KHZ);

AF_DCMotor motor_b(2, MOTOR12_64KHZ);
?
maksim
Offline
Зарегистрирован: 12.02.2012

Можно и обойтись просто будет слышен писк. И дело совсем не в этом, а том что - посмотрите что у вас за микросхема по середине шилда... и все поймете.

#include <AFMotor.h>

AF_DCMotor Left(1, MOTOR12_64KHZ);
AF_DCMotor Right(2, MOTOR12_64KHZ);

void setup() 
{
  // turn on motor
  Left.run(RELEASE);
  Right.run(RELEASE);
}

void loop() 
{
  Right.run(BACKWARD);
  Left.run(FORWARD);
  for(int i = 0; i < 255; i++) 
  {
    Right.setSpeed(i);  
    Left.setSpeed(i); 
    delay(10);
  }
  for(int i = 255; i != 0; i--) 
  {
    Right.setSpeed(i);  
    Left.setSpeed(i); 
    delay(10);
  }
 

  Left.run(BACKWARD);
  Right.run(FORWARD);
  for(int i = 0; i < 255; i++) 
  {
    Right.setSpeed(i);  
    Left.setSpeed(i);
    delay(10);
  }
  for(int i = 255; i != 0; i--) 
  {
    Right.setSpeed(i);  
    Left.setSpeed(i);
    delay(10);
  }
  
  Right.run(RELEASE);
  Left.run(RELEASE);
  delay(1000);
}

 

yanbaev72
Offline
Зарегистрирован: 08.11.2013

maksim пишет:

Можно и обойтись просто будет слышен писк. И дело совсем не в этом, а том что - посмотрите что у вас за микросхема по середине шилда... и все поймете.

#include <AFMotor.h>

AF_DCMotor Left(1, MOTOR12_64KHZ);
AF_DCMotor Right(2, MOTOR12_64KHZ);

void setup() 
{
  // turn on motor
  Left.run(RELEASE);
  Right.run(RELEASE);
}

void loop() 
{
  Right.run(BACKWARD);
  Left.run(FORWARD);
  for(int i = 0; i < 255; i++) 
  {
    Right.setSpeed(i);  
    Left.setSpeed(i); 
    delay(10);
  }
  for(int i = 255; i != 0; i--) 
  {
    Right.setSpeed(i);  
    Left.setSpeed(i); 
    delay(10);
  }
 

  Left.run(BACKWARD);
  Right.run(FORWARD);
  for(int i = 0; i < 255; i++) 
  {
    Right.setSpeed(i);  
    Left.setSpeed(i);
    delay(10);
  }
  for(int i = 255; i != 0; i--) 
  {
    Right.setSpeed(i);  
    Left.setSpeed(i);
    delay(10);
  }
  
  Right.run(RELEASE);
  Left.run(RELEASE);
  delay(1000);
}

 

посредине тот самый знаменитый сдвиговый регистр 74HC595N..

 

А скетч который вы написали он же без использования датчиков?

Но все равнопосле его заливки ни чего не происходит почему то....

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

протестируйте соеденения кодом который выложил максим. я поправил свой под библиотеку

#include <AFMotor.h>

AF_DCMotor Left(1, MOTOR12_64KHZ);
AF_DCMotor Right(2, MOTOR12_64KHZ);

#define led_1 9                 //левый датчик
#define led_2 10                //правый датчик

#define sped 100                //зададим максимум скорости
#define turn 50                 //зададим скорость на повороте колеса тормозящего
#define pausa 200               //пауза между опросами датчиков
boolean sens_L = 0;             //переменные для хранения состояния датчиков
boolean sens_R = 0;

void setup(){
  Left.run(RELEASE);
  Right.run(RELEASE);
  pinMode(led_1, INPUT);
  pinMode(led_2, INPUT);
  Right.run(BACKWARD);
  Left.run(FORWARD);
}
void loop(){
  sens_L = digitalRead(led_1);
  sens_L = digitalRead(led_2);

  if(sens_L==1 & sens_R==1){    //если все норм едем вдоль линии
    Left.setSpeed(sped);
    Right.setSpeed(sped);
  }
   if(sens_L==1 & sens_R==0){   //справа наехали на линию
    Left.setSpeed(sped);
    Right.setSpeed(turn);
  }
  if(sens_L==0 & sens_R==1){    //слева наехали на линию
    Left.setSpeed(turn);
    Right.setSpeed(sped);
  }
  if(sens_L==0 & sens_R==0){    //мы на чем то но не на белой бумаге. встаем
    Left.setSpeed(0);
    Right.setSpeed(0);
  }
  delay(pausa);
}

и датчики еще надо будет настроить

видели там регулятор?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

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

#define led_1 9                 //левый датчик
#define led_2 10                //правый датчик

void setup(){
  Serial.begin(9600);
  pinMode(led_1, INPUT);
  pinMode(led_2, INPUT);
}
void loop(){
  Serial.print("left ");
  Serial.print(digitalRead(led_1));
  Serial.print("    ");
  Serial.print("right ");
  Serial.println(digitalRead(led_2));
  delay(200);
}

 

maksim
Offline
Зарегистрирован: 12.02.2012

Должен работать, ищите описание и схему своего шилда.

yanbaev72
Offline
Зарегистрирован: 08.11.2013

jeka_tm пишет:

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

#define led_1 9                 //левый датчик
#define led_2 10                //правый датчик

void setup(){
  Serial.begin(9600);
  pinMode(led_1, INPUT);
  pinMode(led_2, INPUT);
}
void loop(){
  Serial.print("left ");
  Serial.print(digitalRead(led_1));
  Serial.print("    ");
  Serial.print("right ");
  Serial.println(digitalRead(led_2));
  delay(200);
}

 

Датчики я настроил. мне кажется что надо как то сделать инверсию показаний с датчиков.

так как сейчас машина едет толькокогда датчик попадает на черную линию....правда почему то теперь крутится только левый мотор

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

сам инвертируешь?

все датчики четко работают?

 

yanbaev72
Offline
Зарегистрирован: 08.11.2013

jeka_tm пишет:

сам инвертируешь?

все датчики четко работают?

 

я бы с удовольствием..но к сожалению не знаю как это сделать(

Датчики работают четко, особенно на черной линии на белом фоне.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

нули на еденицы поменять и наоборот

#include <AFMotor.h>

AF_DCMotor Left(1, MOTOR12_64KHZ);
AF_DCMotor Right(2, MOTOR12_64KHZ);

#define led_1 9                 //левый датчик
#define led_2 10                //правый датчик

#define sped 100                //зададим максимум скорости
#define turn 50                 //зададим скорость на повороте колеса тормозящего
#define pausa 200               //пауза между опросами датчиков
boolean sens_L = 0;             //переменные для хранения состояния датчиков
boolean sens_R = 0;

void setup(){
  Left.run(RELEASE);
  Right.run(RELEASE);
  pinMode(led_1, INPUT);
  pinMode(led_2, INPUT);
  Right.run(BACKWARD);
  Left.run(FORWARD);
}
void loop(){
  sens_L = digitalRead(led_1);
  sens_L = digitalRead(led_2);

  if(sens_L==0 & sens_R==0){    //если все норм едем вдоль линии
    Left.setSpeed(sped);
    Right.setSpeed(sped);
  }
   if(sens_L==0 & sens_R==1){   //справа наехали на линию
    Left.setSpeed(sped);
    Right.setSpeed(turn);
  }
  if(sens_L==1 & sens_R==0){    //слева наехали на линию
    Left.setSpeed(turn);
    Right.setSpeed(sped);
  }
  if(sens_L==1 & sens_R==1){    //мы на чем то но не на белой бумаге. встаем
    Left.setSpeed(0);
    Right.setSpeed(0);
  }
  delay(pausa);
}

+ датчики все норм работают?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

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

yanbaev72
Offline
Зарегистрирован: 08.11.2013

jeka_tm пишет:

нули на еденицы поменять и наоборот

#include <AFMotor.h>

AF_DCMotor Left(1, MOTOR12_64KHZ);
AF_DCMotor Right(2, MOTOR12_64KHZ);

#define led_1 9                 //левый датчик
#define led_2 10                //правый датчик

#define sped 100                //зададим максимум скорости
#define turn 50                 //зададим скорость на повороте колеса тормозящего
#define pausa 200               //пауза между опросами датчиков
boolean sens_L = 0;             //переменные для хранения состояния датчиков
boolean sens_R = 0;

void setup(){
  Left.run(RELEASE);
  Right.run(RELEASE);
  pinMode(led_1, INPUT);
  pinMode(led_2, INPUT);
  Right.run(BACKWARD);
  Left.run(FORWARD);
}
void loop(){
  sens_L = digitalRead(led_1);
  sens_L = digitalRead(led_2);

  if(sens_L==0 & sens_R==0){    //если все норм едем вдоль линии
    Left.setSpeed(sped);
    Right.setSpeed(sped);
  }
   if(sens_L==0 & sens_R==1){   //справа наехали на линию
    Left.setSpeed(sped);
    Right.setSpeed(turn);
  }
  if(sens_L==1 & sens_R==0){    //слева наехали на линию
    Left.setSpeed(turn);
    Right.setSpeed(sped);
  }
  if(sens_L==1 & sens_R==1){    //мы на чем то но не на белой бумаге. встаем
    Left.setSpeed(0);
    Right.setSpeed(0);
  }
  delay(pausa);
}

+ датчики все норм работают?

Теперь крутятся оба мотора но в разные стороны

вот видео для наглядности

http://vk.com/im?peers=103439307_210979232&sel=3308094&z=video3308094_167159225%2F7b2d8a1e7aba9734ef

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

ссылку исправь

yanbaev72
Offline
Зарегистрирован: 08.11.2013

jeka_tm пишет:

ссылку исправь

исправил

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

поменяй местами провода которые идут от мотора который крутится назад

че то видео не грузится. ты его закачал или еще закачиваешь?. какая то переписка открылась

yanbaev72
Offline
Зарегистрирован: 08.11.2013

jeka_tm пишет:

поменяй местами провода которые идут от мотора который крутится назад

че то видео не грузится. ты его закачал или еще закачиваешь?. какая то переписка открылась

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

А как сюда видео можно закинуть?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

сюда никак. кидай на ютуб

а сюда ссылку

попробуем уменьшить задержку

#include <AFMotor.h>

AF_DCMotor Left(1, MOTOR12_64KHZ);
AF_DCMotor Right(2, MOTOR12_64KHZ);

#define led_1 9                 //левый датчик
#define led_2 10                //правый датчик

#define sped 100                //зададим максимум скорости
#define turn 50                 //зададим скорость на повороте колеса тормозящего
#define pausa 50               //пауза между опросами датчиков
boolean sens_L = 0;             //переменные для хранения состояния датчиков
boolean sens_R = 0;

void setup(){
  Left.run(RELEASE);
  Right.run(RELEASE);
  pinMode(led_1, INPUT);
  pinMode(led_2, INPUT);
  Right.run(BACKWARD);
  Left.run(FORWARD);
}
void loop(){
  sens_L = digitalRead(led_1);
  sens_L = digitalRead(led_2);

  if(sens_L==0 & sens_R==0){    //если все норм едем вдоль линии
    Left.setSpeed(sped);
    Right.setSpeed(sped);
  }
   if(sens_L==0 & sens_R==1){   //справа наехали на линию
    Left.setSpeed(sped);
    Right.setSpeed(turn);
  }
  if(sens_L==1 & sens_R==0){    //слева наехали на линию
    Left.setSpeed(turn);
    Right.setSpeed(sped);
  }
  if(sens_L==1 & sens_R==1){    //мы на чем то но не на белой бумаге. встаем
    Left.setSpeed(0);
    Right.setSpeed(0);
  }
  delay(pausa);
}

 

yanbaev72
Offline
Зарегистрирован: 08.11.2013

jeka_tm пишет:

сюда никак. кидай на ютуб

а сюда ссылку

попробуем уменьшить задержку

#include <AFMotor.h>

AF_DCMotor Left(1, MOTOR12_64KHZ);
AF_DCMotor Right(2, MOTOR12_64KHZ);

#define led_1 9                 //левый датчик
#define led_2 10                //правый датчик

#define sped 100                //зададим максимум скорости
#define turn 50                 //зададим скорость на повороте колеса тормозящего
#define pausa 50               //пауза между опросами датчиков
boolean sens_L = 0;             //переменные для хранения состояния датчиков
boolean sens_R = 0;

void setup(){
  Left.run(RELEASE);
  Right.run(RELEASE);
  pinMode(led_1, INPUT);
  pinMode(led_2, INPUT);
  Right.run(BACKWARD);
  Left.run(FORWARD);
}
void loop(){
  sens_L = digitalRead(led_1);
  sens_L = digitalRead(led_2);

  if(sens_L==0 & sens_R==0){    //если все норм едем вдоль линии
    Left.setSpeed(sped);
    Right.setSpeed(sped);
  }
   if(sens_L==0 & sens_R==1){   //справа наехали на линию
    Left.setSpeed(sped);
    Right.setSpeed(turn);
  }
  if(sens_L==1 & sens_R==0){    //слева наехали на линию
    Left.setSpeed(turn);
    Right.setSpeed(sped);
  }
  if(sens_L==1 & sens_R==1){    //мы на чем то но не на белой бумаге. встаем
    Left.setSpeed(0);
    Right.setSpeed(0);
  }
  delay(pausa);
}

 

http://www.youtube.com/watch?v=oV2BtUs_lbA&feature=youtu.be

http://www.youtube.com/watch?v=UkIoBxqDFFo&feature=youtu.be

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

да.вы сделали главную ошибку, не послушали что надо сделать в начале. лист нужен побольше и просто круг на всю длину. у вас слишком часты повороты. не среагирует. машинка больше поворотов

yanbaev72
Offline
Зарегистрирован: 08.11.2013

jeka_tm пишет:

да.вы сделали главную ошибку, не послушали что надо сделать в начале. лист нужен побольше и просто круг на всю длину. у вас слишком часты повороты. не среагирует. машинка больше поворотов

Вы писали про лист А3, у меня в три раза больше чем А3-это по поводу размера...

сейчас попробую маркером нарисовать тупо круг.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

я в живую не видел такое шасси. не думал что оно такое крупное

что то быстро едет машинка для тестирования. уменьшим скорость

#include <AFMotor.h>

AF_DCMotor Left(1, MOTOR12_64KHZ);
AF_DCMotor Right(2, MOTOR12_64KHZ);

#define led_1 9                 //левый датчик
#define led_2 10                //правый датчик

#define sped 50                //зададим максимум скорости
#define turn 25                 //зададим скорость на повороте колеса тормозящего
#define pausa 50               //пауза между опросами датчиков
boolean sens_L = 0;             //переменные для хранения состояния датчиков
boolean sens_R = 0;

void setup(){
  Left.run(RELEASE);
  Right.run(RELEASE);
  pinMode(led_1, INPUT);
  pinMode(led_2, INPUT);
  Right.run(BACKWARD);
  Left.run(FORWARD);
}
void loop(){
  sens_L = digitalRead(led_1);
  sens_L = digitalRead(led_2);

  if(sens_L==0 & sens_R==0){    //если все норм едем вдоль линии
    Left.setSpeed(sped);
    Right.setSpeed(sped);
  }
   if(sens_L==0 & sens_R==1){   //справа наехали на линию
    Left.setSpeed(sped);
    Right.setSpeed(turn);
  }
  if(sens_L==1 & sens_R==0){    //слева наехали на линию
    Left.setSpeed(turn);
    Right.setSpeed(sped);
  }
  if(sens_L==1 & sens_R==1){    //мы на чем то но не на белой бумаге. встаем
    Left.setSpeed(0);
    Right.setSpeed(0);
  }
  delay(pausa);
}

 

yanbaev72
Offline
Зарегистрирован: 08.11.2013

jeka_tm пишет:

я в живую не видел такое шасси. не думал что оно такое крупное

что то быстро едет машинка для тестирования. уменьшим скорость

#include <AFMotor.h>

AF_DCMotor Left(1, MOTOR12_64KHZ);
AF_DCMotor Right(2, MOTOR12_64KHZ);

#define led_1 9                 //левый датчик
#define led_2 10                //правый датчик

#define sped 50                //зададим максимум скорости
#define turn 25                 //зададим скорость на повороте колеса тормозящего
#define pausa 50               //пауза между опросами датчиков
boolean sens_L = 0;             //переменные для хранения состояния датчиков
boolean sens_R = 0;

void setup(){
  Left.run(RELEASE);
  Right.run(RELEASE);
  pinMode(led_1, INPUT);
  pinMode(led_2, INPUT);
  Right.run(BACKWARD);
  Left.run(FORWARD);
}
void loop(){
  sens_L = digitalRead(led_1);
  sens_L = digitalRead(led_2);

  if(sens_L==0 & sens_R==0){    //если все норм едем вдоль линии
    Left.setSpeed(sped);
    Right.setSpeed(sped);
  }
   if(sens_L==0 & sens_R==1){   //справа наехали на линию
    Left.setSpeed(sped);
    Right.setSpeed(turn);
  }
  if(sens_L==1 & sens_R==0){    //слева наехали на линию
    Left.setSpeed(turn);
    Right.setSpeed(sped);
  }
  if(sens_L==1 & sens_R==1){    //мы на чем то но не на белой бумаге. встаем
    Left.setSpeed(0);
    Right.setSpeed(0);
  }
  delay(pausa);
}

 

При такой скорости моторы сильно пищат

http://www.youtube.com/watch?v=gMymTcgEItU&feature=youtu.be

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

да писк фиг с ним. почему не реагирует вообще. так датчики проверь тем тестовым скетчем на бумаге просто поставь все также или нет

yanbaev72
Offline
Зарегистрирован: 08.11.2013

Еще у менястранное поведения питания на шилде...

шилд и дуина на разном питании и перемычка убрана

Когда я подаю питание на дуину не важно USB или кроной то индикатор питания слабо загорается и слышен писк моторов.

а когда я подаю питание на шилд то индикатор загорается ярче

Куда смотреть, где может коротить?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

питание почему то общее. у меня где то валялся шилд такой. ща гляну

yanbaev72
Offline
Зарегистрирован: 08.11.2013

jeka_tm пишет:

да писк фиг с ним. почему не реагирует вообще. так датчики проверь тем тестовым скетчем на бумаге просто поставь все также или нет

Тест нормально проходит.

Когда линия между датчиками то в монитор сыпятся "0", когда один из датчиков над линией то "1", все четко без ошибок...

yanbaev72
Offline
Зарегистрирован: 08.11.2013

jeka_tm пишет:

питание почему то общее. у меня где то валялся шилд такой. ща гляну

Вот с тестовым скетчем нет проблем с питанием, индикатор питания не горит при питании дуины....

 

yanbaev72
Offline
Зарегистрирован: 08.11.2013

jeka_tm пишет:

питание почему то общее. у меня где то валялся шилд такой. ща гляну

Вот с тестовым скетчем нет проблем с питанием, индикатор питания не горит при питании дуины....

 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

понятно. посмотрел на шилд и на схему. схема конечно по дурацки сделана. непонятно что куда подключается к самой ардуине

отдельного драйвера нет?

если перемычку поставить как себя ведет?

yanbaev72
Offline
Зарегистрирован: 08.11.2013

jeka_tm пишет:

понятно. посмотрел на шилд и на схему. схема конечно по дурацки сделана. непонятно что куда подключается к самой ардуине

отдельного драйвера нет?

если перемычку поставить как себя ведет?

С перемычкой нормально, с обеими вариантами питания

Странно, что со скетчем с датчиками и моторами эта проблема есть, а с тестовым скетчем для датчиков этой проблемы нету.

может эта статья как то поможет

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

что значит нормально?

yanbaev72
Offline
Зарегистрирован: 08.11.2013

jeka_tm пишет:

что значит нормально?

когда в дуину залит тестовый скетч для датчиков, то диод питания не горит при подаче питания на дуинуи при снятой перемычке, а когда залит полный скетч для следования по линии  то диод слабо загорается при подаче питания на дуину

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

диод питания ардуины или шилда не пойму?

yanbaev72
Offline
Зарегистрирован: 08.11.2013

jeka_tm пишет:

диод питания ардуины или шилда не пойму?

Шилда, тот что на фотках выше

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

все вместе с перемычкой нормлаьно или без?

yanbaev72
Offline
Зарегистрирован: 08.11.2013

jeka_tm пишет:

все вместе с перемычкой нормлаьно или без?

с перемычкой нормально. но с перемычкой в каком то смысле теряется смысл шилда... так как питание будет от одного источника

https://www.youtube.com/watch?v=t7e9QKOhS2A

yanbaev72
Offline
Зарегистрирован: 08.11.2013

maksim пишет:

Должен работать, ищите описание и схему своего шилда.

Должен, но не работает....

Вот схема шилда

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

выключать наверно надо. не должно питание с ардуины идти

yanbaev72
Offline
Зарегистрирован: 08.11.2013

jeka_tm пишет:

выключать наверно надо. не должно питание с ардуины идти

выключать всмысле перемычку убирать?

А почему индикация питания может зависеть от того какой скетчзалит в ардуину?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

yanbaev72 пишет:

jeka_tm пишет:

выключать наверно надо. не должно питание с ардуины идти

выключать всмысле перемычку убирать?

А почему индикация питания может зависеть от того какой скетчзалит в ардуину?

да хрен знает. в скетче для датчиков не испльзуется шилд, а во втором инициализируется и используется. может в этом дело. хотя странно

yanbaev72
Offline
Зарегистрирован: 08.11.2013

jeka_tm пишет:

yanbaev72 пишет:

jeka_tm пишет:

выключать наверно надо. не должно питание с ардуины идти

выключать всмысле перемычку убирать?

А почему индикация питания может зависеть от того какой скетчзалит в ардуину?

да хрен знает. в скетче для датчиков не испльзуется шилд, а во втором инициализируется и используется. может в этом дело. хотя странно

может в герцах дело?

 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

да врядли. может я пропустил обычный отдельный драйвер есть?

yanbaev72
Offline
Зарегистрирован: 08.11.2013

jeka_tm пишет:

да врядли. может я пропустил обычный отдельный драйвер есть?

в смысле просто микруха типа L293D?

есть вот такая

это аналог L293D

yanbaev72
Offline
Зарегистрирован: 08.11.2013

jeka_tm пишет:

да врядли. может я пропустил обычный отдельный драйвер есть?

Заменил на шилде L293D на свой аналог и проблема с питанием пропала....значит дело в драйвере?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

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

+понятния не имею. я сним не работал. так и валяется. мользуюсь отдельными или паяю на плату микрухи

yanbaev72
Offline
Зарегистрирован: 08.11.2013

jeka_tm пишет:

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

+понятния не имею. я сним не работал. так и валяется. мользуюсь отдельными или паяю на плату микрухи

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

опять же я делал на управлении ИК-пультом с этим же шилдом и все нормально работало и работает.... странно...

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

хрен знает. может в коде глюк. завтра для теста кое что набросаю