роботы робототехника микроконтроллеры


 Страниц (2): « 1 [2]   

> Описание: общий пример для новичка
алешкович Post Id


Капитан


Сообщений всего: 46
Дата рег-ции: Май 2010  



Надеюсь тема ещё жива? Подмигивающий
подкорректируете мой код? Выложу его блок-схему и написанный кусок, тупо содрать готовый не получается под свои нужды. Да и охото своё сделать.
===
int IRD = 12; //ДАТЧИК ДВИЖЕНИЯ ТЁПЛОГО ТЕЛА
int IRBL = 11; //ИНФРАКРАСНЫЙ БАМПЕР ЛЕВЫЙ
int IRBR = 10; //ИНФРАКРАСНЫЙ БАМПЕР ПРАВЫЙ
int Lmotor = 9; //ЛЕВЫЙ МОТОР
int Rmotor = 8; //ПРАВЫЙ МОТОР

enum {STOP, PERED, ZAD, LEVO, PRAVO};

void go(unsigned char direction){

switch (direction) {

case STOP:
Lmotor=LOW; // БЛОК "СТОП", МОТОРЫ ОТКЛЮЧЕНЫ
Rmotor=LOW;
break;

case PERED:
Lmotor=HIGH; //БЛОК "ВПЕРДЕ!", МОТОРЫ ВКЛЮЧЕНЫ
Rmotor=HIGH;
break;

case ZAD:
Lmotor=HIGH; //БЛОК "НАЗАД", МОТОРЫ ВКЛЮЧЕНЫ ОБРАТНЫМ ПОЛЮСОМ,( ЕЩЁ НЕ ЗНАЮ, КАК ПРИДУМАТЬГрустный )
Rmotor=HIGH;
break;

case LEVO:
Lmotor=LOW; //БЛОК "ВЛЕВО", ЛЕВЫЙ МОТОР ВЫКЛЮЧЕН (СТОИТ НА ПЯТКЕ)
Rmotor=HIGH; //------------, ПРАВЫЙ МОТОР ВКЛЮЧЁН
break;

case PRAVO:
Lmotor=HIGH; //БЛОК "ВПРАВО", ЛЕВЫЙ МОТОР ВКЛЮЧЁН
Rmotor=LOW; //------------, ПРАВЫЙ МОТОР ВЫКЛЮЧЕН (СТОИТ НА ПЯТКЕ)
break;
}
}


void setup()
{

pinMode(IRD, INPUT); //устанавливаем 12 КОНТАКТ В РЕЖИМ ВВОДА
pinMode(IRBL, INPUT); //устанавливаем 11 КОНТАКТ В РЕЖИМ ВВОДА
pinMode(IRBR, INPUT); //устанавливаем 10 КОНТАКТ В РЕЖИМ ВВОДА
pinMode(Lmotor, OUTPUT); //устанавливаем 9 КОНТАКТ В РЕЖИМ ВЫВОДА
pinMode(Rmotor, OUTPUT); //устанавливаем 8 КОНТАКТ В РЕЖИМ ВЫВОДА

}

void loop()
{

if(((IRD==0) && (IRBL==0) && (IRBR==0))) go(PRAVO); // все датчики свободны движение в право
if(((IRD==1) && (IRBL==0) && (IRBR==0))) go(PERED); // датчик движения сработал, путь свободен
if(((IRD==1) && (IRBL==1) && (IRBR==1))) go(LEVO); // датчик движения сработал, путь закрыт, движение в лево
if(((IRD==1) && (IRBL==1) && (IRBR==0))) go(PRAVO); // датчик движения сработал, правый бампер сработал, движение в право
if(((IRD==1) && (IRBL==0) && (IRBR==1))) go(LEVO); // датчик движения сработал, левый бампер сработал, движение в лево
if(((IRD==0) && (IRBL==1) && (IRBR==1))) go(PRAVO); // датчик движения не работает, бампер сработал, движение в право
if(((IRD==0) && (IRBL==0) && (IRBR==1))) go(LEVO); // датчик движения не работает, правый бампер сработал, движение в лево
if(((IRD==0) && (IRBL==1) && (IRBR==0))) go(LEVO); // датчик движения не работает, левый бампер сработал, движение в право

}
===
это пока приблизительный код.
в теории на ардуинки поставлю инфракрасный датчик движения и пару ир-бамперов, последоватьльно опрашивая каждый из них (в связке по три, как в примере) будет происходить ответная реакция выводом на моторы.
Только вот думаю не будет ли данная последовательность сильно тормозить процесс реагирования всей системы в целом?

(Отредактировано автором: 13 Февраля, 2013 - 15:31:20)

 
 Top
Страниц (2): « 1 [2]
« Алгоритмы »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 





Powered by Exclusive Bulletin Board
ExBB FM 1.0 RC1 Smiles by Fool from Foolstown
  Яндекс.Метрика   Рейтинг@Mail.ru