The intent of this project is to use and learn, inverse kinematics, pid control of position, touch control using smartgpu_v1 board for viewing data or debug messages while moving a 4 DOF robotic arm.

Dependencies:   AX12 InversKinem PIDPositionController SMARTGPU SerialHalfDuplex mbed

http://mbed.org/users/aimen/notebook/4dofroboticarmax12_lpc1768-with-smartgpu/

Committer:
aimen
Date:
Tue Apr 01 07:29:17 2014 +0000
Revision:
2:de8b38a39938
Parent:
0:91d276232027
Child:
3:41b605f9cdd5
all five servos working

Who changed what in which revision?

UserRevisionLine numberNew contents of line
aimen 0:91d276232027 1 #include "mbed.h"
aimen 0:91d276232027 2 #include "AX12.h"
aimen 0:91d276232027 3 #include "SMARTGPU.h"
aimen 0:91d276232027 4
aimen 0:91d276232027 5
aimen 0:91d276232027 6 SMARTGPU lcd(p28,p27,p26); //(TX,RX,Reset);
aimen 0:91d276232027 7 DigitalOut myled1(LED1);
aimen 0:91d276232027 8 DigitalOut myled2(LED2);
aimen 0:91d276232027 9 DigitalOut myled3(LED3);
aimen 0:91d276232027 10 DigitalOut myled4(LED4);
aimen 0:91d276232027 11 AX12 myax12_1(p9,p10,1); //(TX,RX, ID of servo);
aimen 2:de8b38a39938 12 AX12 myax12_2(p9,p10,2); //(TX,RX, ID of servo);
aimen 2:de8b38a39938 13 AX12 myax12_3(p9,p10,3); //(TX,RX, ID of servo);
aimen 2:de8b38a39938 14 AX12 myax12_4(p9,p10,4); //(TX,RX, ID of servo);
aimen 2:de8b38a39938 15 AX12 myax12_5(p9,p10,5); //(TX,RX, ID of servo);
aimen 0:91d276232027 16
aimen 0:91d276232027 17 int main() {
aimen 0:91d276232027 18
aimen 0:91d276232027 19 lcd.reset(); //physically reset SMARTGPU
aimen 0:91d276232027 20 lcd.start(); //initialize the SMARTGPU processor
aimen 0:91d276232027 21 lcd.baudChange(1000000); //set high baud for fast drawing
aimen 0:91d276232027 22
aimen 0:91d276232027 23 while(1) {
aimen 0:91d276232027 24
aimen 0:91d276232027 25 myled1 = 1;
aimen 2:de8b38a39938 26 lcd.string(10,10,300,220,YELLOW,FONT3,TRANS,"Before set goal 150"); //write a string on the screen
aimen 2:de8b38a39938 27 myax12_1.SetGoal(150); // go to 150 degrees
aimen 2:de8b38a39938 28 myax12_2.SetGoal(150); // go to 150 degrees
aimen 2:de8b38a39938 29 myax12_3.SetGoal(150); // go to 150 degrees
aimen 2:de8b38a39938 30 myax12_4.SetGoal(150); // go to 150 degrees
aimen 2:de8b38a39938 31 myax12_5.SetGoal(290); // go to 150 degrees
aimen 2:de8b38a39938 32 lcd.string(10,70,300,220,YELLOW,FONT3,TRANS,"after goal 150"); //write a string on the screen
aimen 0:91d276232027 33 wait_ms(1000);
aimen 2:de8b38a39938 34 lcd.erase();
aimen 0:91d276232027 35 myled1 = 0;
aimen 0:91d276232027 36 myled4 = 1;
aimen 2:de8b38a39938 37 lcd.string(10,10,300,220,YELLOW,FONT3,TRANS,"Before set goal fold up"); //write a string on the screen
aimen 2:de8b38a39938 38 //myax12_1.SetGoal(300); // go to 150 degrees
aimen 2:de8b38a39938 39 myax12_2.SetGoal(225); // go to 150 degrees
aimen 2:de8b38a39938 40 myax12_3.SetGoal(0); // go to 150 degrees
aimen 2:de8b38a39938 41 myax12_4.SetGoal(90); // go to 150 degrees
aimen 2:de8b38a39938 42 myax12_5.SetGoal(250); // go to 150 degrees
aimen 2:de8b38a39938 43 lcd.string(10,70,300,220,YELLOW,FONT3,TRANS,"after goal fold up"); //write a string on the screen
aimen 0:91d276232027 44 wait_ms(1000);
aimen 2:de8b38a39938 45 lcd.erase();
aimen 0:91d276232027 46 myled4 = 0;
aimen 0:91d276232027 47 }//end of main while loop
aimen 0:91d276232027 48 }