шагающий робот

Тема в разделе "Глядите, что я сделал", создана пользователем Алексе_Бутов, 1 ноя 2015.

  1. Вот сделал :)

     
    vvr, Mestniy, egordorichev и 4 другим нравится это.
  2. Максимус-Бог

    Максимус-Бог Убийца матрёшек

    Круто. А у него есть какая-нибудь задача?
     
  3. Самое сложное было его сделать. Над задачами я еще не думал но с интересом готов рассмотреть предложения по задачам. Портов еще много свободных осталось, навесить можно разное оборудование.
     
  4. Максимус-Бог

    Максимус-Бог Убийца матрёшек

    можно прицепить мини-пылесос:)
     
    Oss нравится это.
  5. DrProg

    DrProg Вечный нерд

    Пиво пусть таскает из холодильника. )
     
  6. Максимус-Бог

    Максимус-Бог Убийца матрёшек

    Силы серв не хватит дверцу открыть, а если хватит, то ему придётся об стену опереться или упадёт.
     
  7. Максимус-Бог

    Максимус-Бог Убийца матрёшек

    Пиво пить - вредно.
     
  8. Шестиногого делать ? Как считает общественность ?
     
  9. Mestniy

    Mestniy Гуру

    Конечно делать. Он изящнее смотреться будет!
    Еще можно придумать, что-бы, когда его переворачиваешь, его ноги опускались к земле.
    Ну и над скоростью подумать(Завсегдатаи форума, внимание: это не придирка, а предложение - ато начнете из меня хая делать. Вы это ой как любите!)...
    А так - КРАСАВЧИК!!!!!:cool:
     
    Последнее редактирование: 3 ноя 2015
    Максимус-Бог нравится это.
  10. На шести ногах будет быстрее бегать. Можно подумать над гироскопом, это интересная идея. А вообще хочу на шестиногого большую палубу поставить, там много интересного можно разместить.
     
  11. Ноги робота, палубы итд как делали? Скажите если не секрет.
     
  12. Все детали робота сделаны на базе лазерного раскроя МДФ. Подгонял я его долго да и сейчас кое что надо подправить...
     
  13. Не могли бы ли вы мне отправить вашу прошивку ардуино? Хочу сделать кое-что попроще, но нужен пример кода.
     
  14. Могу, куда выслать?
     
  15. Код (Text):

    /////////////////////////////////////////////
    //        RemoteXY include library         //
    //   use ANDROID app version 3.2.1 or up   //
    /////////////////////////////////////////////

    /*
    #define REMOTEXY_MODE__SOFTWARESERIAL
    #include <SoftwareSerial.h>
    #include <RemoteXY.h>
    #define REMOTEXY_SERIAL_RX 2
    #define REMOTEXY_SERIAL_TX 3
    #define REMOTEXY_SERIAL_SPEED 9600
    */

    // Вот этот режим надо использовать для связи с синим зубом
    #define REMOTEXY_MODE__SERIAL
    #include <RemoteXY.h>
    #define REMOTEXY_SERIAL Serial
    #define REMOTEXY_SERIAL_SPEED 9600

    /* Remotexy, что конфигурировать */
    char RemoteXY_CONF[] =
      { 16,0,146,0,3,5,1,0,2,49
      ,12,12,2,88,0,1,0,23,49,12
      ,12,2,88,0,1,0,2,33,12,12
      ,2,88,0,1,0,23,33,12,12,2
      ,88,0,1,0,1,17,12,12,2,88
      ,0,1,0,23,17,12,12,2,88,0
      ,1,0,1,2,12,12,2,88,0,1
      ,0,23,2,12,12,2,88,0,1,0
      ,62,49,12,12,2,88,0,1,0,84
      ,49,12,12,2,88,0,1,0,62,33
      ,12,12,2,88,0,1,0,84,34,12
      ,12,2,88,0,1,0,62,18,12,12
      ,2,88,0,1,0,83,18,12,12,2
      ,88,0,1,0,62,2,12,12,2,88
      ,0,1,0,82,2,12,12,2,88,0
       };
     
    /* эта структура определяет все переменные-интерфейс управления */
    struct {

    /* входной переменной */
    char button_1; /* =1 Если кнопка нажата, иначе =0 */
    char button_2; /* =1 Если кнопка нажата, иначе =0 */
    char button_3; /* =1 Если кнопка нажата, иначе =0 */
    char button_4; /* =1 Если кнопка нажата, иначе =0 */
    char button_5; /* =1 Если кнопка нажата, иначе =0 */
    char button_6; /* =1 Если кнопка нажата, иначе =0 */
    char button_7; /* =1 Если кнопка нажата, иначе =0 */
    char button_8; /* =1 Если кнопка нажата, иначе =0 */
    char button_9; /* =1 Если кнопка нажата, иначе =0 */
    char button_10; /* =1 Если кнопка нажата, иначе =0 */
    char button_11; /* =1 Если кнопка нажата, иначе =0 */
    char button_12; /* =1 Если кнопка нажата, иначе =0 */
    char button_13; /* =1 Если кнопка нажата, иначе =0 */
    char button_14; /* =1 Если кнопка нажата, иначе =0 */
    char button_15; /* =1 Если кнопка нажата, иначе =0 */
    char button_16; /* =1 Если кнопка нажата, иначе =0 */

    /* другой переменной */
    char connect_flag; /* =1 Если провод подключен, иначе =0 */

    } RemoteXY;

    /////////////////////////////////////////////
    // Конец remotexy, что включают //
    /////////////////////////////////////////////

    #include <Servo.h>

    //резервирование 8 серв
    Servo myservo1;
    Servo myservo2;
    Servo myservo3;
    Servo myservo4;
    Servo myservo5;
    Servo myservo6;
    Servo myservo7;
    Servo myservo8;

    void setup()
    {
      RemoteXY_Init ();    
    // привязка серв к портам

    myservo1.attach(2); //
    myservo2.attach(3); //
    myservo3.attach(5); //
    myservo4.attach(6); //

    myservo5.attach(7); //
    myservo6.attach(8); //
    myservo7.attach(9); //
    myservo8.attach(10); //


    //Запуск интерфейса
       Serial.begin(9600);
    }

    // ограничения на сервы чтобы не трещали по всем осям и на захват
    const int max1 =170;
    const int min1 =10;
    const int max2 =170;
    const int min2 =1;

    // установка лапок в серидину рабочего диапазона
    int s11 = 90;
    int s12 = 90;
    int s21 = 90;
    int s22 = 90;
    int s31 = 30;
    int s32 = 30;
    int s41 = 30;
    int s42 = 30;

    void loop()
    {
    RemoteXY_Handler ();
    //--------------------------------------------------------------
    // Манирулятор
    //--------------------------------------------------------------
    // Следит за кнопками, при нажатии изменяет позицию сервы
    // if (RemoteXY.button_1) s11=s11+1;
    // if (RemoteXY.button_2) s11=s11-1;
    // if (RemoteXY.button_3) s12=s12+1;
    // if (RemoteXY.button_4) s12=s12-1;

    srv(90,90,90,90,60,30,30,30,1,1,1,1);
    srv(90,90,90,90,90,90,90,90,1,1,1,1);





    delay(5000);

    // поклон

    srv(90,90,90,90,10,90,90,10,1,1,1,1);
    delay(2000);
    srv(90,90,90,90,90,90,90,90,1,1,1,1);
    delay(5000);

    // приседания
    srv(90,90,90,90,10,10,10,10,1,1,1,1);
    srv(90,90,90,90,90,90,90,90,1,1,1,1);
    delay(2000);
    srv(90,90,90,90,10,10,10,10,1,1,1,1);
    srv(90,90,90,90,90,90,90,90,1,1,1,1);
    delay(2000);
    //наклоны
    srv(90,90,90,90,10,10,90,90,1,1,1,1);
    srv(90,90,90,90,90,10,10,90,1,1,1,1);
    srv(90,90,90,90,90,90,10,10,1,1,1,1);
    srv(90,90,90,90,10,90,90,10,1,1,1,1);
    delay(2000);
    srv(90,90,90,90,10,10,90,90,1,1,1,1);
    srv(90,90,90,90,90,10,10,90,1,1,1,1);
    srv(90,90,90,90,90,90,10,10,1,1,1,1);
    srv(90,90,90,90,10,90,90,10,1,1,1,1);
    srv(90,90,90,90,30,30,30,30,1,1,1,1);

    delay(2000);
    // кpучения
    srv(90,90,90,90,10,10,10,10,1,1,1,1);
    srv(150,150,150,150,10,10,10,10,1,1,1,1);
    srv(30,30,30,30,10,10,10,10,1,1,1,1);

    srv(90,90,90,90,10,10,10,10,1,1,1,1);
    srv(150,150,150,150,10,10,10,10,1,1,1,1);
    srv(30,30,30,30,10,10,10,10,1,1,1,1);
    delay(2000);
    // выпад
    //srv(90,90,90,90,10,10,10,10,1,1,1,1);
    //srv(30,30,150,150,10,10,10,10,1,1,1,1);
    //srv(150,150,30,30,10,10,10,10,1,1,1,1);


    srv(90,90,90,90,10,10,10,10,1,1,1,1);
    srv(90,90,90,90,60,60,60,60,1,1,1,1);


    // шаги вперед


      srv(180, 0, 120, 60, 30,30,30,30,1,3,1,1);  // шаг 1

      srv( 90, 30, 90, 30, 12,30,30,30,3,1,1,1);  // шаг 2
      srv( 90, 30, 90, 30, 30,30,30,30,3,1,1,1);  // шаг 2
      srv(120, 60,180,  0, 30,30,12,30,1,1,3,1);  // шаг 3
      srv(120, 60,180,  0, 30,30,30,30,1,1,3,1);  // шаг 3

      srv(150, 90,159, 90, 30,30,30,12,1,1,1,3);  // шаг 4
      srv(150, 90,159, 90, 30,30,30,30,1,1,1,3);  // шаг 4

      srv(180, 0, 120, 60, 30,12,30,30,1,3,1,1);  // шаг 1


    // шаги назад

      srv(180, 0, 120, 60, 30,30,30,30,1,1,1,1);  // шаг 1

      srv(150, 90,150, 90, 30,12,30,30,1,3,1,1);  // шаг 4
      srv(150, 90,150, 90, 30,30,30,30,1,3,1,1);  // шаг 4

      srv(120, 60,180,  0, 30,30,30,12,1,1,1,3);  // шаг 3
      srv(120, 60,180,  0, 30,30,30,30,1,1,1,3);  // шаг 3

      srv( 90, 30, 90, 30, 30,30,12,30,1,1,3,1);  // шаг 2
      srv( 90, 30, 90, 30, 30,30,30,30,1,1,3,1);  // шаг 2

      srv(180, 0, 120, 60, 30,30,30,30,3,1,1,1);  // шаг 1


    //Serial.println(abs(s11));
    }
    void srv1(int  a)
    {
      while(s42!=a)
      {
      if (s42<a) s42=s42+1;
      if (s42>a) s42=s42-1;
      myservo1.write(s42);
      delay(10);
      }
    }
    void srv( int  p11, int p21, int p31, int p41, int p12, int p22, int p32, int p42, int sp1, int sp2, int sp3, int sp4)
    {
      while((s11!=p11) || (s21!=p21) || (s31!=p31) || (s41!=p41) || (s12!=p12) || (s22!=p22) || (s32!=p32) || (s42!=p42))
      {

      if (s11<p11) s11=s11+sp1;
      if (s11>p11) s11=s11-sp1;
     
      if (s21<p21) s21=s21+sp2;
      if (s21>p21) s21=s21-sp2;

      if (s31<p31) s31=s31+sp3;
      if (s31>p31) s31=s31-sp3;

      if (s41<p41) s41=s41+sp4;
      if (s41>p41) s41=s41-sp4;
      if (s12<p12) s12=s12+sp1;
      if (s12>p12) s12=s12-sp1;

      if (s22<p22) s22=s22+sp2;
      if (s22>p22) s22=s22-sp2;

      if (s32<p32) s32=s32+sp3;
      if (s32>p32) s32=s32-sp3;

      if (s42<p42) s42=s42+sp4;
      if (s42>p42) s42=s42-sp4;
      myservo1.write(s11);
      myservo3.write(s21);
      myservo5.write(s31);
      myservo7.write(s41);

      myservo2.write(s12);
      myservo4.write(s22);
      myservo6.write(s32);
      myservo8.write(s42);

      delay(20);
      }
    }
     
    Последнее редактирование: 9 ноя 2015
    zserg и Кузьмин даниил нравится это.
  16. Максимус-Бог

    Максимус-Бог Убийца матрёшек

    Вседующий раз добавте код между [ code][ /code]
     
  17. Спасибо)
     
  18. Да не за что, удобный ресурс, пользуйтесь на здоровье.