Робот который может объезжать препятствия.

Тема в разделе "Arduino & Shields", создана пользователем ИВАН 1454, 8 авг 2016.

  1. ИВАН 1454

    ИВАН 1454 Нерд

    Ребята помогите нубу, нужен код для робота, который может объезжать препятствия.
    Заранее Спасибо!
     
  2. DIYMan

    DIYMan Guest

    Псевдокод - тоже код:
    Код (C++):
    void loop()
    {
        переменная расстояние = получить_расстояние();
        если расстояние больше 10 см, то
            ехать_вперёд_смело();
        иначе
        {
            переменная направление = выбрать_случайно(налево,направо);
            переменная угол = выбрать_случайно(10,90);
            повернуть_на(направление,угол);
        }
    }
    Легко адаптируется под любой язык программирования ;)
     
    An4ous нравится это.
  3. ИВАН 1454

    ИВАН 1454 Нерд

    Спасибо большое, но можете пояснить.
     
  4. DIYMan

    DIYMan Guest

    А что именно непонятно в русском языке? Переведите с русского на любой другой язык программирования - и первая версия кода у вас в кармане. За вас никто делать не будет, вы же сами ничего не хотите делать. Есть только один вариант - за денежку, есть форум "Закажу проект", туда и пишите.

    В данном форуме я помогаю только тем, кто хотя бы палец об палец сам ударил.
     
    ostrov нравится это.
  5. ostrov

    ostrov Гуру

    Ну почему же, тут вот сделают любой ваш каприз за вас. Еще и в драку.
     
  6. ИВАН 1454

    ИВАН 1454 Нерд

    Помогите переделать под Ультрозвуковой дальномер HC-SR04
    Вот код:
    const int Trig = 11;
    const int Echo = 12;

    #define CON_MOTOR1 0
    #define CON_MOTOR2 0

    #define SPEED_1 5
    #define DIR_1 4

    #define SPEED_2 6
    #define DIR_2 7

    #define FORWARD 0
    #define BACKWARD 1
    #define LEFT 2
    #define RIGHT 3

    void go(int newDirection, int speed)
    {
    boolean motorDirection_1, motorDirection_2;
    switch ( newDirection ) {

    case FORWARD:
    motorDirection_1 = true;
    motorDirection_2 = true;
    break;
    case BACKWARD:
    motorDirection_1 = false;
    motorDirection_2 = false;
    break;
    case LEFT:
    motorDirection_1 = true;
    motorDirection_2 = false;
    break;
    case RIGHT:
    motorDirection_1 = false;
    motorDirection_2 = true;
    break;
    }
    motorDirection_1 = CON_MOTOR1 ^ motorDirection_1;
    motorDirection_2 = CON_MOTOR2 ^ motorDirection_2;
    analogWrite(SPEED_1, speed);
    analogWrite(SPEED_2, speed);
    digitalWrite(DIR_1, motorDirection_1);
    digitalWrite(DIR_2, motorDirection_2);
    }
    void setup()
    {
    for(int i = 6; i <= 7; i++)
    pinMode(i, OUTPUT);
    }

    void loop()
    {
    int distance = getDistance();
    if (distance > 10)
    go FORWARD();
    else
    {
    int direction = randDirChoose ();
    int angle = randAngChoose (10,90);
    turnRight (direction, angle);
    }
    }