Final code for our 4180 Drawing Robot!
Dependencies: 4DGL-uLCD-SE gCodeParser mbed
main.cpp@0:40576dfac535, 2014-04-29 (annotated)
- Committer:
- jford38
- Date:
- Tue Apr 29 21:51:29 2014 +0000
- Revision:
- 0:40576dfac535
- Child:
- 1:ad895d72e9ed
Before I fuck all this up.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jford38 | 0:40576dfac535 | 1 | #include "mbed.h" |
jford38 | 0:40576dfac535 | 2 | #include "gparser.h" |
jford38 | 0:40576dfac535 | 3 | #include "MODSERIAL.h" |
jford38 | 0:40576dfac535 | 4 | #include "motor.h" |
jford38 | 0:40576dfac535 | 5 | #include "drawBot.h" |
jford38 | 0:40576dfac535 | 6 | #include "uLCD_4DGL.h" |
jford38 | 0:40576dfac535 | 7 | |
jford38 | 0:40576dfac535 | 8 | #define CMD_LIST_SIZE 512 |
jford38 | 0:40576dfac535 | 9 | |
jford38 | 0:40576dfac535 | 10 | MODSERIAL gpc(USBTX, USBRX); |
jford38 | 0:40576dfac535 | 11 | uLCD_4DGL uLCD(p9, p10, p11); |
jford38 | 0:40576dfac535 | 12 | //G_cmd gcmd_list[CMD_LIST_SIZE]; // buffer to be filled with commands, main program retrieves commands from here |
jford38 | 0:40576dfac535 | 13 | |
jford38 | 0:40576dfac535 | 14 | extern G_cmd* gcmd_list; |
jford38 | 0:40576dfac535 | 15 | extern list_position; |
jford38 | 0:40576dfac535 | 16 | |
jford38 | 0:40576dfac535 | 17 | Motor mL(p29, p30, p26, p27, p28, p25, RIGHT_MOTOR); |
jford38 | 0:40576dfac535 | 18 | Motor mR(p12, p13, p16, p15, p14, p17, LEFT_MOTOR); |
jford38 | 0:40576dfac535 | 19 | DrawBot bot(&mL, &mR, p21, 0.5, 45.125); |
jford38 | 0:40576dfac535 | 20 | |
jford38 | 0:40576dfac535 | 21 | int main() { |
jford38 | 0:40576dfac535 | 22 | |
jford38 | 0:40576dfac535 | 23 | parserInit(); |
jford38 | 0:40576dfac535 | 24 | |
jford38 | 0:40576dfac535 | 25 | int list_pos = fillInCmdList(); |
jford38 | 0:40576dfac535 | 26 | uLCD.printf("%d\r\n",list_pos); |
jford38 | 0:40576dfac535 | 27 | |
jford38 | 0:40576dfac535 | 28 | for(int c=0; c<list_pos; c++) { |
jford38 | 0:40576dfac535 | 29 | G_cmd* next = gcmd_list+c; |
jford38 | 0:40576dfac535 | 30 | uLCD.printf("G:%d X%.2f Y%.2f Z%.2f I%.2f J%.2f\n",next->X, next->Y, next->Z, next->I,next->J,next->F); |
jford38 | 0:40576dfac535 | 31 | wait(10); |
jford38 | 0:40576dfac535 | 32 | uLCD.cls(); |
jford38 | 0:40576dfac535 | 33 | switch(next->G) { |
jford38 | 0:40576dfac535 | 34 | case 0: |
jford38 | 0:40576dfac535 | 35 | case 1: |
jford38 | 0:40576dfac535 | 36 | //Draw a line. |
jford38 | 0:40576dfac535 | 37 | if(next->X != -1 && next->Y != -1) { |
jford38 | 0:40576dfac535 | 38 | bot.line_safe(next->X, next->Y); |
jford38 | 0:40576dfac535 | 39 | } |
jford38 | 0:40576dfac535 | 40 | if(next->Z > 0) { |
jford38 | 0:40576dfac535 | 41 | bot.pen_up(); |
jford38 | 0:40576dfac535 | 42 | }else if(next->Z == 0) { |
jford38 | 0:40576dfac535 | 43 | bot.pen_down(); |
jford38 | 0:40576dfac535 | 44 | } |
jford38 | 0:40576dfac535 | 45 | break; |
jford38 | 0:40576dfac535 | 46 | case 2: |
jford38 | 0:40576dfac535 | 47 | //Draw an arc or something. |
jford38 | 0:40576dfac535 | 48 | //bot->arc(px+i, py+j, next_cmd->X, next_cmd->Z); |
jford38 | 0:40576dfac535 | 49 | break; |
jford38 | 0:40576dfac535 | 50 | case 3: |
jford38 | 0:40576dfac535 | 51 | //Draw a different arc or something. |
jford38 | 0:40576dfac535 | 52 | break; |
jford38 | 0:40576dfac535 | 53 | default: |
jford38 | 0:40576dfac535 | 54 | break; |
jford38 | 0:40576dfac535 | 55 | |
jford38 | 0:40576dfac535 | 56 | } |
jford38 | 0:40576dfac535 | 57 | } |
jford38 | 0:40576dfac535 | 58 | bot.disable(); |
jford38 | 0:40576dfac535 | 59 | } |