Здравствуйте многоуважаемые знатоки робототехники!!! Прощу помощи в непростом для меня деле)) Нужно совместить плату Arduino Mega 2560 c NXT датчиками(мотор, датчик касания и т.д) с помощью NxShield-M... Я подключил Arduino с Шилдом, мотор от NXT так же подключил в разъем шилда "Motor-1"... Прошу помощи с кодом, кто сможет написать самый простой код, чтобы мотор вращался то вперед то назад... За ранее спасибо, очень сильно жду помощи от вас
вроде тут есть документация и примеры кода http://www.generationrobots.com/en/401132-nxshield-m-for-arduino-mega-or-adk-mindsensors.html
Arduino компелирует эти примеры с ошибкой,,, мне нужен простой код, на включение мотора и выключение его через 10 секунд к примеру. Может кто нибудь написать буду прямо безумно благодарен
Я по рабочему готовому коду разберусь быстрее на много, я думаю человеку который в этом разбирается не составит труда написать простой скрипт на включение мотора и выключение его
мало у кого есть лего, еще у меньшего числа из них есть NxShield... Исходите из того что вы здесь с этой платой один... на форуме могут подсказать или тыкнуть в документацию, гадать на хрустальном шаре врятли ктото будет. показывайте код и пошибки компиляции
Случайно наткнулся: ROBOTC Arduino NXShield Test 1. Там же есть некая ссылка: Bit Banged I2C Master on ROBOTC for Arduino Возможно то, что вам нужно...
Спасибо всем кто попытался помочь, но как говориться утро вечера мудренее))) разобрался сам. вот готовый код на четыре мотора, уверен кому нибудь точно пригодится Код (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 }
Я работаю инженером в доме творчества г.Челябинск... у нас много наборов различного уровня. А эти дополнительные платы заказывали через своих поставщиков, честно не знаю где они их берут))