Первая версия робота объезжающего комнату по периметру.

Тема в разделе "Глядите, что я сделал", создана пользователем Вячеслав, 24 мар 2012.

  1. semenko

    semenko Нерд

    можете выложить скетч без управления через x-bee?
    (просто его еще не приобрел)
     
  2. Этот скетч есть на первой странице robot_3 называется.
     
  3. yayayat

    yayayat Нуб

    Вячеслав у меня с питанием тоже большая проблема я копал копал и накопал про li-ion аккумуляторы.Их вольтаж примерно 3,7 вольт ,а ёмкость у разных версий колеблется от 3 до 5 A/h чего достаточно для для очень разных устройств , что касается размера они чуть больше пальчиковых батареек (18 мм диаметр 650 мм длина)единственная сложность - их зарядка но вот здесь есть инфа которая поможет с этим
    http://www.powerinfo.ru/accumulator-liion.php
    также написал скетч для этой зарядки
    int maxVoltage=4200;//max voltage on the battery
    int maxAmperage=1000;//max amperage on the battery
    int ledPin=13;//pin "full"
    int resistense=1000;//resistense in mOm;
    int currentVoltage=3700;//start voltage
    int pinVoltage=3;
    int sensePinAmperage1=0;
    int sensePinAmperage2=1;
    int inVoltage1;
    int outVoltage1;
    int inVoltage2;
    int outVoltage2;
    int amperage;
    int outCurrentVoltage;
    void setup(){
    pinMode(pinVoltage,OUTPUT);
    }
    void loop(){
    inVoltage1 = analogRead(sensePinAmperage1);
    outVoltage1 = map(inVoltage1,0,1023,0,5000);//voltage 0-5000 mV
    inVoltage2 = analogRead(sensePinAmperage2);
    outVoltage2 = map(inVoltage2,0,1023,0,5000);//voltage 0-5000 mV
    amperage=(outVoltage1-outVoltage2)/resistense;//amperage in mAm
    if(currentVoltage<maxVoltage)
    { if (amperage<maxAmperage){
    currentVoltage++;
    outCurrentVoltage = map(currentVoltage,0,5000,0,255);
    analogWrite(pinVoltage,outCurrentVoltage);
    }}
    else if(amperage>0){
    currentVoltage=maxVoltage;
    outCurrentVoltage = map(currentVoltage,0,5000,0,255);
    }else digitalWrite(ledPin,HIGH);
    }
     
  4. Maks

    Maks Нерд

    При компиляции выдает error: URMSerial urm; в чем причина
     
  5. semenko

    semenko Нерд

    можно фотографии со всех ракурсов?
     
  6. semenko

    semenko Нерд

    как подсоединялись моторы?
     
  7. Также можете на мой фотохостинг - http://khimki-forest.ru/photohosting.php заливать.
    Например эта картинка - как получить блокнот хакера.
    Да, да, это ссылки - http://khimki-forest.ru/show_image....=301a3d9d8c8bde20bd2d0da4c4b4e61c.preview.jpg на картинки.
     
  8. Reptaurus

    Reptaurus Нуб

    Зачет, а с квадрокоптером реально так сделать?
     
  9. semenko

    semenko Нерд

    sketch_jan05a.cpp: In function 'void MoveRobot(int, int)':
    sketch_jan05a:71: error: 'derges' was not declared in this scope

    вот 2 ошибки. Подскажите, как их исправить. Начал переписывать скетч под свою платформу.
    ответьте пожалуйста!!!
     
  10. Ошибка говорит, что переменная derges не объявлена. Проверьте, где вы ее объявляете.

    У меня она объявляется при объявлении функции:

    void MoveRobot(int direct, int degres)


    Все. Понял. У меня не derges а degres.:)
     
  11. semenko

    semenko Нерд

    Всё, спасибо! Это моя невнимательность... Ложная тревога.
     
  12. semenko

    semenko Нерд

    да, и ещё 1 вопрос: Можно ли как-нибудь обойтись без кнопки?
     
  13. Можно, она нужна только что бы он не уезжал сразу после загрузки скетча.
     
  14. Если честно, зря Вы переписываете данный код под своего робота, он очень специфичен. Корректная работа возможна только именно с моими сервами, дальномерами и размерами робота. Из скетча можно представить общую цель, а полный перенос его на Вашего робота потребует потом сильной переделки скетча.
     
  15. semenko

    semenko Нерд

    ещё одна проблема: Как замерить расстояние?

    вот процедура: что не так?


    это ваш код:

    //////////////////////////////////////////////
    //Процедура замера расстояния
    int distance() // run over and over
    {
    int value; // This value will be populated
    // Request a distance reading from the URM37
    measurement:
    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
    Serial.print("Forward: ");
    Serial.println(value);
    return value;
    break;
    case TEMPERATURE:
    return value;
    break;
    case ERROR:
    MoveRobot(5, 90); //останавливаемся
    Serial.println("Error");
    value=proceederror();
    Serial.print("Correct Forward: ");
    Serial.println(value);
    return value;
    break;
    case NOTREADY:
    Serial.println("Not Ready");
    break;
    case TIMEOUT:
    Serial.println("Timeout");
    break;
    }

    return -1;
    }


    это мой:


    //Процедура замера расстояния
    int distance() // run over and over
    {
    int value; // This value will be populated
    // Request a distance reading from the URM37
    measurement:
    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

    break;

    }

    return -1;
    }


    решил делать без передачи данных.


    ps

    Может я что-то не понял?
     
  16. Внутри case отсутствует возвращаемое значение: return value;
     
  17. semenko

    semenko Нерд

    Простите пожалуйста за глупый вопрос, но как (к каким контактам) вы подключались дальномер?
    Сколько контактов задействовалось?
     
  18. Вопрос вовсе не глупый.
    Этот дальномер общается с дуней по сериал порту. В разделе setup есть строка:
    PHP:
    urm.begin(2,3,9600); //RX Pin, TX Pin Подключаем сериал соединение дль дальномера
    Которая говорит, что дальномер подключен на 2-ой и 3-й контакт дуни и общается на скорости 9600.
    А вообще то, всю информацию по дальномеру можно найти на сайте http://amperka.ru/collection/Sensory/product/Ultrazvukovoy-dalnomer да и на форуме про него есть обсуждения.

    Тут главное правильно соединить дуню и дальномер:
    RX дуни - TX дальномера
    TX дуни - RX дальномера

    Ну и конечно подключить питание и землю дальномера.