roboforum.ru

Технический форум по робототехнике.

Arduino и Gp2D120

Re: Arduino и Gp2D120

=DeaD= » 13 июл 2011, 15:50

Так понятней? :)
Код: Выделить всёРазвернуть
int cmdNum=0;
int stepsLeft=0;
while(1){
  if(stepsLeft==0){
    cmdNum++; if(cmdNum>1) cmdNum=0;
    case(cmdNum){
      0: Forward (250); stepsLeft=100; break;
      1: Spin_Right(); stepsLeft=100; break;
    };
  if(obstacleDetected()){
    Backward(250);
    delay(1000);
    Spin_Right();
    delay(1000);
  };
  delay(20);
  stepsLeft--;
};

Re: Arduino и Gp2D120

gambit6 » 13 июл 2011, 20:58

Сделал так:

Код: Выделить всёРазвернуть
// О С Н О В Н О Й Ц И К Л П Р О Г Р А М М Ы
void loop(){
int cmdNum=0;
int stepsLeft=0;
while(1){
  if(stepsLeft==0){   
    cmdNum++; if(cmdNum>1) cmdNum=0;
    switch(cmdNum){
      case 0: Forward (250); stepsLeft=100; break;
      case 1: Spin_Right(); stepsLeft=100; break;
    };
  if(obstacleDetected()){
    Backward(250);
    delay(1000);
    Spin_Right();
    delay(1000);
  };
  delay(20);
  stepsLeft--;
};

}


Включаю робота и он начинает делать Spin_Right потом затихает и ничего не делает.
Если сразу после включения, когда он начинает вертеться отмахнуть рукой перед датчиком то едет назад, потом Spin_Right и опять останавливается =(((
Где-то ошибся?

Re: Arduino и Gp2D120

=DeaD= » 13 июл 2011, 21:17

Попробуйте:
Код: Выделить всёРазвернуть
if(stepsLeft==0){    
    cmdNum++; if(cmdNum>1) cmdNum=0;
    switch(cmdNum){
      case 0: Forward (250); stepsLeft=100; break;
      case 1: Spin_Right(); stepsLeft=100; break;
    };


Заменить на более простое:
Код: Выделить всёРазвернуть
if(stepsLeft==0){
    if(cmdNum==0){
      Forward (250); stepsLeft=100; cmdNum=1;
    }else{
      Spin_Right(); stepsLeft=100; cmdNum=0;
    };

Re: Arduino и Gp2D120

gambit6 » 13 июл 2011, 21:29

Теперь вертится как волчек постоянно =)))) А когда датчик срабатывает, отъезжает и снова вертится

Re: Arduino и Gp2D120

=DeaD= » 13 июл 2011, 21:51

Может у вас Forward (250); криво написана и не работает?

Добавлено спустя 2 минуты 10 секунд:
Упс, скобку забыли по ходу...

Код: Выделить всёРазвернуть
while(1){
  if(stepsLeft==0){   
    if(cmdNum==0){
      Forward (250); stepsLeft=100; cmdNum=1;
    }else{
      Spin_Right(); stepsLeft=100; cmdNum=0;
    };
  };
  if(obstacleDetected()){
    Backward(250);
    delay(1000);
    Spin_Right();
    delay(1000);
  };
  delay(20);
  stepsLeft--;
};

Re: Arduino и Gp2D120

gambit6 » 13 июл 2011, 23:07

ОГРОМЕННОЕ СПАСИБО! ОНО ПОЕХАЛО =)))

Re: Arduino и Gp2D120

GlassEagle » 15 июл 2011, 14:46

Не смог удержаться...
А что такое "блуждающий цикл"???? Блин, облазил весь интернет (как "любимые", так и нелюбимые поисковые системы) - нашёл это сочетание только применительно к вулканологии и к, пардон, "женским болезням" (шмугл, кстати, ужЕ знает об этой нашей ветке, насчёт шмяндекса - не проверял). Решил, было, что это какое-то новое слово в программировании на паскакале. Но, похоже, это просто "новое слово" у отдельно взятого учителя информатики.

Re: Arduino и Gp2D120

gambit6 » 17 июл 2011, 16:14

Помимо "блуждающего цикла" есть еще и тролли, которые к словам цепляются. :ROFL:


Rambler\'s Top100 Mail.ru counter