Помогите мне разобраться что не так?
- Войдите на сайт для отправки комментариев
Ср, 24/06/2020 - 17:13
// Nunchuk controlled robotic arm by Igor Fonseca Albuquerque // Original Nunchuk library by Robert Eisele: https://www.xarg.org/2016/12/using-a-wii-nunchuk-with-arduino/ //Include libraries #include <Nunchuk.h> #include <Wire.h> #include <Servo.h> //define variables #define SERV1 8 //servo 1 on digital port 8 #define SERV2 9 //servo 2 on digital port 9 #define SERV3 10 //servo 3 on digital port 10 #define SERV4 11 //servo 4 on digital port 11 #define SERV5 12 //servo 5 on digital port 12 #define SERV6 13 //servo 6 on digital port 13 Servo s1; //servo 1 Servo s2; //servo 2 Servo s3; //servo 3 Servo s4; //servo 4 Servo s5; //servo 5 Servo s6; //servo 6 //define starting angle for each servo //choose a safe position to start from //it will try to move instantaniously to that position when powered up! //those angles will depend on the angle of each servo during the assemble int angle1 = 90; //servo 1 current angle int angle2 = 30; //servo 2 current angle int angle3 = 0; //servo 3 current angle int angle4 = 90; //servo 4 current angle int angle5 = 90; //servo 5 current angle int angle6 = 45; //servo 6 current angle int servo1_speed = 3; //servo 1 speed int servo2_speed = 3; //servo 2 speed int servo3_speed = 3; //servo 3 speed int servo4_speed = 1; //servo 4 speed int servo5_speed = 1; //servo 5 speed //define restrictions for each servo //those angles will depend on the angle of each servo during the assemble int angle1min = 0; //servo 1 minimum angle int angle1max = 180; //servo 1 maximum angle int angle2min = 0; //servo 2 minimum angle int angle2max = 180; //servo 2 maximum angle int angle3min = 0; //servo 3 minimum angle int angle3max = 180; //servo 3 maximum angle int angle4min = 0; //servo 4 minimum angle int angle4max = 180; //servo 4 maximum angle int angle5min = 0; //servo 5 minimum angle int angle5max = 180; //servo 5 maximum angle int angle6min = 0; //servo 6 minimum angle int angle6max = 180; //servo 6 maximum angle boolean display_angles = true; //boolean used to update the angle of each servo on Serial Monitor //SETUP void setup() { //attach each servo to a pin and start its position s1.attach(SERV1); s1.write(angle1); s2.attach(SERV2); s2.write(angle2); s3.attach(SERV3); s3.write(angle3); s4.attach(SERV4); s4.write(angle4); s5.attach(SERV5); s5.write(angle5); s6.attach(SERV6); s6.write(angle6); //start serial communication Serial.begin(9600); //start Nunchuk Wire.begin(); nunchuk_init(); } void loop() { //read Nunchuk sensors if (nunchuk_read()) { int x = nunchuk_joystickX(); //joystick X position int y = nunchuk_joystickY(); //joystick Y position boolean z = nunchuk_buttonZ(); //z button status boolean c = nunchuk_buttonC(); //c button status float pitch = nunchuk_pitch(); //pitch angle float roll = nunchuk_roll(); //roll angle //Turn left/right (at a fixed speed) //Turn left if (x > 90) { angle1 -= servo1_speed; display_angles = true; if (angle1 < angle1min) { angle1 = angle1min; } } //Turn right if (x < -90) { angle1 += servo1_speed; display_angles = true; if (angle1 > angle1max) { angle1 = angle1max; } } s1.write(angle1); //update servo position //Move up/down (at a fixed speed) //Move up if (y > 90) { angle3 += servo3_speed; display_angles = true; if (angle3 > angle3max) { angle3 = angle3max; } } //Move down if (y < -90) { angle3 -= servo3_speed; display_angles = true; if (angle3 < angle3min) { angle3 = angle3min; } } s3.write(angle3); //update servo position // Enable accelerometer only when the buttons are pressed // Rotate gripper (only Z button pressed) if (c && !z) { roll = roll * 57.0 + 90.0; //convert do degrees servo5_speed = abs(angle5 - roll)/10 + 1; //speed proportional do the error between actual and desired angle if (roll > angle5) { angle5 += servo5_speed; display_angles = true; } if (roll < angle5) { angle5 -=servo5_speed; display_angles = true; } s5.write(angle5); //update servo position } //Move gripper up/down (only C button pressed) if (z && !c) { pitch = 60.0 - pitch * 57.0; //convert do degrees servo4_speed = abs(angle4 - pitch)/10 + 1; //speed proportional do the error between actual and desired angle if (pitch > angle4) { angle4 += servo4_speed; display_angles = true; } if (pitch < angle4) { angle4 -=servo4_speed; display_angles = true; } s4.write(angle4); //update servo position } //Open/close gripper (both buttons pressed) if(z && c) { s6.write(90); //close gripper display_angles = true; } else { s6.write(45); //open gripper } } //Show position of each servo if (display_angles) { Serial.println("//Current angles:"); Serial.print("Servo #1: "); Serial.println(angle1); Serial.print("Servo #2: "); Serial.println(angle2); Serial.print("Servo #3: "); Serial.println(angle3); Serial.print("Servo #4: "); Serial.println(angle4); Serial.print("Servo #5: "); Serial.println(angle5); Serial.print("Servo #6: "); if (angle6 == 90) { Serial.println("gripper closed"); } else { Serial.println("gripper opened"); } display_angles = false; } }
https://www.sainsmart.com/blogs/projects/nunchuk-controlled-robotic-arm-with-arduino
А во сколько?
Короче я не до конца разобрался как тут все делать .
Я начал по нормальному заниматься Ардуино где-то месяц, а робо-рука уже давно стояла без дела,можете подсказать что не так?
Вроде ошибка в nunchuk_init...
Вы сами не понимаете, что ваш вопрос смысла не имеет?
Покрутите сначала одной сервой, а потом и с бОльшим количеством все получится. И с библиотекой nunchuk разберитесь и дайте ссылку на нее.
Я не понимаю зачем используется эта часть
Wire.begin();
nunchuk_init();
строчка 77 и 78 при проверке в Arduino IDE выдается ошибка на 78 строчке
Я не понимаю зачем используется эта часть
Wire.begin();
nunchuk_init();
строчка 77 и 78 при проверке в Arduino IDE выдается ошибка на 78 строчке
Посмотрите здесь - там примеры использования и сама библиотека.
И, кстати, чего за ошибки? Мы гадать должны?
А собственно "Что не так?"
Вы расскажете нам, что у Вас за проблема? Или мы должны сами догадаться?
Извиняюсь за потраченное время, мне ваши ответы пока не понадобятся , нашел несколько сайтов про это, пока почитаю про это сам