Остался только код!Нужна ваша помощь, господа!

Тема в разделе "Arduino & Shields", создана пользователем Kolin117, 27 окт 2013.

  1. Kolin117

    Kolin117 Нуб

    Сделал робота, способного объезжать препятствия.
    Использовал:
    1) arduino uno
    2)обычный motor shield
    3)сенсор sharp (10-80)
    За основу взял код с этого форума=>http://arduino.ru/forum/proekty/arduino-robot-dlya-nachinayushchikh
    Что нужно изменить в том коде(что вырезать, что переделать под мой шилд)?
     
  2. atompost

    atompost Гик

    ИМХО! Я думаю, вам нужно начать с того, что сесть и разобраться с каждой строчкой кода, который вы использовали, понять зачем она здесь и что делает, почитать книги по программированию и "хелпы" по синтаксису языка, а потом... потом этот вопрос который вы задали выше отпадет сам собой !

    З.Ы.

    Почему все думают, что все форумчане сразу же бросятся писать код? Ведь это же так классно самому разобраться в чем то, понять, перенастроить, использовать какие то свои фишки в коде, а не тупо "скопипастить" код и потом смотреть как твоя поделка ездит, не понимая, что там происходит внутри, какие команды отдает ардуино и в какой момент, я понимаю когда спрашивают: я вот сделал так вот и так, но вот в такой момент времени у меня получается не так как я хочу, это другой вопрос, и тут интересно разобраться и вам и форумчанам. ИМХО!
     
    Последнее редактирование: 27 окт 2013
    Megakoteyka нравится это.
  3. Kolin117

    Kolin117 Нуб

    а можно тогда попросить у вас список литературы про processing-y?
     
  4. atompost

    atompost Гик

    можете например здесь почитать, но нужен ли вам процессинг? Можен все-таки Arduino IDE ?
     
  5. Kolin117

    Kolin117 Нуб

    а на чем написан тот код?
     
  6. Megakoteyka

    Megakoteyka Оракул Модератор

    И в Arduino IDE, и в Processing используется C++.
     
  7. atompost

    atompost Гик

    я так понимаю, с языками программирования вы не знакомы?:rolleyes:
     
  8. Kolin117

    Kolin117 Нуб

    вообще не знаком!как быть?с чего начать?что почитать?
     
  9. Megakoteyka

    Megakoteyka Оракул Модератор

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

    atompost Гик

  11. Kosss

    Kosss Нерд

    Могу предложить свой код. Писал для машинки. Но его надо корректировать под свои двигатели, сенсоры и цели. Он просто заставляет машинку разворачиваться при виде препятствий. (сенсор сонар)
    Код (Text):
    #include <SoftwareSerial.h>
    #include <URMSerial.h>

    URMSerial urm;

    int speedl = 6;
    int speedr = 5;
    int left = 7;
    int right = 4;
    int getMeasurement()
    {
        // Request a distance reading from the URM37
        switch(urm.requestMeasurementOrTimeout(DISTANCE, value)) // Find out the type of request
        {
            case DISTANCE: // Double check the reading we recieve is of DISTANCE type
                //    Serial.println(value); // Fetch the distance in centimeters from the URM37
                return value;
                break;
            case TEMPERATURE:
                return value;
                break;
            case ERROR:
                Serial.println("Error");
                break;
            case NOTREADY:
                Serial.println("Not Ready");
                break;
            case TIMEOUT:
                Serial.println("Timeout");
                break;
        }

        return 0;
    }
    void FORWARD()
    {
      digitalWrite(right,LOW);
      digitalWrite(left,LOW);
      analogWrite(speedl,255);
      analogWrite(speedr,255);
    }
    void TURN()
    {
      digitalWrite(right,HIGH);
      digitalWrite(left,LOW);
      analogWrite(speedl,255);
      analogWrite(speedr,255);
    }
    void BACKWARD()
    {
      digitalWrite(right,HIGH);
      digitalWrite(left,HIGH);
      analogWrite(speedl,255);
      analogWrite(speedr,255);
    }

    void setup() {
        urm.begin(11,12,9600);                // RX Pin, TX Pin, Baud Rate
        pinMode(left,OUTPUT);
        pinMode(right,OUTPUT);
    }

    void loop()
    {
     
      while ((getMeasurement()>40)||(digitalRead(A1)=HIGH) ||(digitalRead(A2)=HIGH))
      {
        FORWARD();
      }
      while (getMeasurement()<40)
      {
        TURN();
        delay(800);
      }
      if ((digitalRead(A1)=LOW) ||(digitalRead(A1)=LOW))
      {
        BACKWARD();
        delay(300);
        TURN();
        delay(800);
      }
    }
     
  12. Kosss

    Kosss Нерд

    но если вы вообще не знакомы с си то тогда смысла нет юзать этот код. там много "личной" для каждого робота информации. надо много править.