inka
19.02.2019, 18:14
hallo allerseits,
ich habe mir den billig-robot-arm (https://www.banggood.com/Mearm-DIY-Mini-Colorful-Industrial-Robot-Arm-Rotating-Mechanical-Acrylic-Pocket-Robotic-Arm-p-1308700.html?utm_source=google&utm_medium=cpc_ods&utm_campaign=auto2-sdsrm-ea4&utm_content=arvin&ad_id=325127034188&gclid=CjwKCAiA767jBRBqEiwAGdAOry3uWgVgFV0jZlwTx91V QQs6FF1_m4_sI9fwMp9qIea99iZMeBC2MxoC1uYQAvD_BwE&ID=226&cur_warehouse=CN) angeschafft, die servos sollen über die 12bit-servo-treiber-platine (https://de.banggood.com/PCA9685-16-Channel-12-bit-PWM-Servo-Motor-Driver-I2C-Module-For-Arduino-Robot-p-1170343.html?gmcCountry=DE¤cy=EUR&createTmp=1&utm_source=googleshopping&utm_medium=cpc_bgcs&utm_content=zouzou&utm_campaign=pla-deg-rm-all-purchase-pc&cur_warehouse=CN) betrieben werden, alles funktioniert in ansätzen:
34013
der arm ruckelt aber ziemlich...
Da suche ich nun nach lösungsansätzen, dabei habe ich mir auch verschiedene beispiele aus der adafruit lib angeschaut, z.b. dieses hier:
/* meArm_Adafruit IK joysticks - York Hackspace May 2014
* Using inverse kinematics with joysticks
* Uses two analogue joystcks (two pots each)
* First stick moves gripper forwards, backwards, left and right
* Second stick moves gripper up, down, and closes and opens.
*
* I used Sparkfun thumbstick breakout boards, oriented 'upside down'.
*
* Pins:
* Arduino Stick1 Stick2 PWMServo
* GND GND GND GND
* 5V VCC VCC VCC & V+
* A0 HOR
* A1 VER
* A2 HOR
* A3 VER
* A4 SDA
* A5 SCL
*
* The servos attach to the first block of four servo connections on
* the Adafruit board, brown wire at the bottom, yellow wire at the top.
* Adafruit Servo
* 0 Base
* 1 Shoulder (right)
* 2 Elbow (left)
* 3 Gripper
*
* You can attach to a different block of four by changing the 'begin' call
* to specify a block 0-3, e.g. to use the second block call arm.begin(1);
* - to mirror movements to all 4 blocks, call arm.begin(-1);
*/
#include "meArm_Adafruit.h"
#include <Adafruit_PWMServoDriver.h>
#include <Wire.h>
int xdirPin = 0;
int ydirPin = 1;
int zdirPin = 3;
int gdirPin = 2;
meArm arm;
void setup() {
arm.begin();
}
void loop() {
float dx = map(analogRead(xdirPin), 0, 1023, -5.0, 5.0);
float dy = map(analogRead(ydirPin), 0, 1023, 5.0, -5.0);
float dz = map(analogRead(zdirPin), 0, 1023, 5.0, -5.0);
float dg = map(analogRead(gdirPin), 0, 1023, 5.0, -5.0);
if (abs(dx) < 1.5) dx = 0;
if (abs(dy) < 1.5) dy = 0;
if (abs(dz) < 1.5) dz = 0;
if (!(dx == 0 && dy == 0 && dz == 0))
arm.goDirectlyTo(arm.getX() + dx, arm.getY() + dy, arm.getZ() + dz);
if (dg < -3.0)
arm.closeGripper();
else if (dg > 3.0)
arm.openGripper();
delay(50);
}
die/den joystick (selbstgebaut) muss ich an die pins A0 bis A5 des arduino anschliessen um den sketch ausprobieren zu können. Wie man im bild sehen kann, hat der roboter schon einiges "onboard" und daher sind einige der arduino mega 2560 schon belegt, z.b. ein paar der im fraglichen sketch verwendeten (a0 und A3). Die hier verwendeten libs ( meArm_Adafruit.h bzw. Adafruit_PWMServoDriver.h) wie auch die *.cpp dateien habe ich mir angeschaut, ich finde einfach die stelle nicht wo die pins A0 bis A5 (aus dem sketch) abgefragt werden? Hat sich schon jemand damit beschäftigt?
wäre super...
ich habe mir den billig-robot-arm (https://www.banggood.com/Mearm-DIY-Mini-Colorful-Industrial-Robot-Arm-Rotating-Mechanical-Acrylic-Pocket-Robotic-Arm-p-1308700.html?utm_source=google&utm_medium=cpc_ods&utm_campaign=auto2-sdsrm-ea4&utm_content=arvin&ad_id=325127034188&gclid=CjwKCAiA767jBRBqEiwAGdAOry3uWgVgFV0jZlwTx91V QQs6FF1_m4_sI9fwMp9qIea99iZMeBC2MxoC1uYQAvD_BwE&ID=226&cur_warehouse=CN) angeschafft, die servos sollen über die 12bit-servo-treiber-platine (https://de.banggood.com/PCA9685-16-Channel-12-bit-PWM-Servo-Motor-Driver-I2C-Module-For-Arduino-Robot-p-1170343.html?gmcCountry=DE¤cy=EUR&createTmp=1&utm_source=googleshopping&utm_medium=cpc_bgcs&utm_content=zouzou&utm_campaign=pla-deg-rm-all-purchase-pc&cur_warehouse=CN) betrieben werden, alles funktioniert in ansätzen:
34013
der arm ruckelt aber ziemlich...
Da suche ich nun nach lösungsansätzen, dabei habe ich mir auch verschiedene beispiele aus der adafruit lib angeschaut, z.b. dieses hier:
/* meArm_Adafruit IK joysticks - York Hackspace May 2014
* Using inverse kinematics with joysticks
* Uses two analogue joystcks (two pots each)
* First stick moves gripper forwards, backwards, left and right
* Second stick moves gripper up, down, and closes and opens.
*
* I used Sparkfun thumbstick breakout boards, oriented 'upside down'.
*
* Pins:
* Arduino Stick1 Stick2 PWMServo
* GND GND GND GND
* 5V VCC VCC VCC & V+
* A0 HOR
* A1 VER
* A2 HOR
* A3 VER
* A4 SDA
* A5 SCL
*
* The servos attach to the first block of four servo connections on
* the Adafruit board, brown wire at the bottom, yellow wire at the top.
* Adafruit Servo
* 0 Base
* 1 Shoulder (right)
* 2 Elbow (left)
* 3 Gripper
*
* You can attach to a different block of four by changing the 'begin' call
* to specify a block 0-3, e.g. to use the second block call arm.begin(1);
* - to mirror movements to all 4 blocks, call arm.begin(-1);
*/
#include "meArm_Adafruit.h"
#include <Adafruit_PWMServoDriver.h>
#include <Wire.h>
int xdirPin = 0;
int ydirPin = 1;
int zdirPin = 3;
int gdirPin = 2;
meArm arm;
void setup() {
arm.begin();
}
void loop() {
float dx = map(analogRead(xdirPin), 0, 1023, -5.0, 5.0);
float dy = map(analogRead(ydirPin), 0, 1023, 5.0, -5.0);
float dz = map(analogRead(zdirPin), 0, 1023, 5.0, -5.0);
float dg = map(analogRead(gdirPin), 0, 1023, 5.0, -5.0);
if (abs(dx) < 1.5) dx = 0;
if (abs(dy) < 1.5) dy = 0;
if (abs(dz) < 1.5) dz = 0;
if (!(dx == 0 && dy == 0 && dz == 0))
arm.goDirectlyTo(arm.getX() + dx, arm.getY() + dy, arm.getZ() + dz);
if (dg < -3.0)
arm.closeGripper();
else if (dg > 3.0)
arm.openGripper();
delay(50);
}
die/den joystick (selbstgebaut) muss ich an die pins A0 bis A5 des arduino anschliessen um den sketch ausprobieren zu können. Wie man im bild sehen kann, hat der roboter schon einiges "onboard" und daher sind einige der arduino mega 2560 schon belegt, z.b. ein paar der im fraglichen sketch verwendeten (a0 und A3). Die hier verwendeten libs ( meArm_Adafruit.h bzw. Adafruit_PWMServoDriver.h) wie auch die *.cpp dateien habe ich mir angeschaut, ich finde einfach die stelle nicht wo die pins A0 bis A5 (aus dem sketch) abgefragt werden? Hat sich schon jemand damit beschäftigt?
wäre super...