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/
main.cpp@2:de8b38a39938, 2014-04-01 (annotated)
- 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?
User | Revision | Line number | New 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 | } |