P2 SCARA does tower
iseries
Posts: 1,495
I converted my P1 SCARA code over to the P2.
Had to make a couple of changes to get the code to work since smart pins were needed and cog_run was different on the P2.
I also used my P2Ex expansion plugs to work with my Plug and Play modules.
I have a video of it moving the SCARA about picking up pieces that are 5mm thick.
Here is the C code that move the SCARA:
I have created several libraries for devices used on the P2. Custom P2 Libraries
Here is a video of SCARA doing the Tower: P2 SCARA
Mike
Had to make a couple of changes to get the code to work since smart pins were needed and cog_run was different on the P2.
I also used my P2Ex expansion plugs to work with my Plug and Play modules.
I have a video of it moving the SCARA about picking up pieces that are 5mm thick.
Here is the C code that move the SCARA:
#include <stdio.h> #include <propeller.h> #include "JSON.h" #include "step.h" #include "servos.h" void doClaw(void *); void setAngles(int, int, int); void Claw(int); void OpenClose(int); #define ENABLEA 8 #define STEPA 9 #define DIRECTIONA 10 #define ENABLEB 11 #define STEPB 12 #define DIRECTIONB 13 #define ENABLEC 16 #define STEPC 17 #define DIRECTIONC 18 #define SERVO1 14 #define SERVO2 15 int Steps_s, Steps_e, Steps_h; int ElbowOffset; volatile int CW; char Buffer[256]; char *x; int Motor_s, Motor_e, Motor_h; int Stack[50]; int main(int argc, char**argv) { int i, j; int e, s, c, h; Motor_s = Step_Start(ENABLEA, DIRECTIONA, STEPA); Motor_e = Step_Start(ENABLEB, DIRECTIONB, STEPB); Motor_h = Step_Start(ENABLEC, DIRECTIONC, STEPC); Servo_Enable(SERVO1, 1500, 20000); Servo_Enable(SERVO2, 1500, 20000); _cogstart(doClaw, NULL, Stack, 40); _waitms(1000); Claw(0); OpenClose(0); printf("Ready\n"); while (1) { getStr(Buffer, 100); json_init(Buffer); x = json_find("Claw"); c = atoi(x); x = json_find("Elbow"); e = atoi(x); x = json_find("Height"); h = atoi(x); x = json_find("OpenClose"); i = atoi(x); x = json_find("Shoulder"); s = atoi(x); setAngles(s, e, h); Claw(c); OpenClose(i); Step_Wait(); printf(Buffer); printf("\n"); } } void OpenClose(int v) { if (v) Servo_Set(SERVO2, 1500); else Servo_Set(SERVO2, 1000); } void Claw(int a) { CW = a * 12; } void doClaw(void *par) { int c; c = 0; CW = 0; while (1) { if (c > CW) c--; if (c < CW) c++; Servo_Set(SERVO1, 1550 + c); usleep(1000); } } void setAngles(int s, int e, int h) { int offset; int sa, ea; offset = s * 35; offset = offset - ElbowOffset; ElbowOffset = ElbowOffset + offset; sa = s * 39; sa = sa - Steps_s; Steps_s = Steps_s + sa; ea = e * 64; ea = ea - Steps_e; Steps_e = Steps_e + ea + ElbowOffset; Steps_h = -h * 400; Step_Step(Motor_e, Steps_e); Step_Step(Motor_h, Steps_h); Step_Step(Motor_s, Steps_s); usleep(100); }
I have created several libraries for devices used on the P2. Custom P2 Libraries
Here is a video of SCARA doing the Tower: P2 SCARA
Mike
Comments