Robo class for controlling Lynxmotion AL5A Arm

Dependencies:   mbed

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?

UserRevisionLine numberNew 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