Giancarlo R.
/
RoboArm
Robo class for controlling Lynxmotion AL5A Arm
robo.cpp@1:678d09a36fcb, 2011-10-13 (annotated)
- Committer:
- gvalentin3
- Date:
- Thu Oct 13 22:11:11 2011 +0000
- Revision:
- 1:678d09a36fcb
- Parent:
- 0:e9452b5dc9d2
Version #2
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
gvalentin3 | 0:e9452b5dc9d2 | 1 | //Robo class implementation for controlling robotic arm |
gvalentin3 | 0:e9452b5dc9d2 | 2 | //Created 10/12/2011 by MLD 427 |
gvalentin3 | 0:e9452b5dc9d2 | 3 | |
gvalentin3 | 0:e9452b5dc9d2 | 4 | #include "robo.h" |
gvalentin3 | 0:e9452b5dc9d2 | 5 | #include "mbed.h" |
gvalentin3 | 0:e9452b5dc9d2 | 6 | robo::robo(PinName s, PinName b, PinName e, PinName w, PinName c){ |
gvalentin3 | 0:e9452b5dc9d2 | 7 | spin = new PwmOut(s); |
gvalentin3 | 0:e9452b5dc9d2 | 8 | base = new PwmOut(b); |
gvalentin3 | 0:e9452b5dc9d2 | 9 | elbow = new PwmOut(e); |
gvalentin3 | 0:e9452b5dc9d2 | 10 | wrist = new PwmOut(w); |
gvalentin3 | 0:e9452b5dc9d2 | 11 | claw = new PwmOut(c); |
gvalentin3 | 0:e9452b5dc9d2 | 12 | spin->period_ms(20); |
gvalentin3 | 0:e9452b5dc9d2 | 13 | base->period_ms(20); |
gvalentin3 | 0:e9452b5dc9d2 | 14 | elbow->period_ms(20); |
gvalentin3 | 0:e9452b5dc9d2 | 15 | wrist->period_ms(20); |
gvalentin3 | 0:e9452b5dc9d2 | 16 | claw->period_ms(20); |
gvalentin3 | 0:e9452b5dc9d2 | 17 | } |
gvalentin3 | 0:e9452b5dc9d2 | 18 | |
gvalentin3 | 0:e9452b5dc9d2 | 19 | void robo::write(float percent,int servo){ |
gvalentin3 | 0:e9452b5dc9d2 | 20 | if(percent > 100) |
gvalentin3 | 0:e9452b5dc9d2 | 21 | percent = 1; |
gvalentin3 | 0:e9452b5dc9d2 | 22 | if(percent<0) |
gvalentin3 | 0:e9452b5dc9d2 | 23 | percent = 0; |
gvalentin3 | 0:e9452b5dc9d2 | 24 | switch(servo){ |
gvalentin3 | 0:e9452b5dc9d2 | 25 | case(0): |
gvalentin3 | 0:e9452b5dc9d2 | 26 | spin->pulsewidth_us(percent * 10 +1000); |
gvalentin3 | 0:e9452b5dc9d2 | 27 | break; |
gvalentin3 | 0:e9452b5dc9d2 | 28 | case(1): |
gvalentin3 | 0:e9452b5dc9d2 | 29 | base->pulsewidth_us(percent * 10 +1000); |
gvalentin3 | 0:e9452b5dc9d2 | 30 | break; |
gvalentin3 | 0:e9452b5dc9d2 | 31 | case(2): |
gvalentin3 | 0:e9452b5dc9d2 | 32 | elbow->pulsewidth_us(percent * 10 +1000); |
gvalentin3 | 0:e9452b5dc9d2 | 33 | break; |
gvalentin3 | 0:e9452b5dc9d2 | 34 | case(3): |
gvalentin3 | 0:e9452b5dc9d2 | 35 | wrist->pulsewidth_us(percent * 10 +1000); |
gvalentin3 | 0:e9452b5dc9d2 | 36 | break; |
gvalentin3 | 0:e9452b5dc9d2 | 37 | case(4): |
gvalentin3 | 0:e9452b5dc9d2 | 38 | claw->pulsewidth_us(percent * 10 +1000); |
gvalentin3 | 0:e9452b5dc9d2 | 39 | break; |
gvalentin3 | 0:e9452b5dc9d2 | 40 | } |
gvalentin3 | 0:e9452b5dc9d2 | 41 | |
gvalentin3 | 0:e9452b5dc9d2 | 42 | } |
gvalentin3 | 0:e9452b5dc9d2 | 43 | |
gvalentin3 | 0:e9452b5dc9d2 | 44 | void robo::writeSpin(float percent){ |
gvalentin3 | 0:e9452b5dc9d2 | 45 | write(percent,0); |
gvalentin3 | 0:e9452b5dc9d2 | 46 | } |
gvalentin3 | 0:e9452b5dc9d2 | 47 | void robo::writeBase(float percent){ |
gvalentin3 | 0:e9452b5dc9d2 | 48 | if(percent >50) |
gvalentin3 | 0:e9452b5dc9d2 | 49 | percent = 50; |
gvalentin3 | 0:e9452b5dc9d2 | 50 | write(percent,1); |
gvalentin3 | 0:e9452b5dc9d2 | 51 | } |
gvalentin3 | 0:e9452b5dc9d2 | 52 | void robo::writeElbow(float percent){ |
gvalentin3 | 0:e9452b5dc9d2 | 53 | write(percent,2); |
gvalentin3 | 0:e9452b5dc9d2 | 54 | } |
gvalentin3 | 0:e9452b5dc9d2 | 55 | void robo::writeWrist(float percent){ |
gvalentin3 | 0:e9452b5dc9d2 | 56 | if(percent>60) |
gvalentin3 | 0:e9452b5dc9d2 | 57 | percent = 60; |
gvalentin3 | 0:e9452b5dc9d2 | 58 | write(percent,3); |
gvalentin3 | 0:e9452b5dc9d2 | 59 | } |
gvalentin3 | 0:e9452b5dc9d2 | 60 | void robo::writeClaw(float percent){ |
gvalentin3 | 0:e9452b5dc9d2 | 61 | write(percent,4); |
gvalentin3 | 0:e9452b5dc9d2 | 62 | } |
gvalentin3 | 0:e9452b5dc9d2 | 63 | void robo::turnCenter(){ |
gvalentin3 | 0:e9452b5dc9d2 | 64 | writeBase(50); |
gvalentin3 | 0:e9452b5dc9d2 | 65 | } |
gvalentin3 | 0:e9452b5dc9d2 | 66 | |
gvalentin3 | 0:e9452b5dc9d2 | 67 | void robo::openClaw(){ |
gvalentin3 | 0:e9452b5dc9d2 | 68 | writeClaw(50); |
gvalentin3 | 0:e9452b5dc9d2 | 69 | } |
gvalentin3 | 0:e9452b5dc9d2 | 70 | |
gvalentin3 | 0:e9452b5dc9d2 | 71 |