Совмещение Arduino с NXT(через nxShield-M)

Тема в разделе "Arduino & Shields", создана пользователем Palach, 22 июл 2013.

  1. Palach

    Palach Нуб

    Здравствуйте многоуважаемые знатоки робототехники!!!

    Прощу помощи в непростом для меня деле))

    Нужно совместить плату Arduino Mega 2560 c NXT датчиками(мотор, датчик касания и т.д) с помощью NxShield-M...
    [​IMG]

    Я подключил Arduino с Шилдом, мотор от NXT так же подключил в разъем шилда "Motor-1"...

    Прошу помощи с кодом, кто сможет написать самый простой код, чтобы мотор вращался то вперед то назад...
    За ранее спасибо, очень сильно жду помощи от вас
     
  2. XCB

    XCB Гик

  3. Palach

    Palach Нуб

    Я там уже смотрел)) ни как не могу найти код для примера, именно связку Arduino с NXT
     
  4. Festour

    Festour Нерд

  5. Palach

    Palach Нуб

    Arduino компелирует эти примеры с ошибкой,,, мне нужен простой код, на включение мотора и выключение его через 10 секунд к примеру. Может кто нибудь написать буду прямо безумно благодарен:)
     
  6. XCB

    XCB Гик

    а может включить мозг и разобраться с ошибками? или это не наш путь?
     
  7. Palach

    Palach Нуб

    Я по рабочему готовому коду разберусь быстрее на много, я думаю человеку который в этом разбирается не составит труда написать простой скрипт на включение мотора и выключение его
     
  8. XCB

    XCB Гик

    мало у кого есть лего, еще у меньшего числа из них есть NxShield...
    Исходите из того что вы здесь с этой платой один...
    на форуме могут подсказать или тыкнуть в документацию, гадать на хрустальном шаре врятли ктото будет.
    показывайте код и пошибки компиляции
     
  9. XCB

    XCB Гик

  10. HighDigital

    HighDigital Гик

  11. Palach

    Palach Нуб

    Спасибо всем кто попытался помочь, но как говориться утро вечера мудренее))) разобрался сам. вот готовый код на четыре мотора, уверен кому нибудь точно пригодится

    Код (C):


    #include <Wire.h>
    #include <NXShield.h>

    // setup for this example:
    // attach external power to NXShield.
    // attach 4 motors to motor ports
    // Open the Serial terminal to view.

    NXShield          nxshield;

    void
    setup()
    {
        Serial.begin(115200);      // start serial for output
        delay(2000);                // wait two seconds, allowing time to
                                    // activate the serial monitor

        long            rotations = 2;  // Define variable rotations and set
                                        // equal to 90
        char            str[40];

        nxshield.init( SH_HardwareI2C );

        //
        // Wait until user presses GO button to continue the program
        //
        Serial.println ("Press GO button to continue");
        nxshield.waitForButtonPress(BTN_GO);

        //
        // reset motors.
        //
        nxshield.bank_a.motorReset();
        nxshield.bank_b.motorReset();


        // Drive motor 1 forward and backward for a specific number of
        // rotations
        delay(1000);
        Serial.println("Bank A motors >>");
        sprintf(str, "Motor 1 Forward %d Rotations", rotations);
        Serial.println(str);
        str[0] = '\0';
        nxshield.bank_a.motorRunRotations(SH_Motor_1,
                         SH_Direction_Forward,
                         SH_Speed_Medium,
                         rotations,
                         SH_Completion_Wait_For,
                         SH_Next_Action_BrakeHold);
        delay(1000);
        sprintf(str, "Motor 1 Reverse %d Rotations", rotations);
        Serial.println(str);
        str[0] = '\0';
        nxshield.bank_a.motorRunRotations(SH_Motor_1,
                         SH_Direction_Reverse,
                         SH_Speed_Medium,
                         rotations,
                         SH_Completion_Wait_For,
                         SH_Next_Action_BrakeHold);

        // Drive motor 2 forward and backward for a specific number of
        // rotations
        delay(1000);
        sprintf(str, "Motor 2 Forward %d Rotations", rotations);
        Serial.println(str);
        str[0] = '\0';
        nxshield.bank_a.motorRunRotations(SH_Motor_2,
                         SH_Direction_Forward,
                         SH_Speed_Medium,
                         rotations,
                         SH_Completion_Wait_For,
                         SH_Next_Action_BrakeHold);
        delay(1000);
        sprintf(str, "Motor 2 Reverse %d Rotations", rotations);
        Serial.println(str);
        str[0] = '\0';
        nxshield.bank_a.motorRunRotations(SH_Motor_2,
                         SH_Direction_Reverse,
                         SH_Speed_Medium,
                         rotations,
                         SH_Completion_Wait_For,
                         SH_Next_Action_BrakeHold);

        // Drive both motors forward and backward for a specific number of
        // rotations
        delay(1000);
        sprintf(str, "Both Motors Forward %d Rotations", rotations);
        Serial.println(str);
        str[0] = '\0';
        nxshield.bank_a.motorRunRotations(SH_Motor_Both,
                         SH_Direction_Forward,
                         SH_Speed_Medium,
                         rotations,
                         SH_Completion_Wait_For,
                         SH_Next_Action_BrakeHold);
        delay(1000);
        sprintf(str, "Both Motors Reverse %d Rotations", rotations);
        Serial.println(str);
        str[0] = '\0';
        nxshield.bank_a.motorRunRotations(SH_Motor_Both,
                         SH_Direction_Reverse,
                         SH_Speed_Medium,
                         rotations,
                         SH_Completion_Wait_For,
                         SH_Next_Action_BrakeHold);

        Serial.println("Bank B motors >>");
        // Drive motor 1 forward and backward for a specific number of
        // rotations
        delay(1000);
        sprintf(str, "Motor 1 Forward %d Rotations", rotations);
        Serial.println(str);
        str[0] = '\0';
        nxshield.bank_b.motorRunRotations(SH_Motor_1,
                         SH_Direction_Forward,
                         SH_Speed_Medium,
                         rotations,
                         SH_Completion_Wait_For,
                         SH_Next_Action_BrakeHold);
        delay(1000);
        sprintf(str, "Motor 1 Reverse %d Rotations", rotations);
        Serial.println(str);
        str[0] = '\0';
        nxshield.bank_b.motorRunRotations(SH_Motor_1,
                         SH_Direction_Reverse,
                         SH_Speed_Medium,
                         rotations,
                         SH_Completion_Wait_For,
                         SH_Next_Action_BrakeHold);

        // Drive motor 2 forward and backward for a specific number of
        // rotations
        delay(1000);
        sprintf(str, "Motor 2 Forward %d Rotations", rotations);
        Serial.println(str);
        str[0] = '\0';
        nxshield.bank_b.motorRunRotations(SH_Motor_2,
                         SH_Direction_Forward,
                         SH_Speed_Medium,
                         rotations,
                         SH_Completion_Wait_For,
                         SH_Next_Action_BrakeHold);
        delay(1000);
        sprintf(str, "Motor 2 Reverse %d Rotations", rotations);
        Serial.println(str);
        str[0] = '\0';
        nxshield.bank_b.motorRunRotations(SH_Motor_2,
                         SH_Direction_Reverse,
                         SH_Speed_Medium,
                         rotations,
                         SH_Completion_Wait_For,
                         SH_Next_Action_BrakeHold);

        // Drive both motors forward and backward for a specific number of
        // rotations
        delay(1000);
        sprintf(str, "Both Motors Forward %d Rotations", rotations);
        Serial.println(str);
        str[0] = '\0';
        nxshield.bank_b.motorRunRotations(SH_Motor_Both,
                         SH_Direction_Forward,
                         SH_Speed_Medium,
                         rotations,
                         SH_Completion_Wait_For,
                         SH_Next_Action_BrakeHold);
        delay(1000);
        sprintf(str, "Both Motors Reverse %d Rotations", rotations);
        Serial.println(str);
        str[0] = '\0';
        nxshield.bank_b.motorRunRotations(SH_Motor_Both,
                         SH_Direction_Reverse,
                         SH_Speed_Medium,
                         rotations,
                         SH_Completion_Wait_For,
                         SH_Next_Action_BrakeHold);

        Serial.println("Program Finished");

    }

    void
    loop()                        // After the setup the LED blinks to show
                                    // the program is complete
    {
            nxshield.ledSetRGB(8,0,0);   // light on the NXShield LED
        delay(1000);                // wait
            nxshield.ledSetRGB(0,0,0);   // turn off the NXShield LED.
        delay(1000);                // wait
    }
     
     
  12. Palach

    Palach Нуб

    Как разберусь с другими датчиками Lego, о том как совместить с Arduino///Выложу коды в этой теме))
     
  13. XCB

    XCB Гик

    а просто где интересно где покупали плату, и где докупали мотор (в конструкторе их ведь три)?
     
  14. Palach

    Palach Нуб

    Я работаю инженером в доме творчества г.Челябинск... у нас много наборов различного уровня. А эти дополнительные платы заказывали через своих поставщиков, честно не знаю где они их берут))