Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@0:191698f11ceb, 2010-12-14 (annotated)
- Committer:
- merlinsystemscorp
- Date:
- Tue Dec 14 11:32:52 2010 +0000
- Revision:
- 0:191698f11ceb
Nottingham Lab Warehouse Controller
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| merlinsystemscorp | 0:191698f11ceb | 1 | #include "mbed.h" |
| merlinsystemscorp | 0:191698f11ceb | 2 | |
| merlinsystemscorp | 0:191698f11ceb | 3 | #include "AX12.h" |
| merlinsystemscorp | 0:191698f11ceb | 4 | #include <string> |
| merlinsystemscorp | 0:191698f11ceb | 5 | using namespace std; |
| merlinsystemscorp | 0:191698f11ceb | 6 | |
| merlinsystemscorp | 0:191698f11ceb | 7 | PwmOut act1(p21); |
| merlinsystemscorp | 0:191698f11ceb | 8 | PwmOut act2(p22); |
| merlinsystemscorp | 0:191698f11ceb | 9 | PwmOut led1(LED1); |
| merlinsystemscorp | 0:191698f11ceb | 10 | AX12 myax12(p9, p10, 6); |
| merlinsystemscorp | 0:191698f11ceb | 11 | Serial pc(USBTX, USBRX); |
| merlinsystemscorp | 0:191698f11ceb | 12 | |
| merlinsystemscorp | 0:191698f11ceb | 13 | int command = 0; |
| merlinsystemscorp | 0:191698f11ceb | 14 | #define MAX_BUFFER_SIZE 20 |
| merlinsystemscorp | 0:191698f11ceb | 15 | int bufferCounter = 0; |
| merlinsystemscorp | 0:191698f11ceb | 16 | |
| merlinsystemscorp | 0:191698f11ceb | 17 | string buffer; |
| merlinsystemscorp | 0:191698f11ceb | 18 | string commandBuffer; |
| merlinsystemscorp | 0:191698f11ceb | 19 | bool validPacket = false; |
| merlinsystemscorp | 0:191698f11ceb | 20 | bool notFinished = true; |
| merlinsystemscorp | 0:191698f11ceb | 21 | |
| merlinsystemscorp | 0:191698f11ceb | 22 | void doCommand(string cmdBuffer) |
| merlinsystemscorp | 0:191698f11ceb | 23 | { |
| merlinsystemscorp | 0:191698f11ceb | 24 | //printf("Command received: %s\n\r",cmdBuffer); |
| merlinsystemscorp | 0:191698f11ceb | 25 | |
| merlinsystemscorp | 0:191698f11ceb | 26 | if (commandBuffer.length() == 0) |
| merlinsystemscorp | 0:191698f11ceb | 27 | return; |
| merlinsystemscorp | 0:191698f11ceb | 28 | |
| merlinsystemscorp | 0:191698f11ceb | 29 | int index = commandBuffer.find("="); |
| merlinsystemscorp | 0:191698f11ceb | 30 | |
| merlinsystemscorp | 0:191698f11ceb | 31 | // format should be cmd=value - so check for valid position for the '=' |
| merlinsystemscorp | 0:191698f11ceb | 32 | if (index < 1) |
| merlinsystemscorp | 0:191698f11ceb | 33 | return; |
| merlinsystemscorp | 0:191698f11ceb | 34 | |
| merlinsystemscorp | 0:191698f11ceb | 35 | string cmd = cmdBuffer.substr(0,index); |
| merlinsystemscorp | 0:191698f11ceb | 36 | string value = cmdBuffer.substr(index+1,cmdBuffer.length()-index-1); |
| merlinsystemscorp | 0:191698f11ceb | 37 | |
| merlinsystemscorp | 0:191698f11ceb | 38 | //printf("Cmd: %s\n\r",cmd); |
| merlinsystemscorp | 0:191698f11ceb | 39 | //printf("Value: %s\n\r",value); |
| merlinsystemscorp | 0:191698f11ceb | 40 | |
| merlinsystemscorp | 0:191698f11ceb | 41 | if (cmd=="act1") |
| merlinsystemscorp | 0:191698f11ceb | 42 | { |
| merlinsystemscorp | 0:191698f11ceb | 43 | act1=strtod(value.c_str(),NULL); |
| merlinsystemscorp | 0:191698f11ceb | 44 | led1=act1; |
| merlinsystemscorp | 0:191698f11ceb | 45 | printf("<act1=%s>\n\r",value); |
| merlinsystemscorp | 0:191698f11ceb | 46 | } |
| merlinsystemscorp | 0:191698f11ceb | 47 | if (cmd=="act2") |
| merlinsystemscorp | 0:191698f11ceb | 48 | { |
| merlinsystemscorp | 0:191698f11ceb | 49 | act2=strtod(value.c_str(),NULL); |
| merlinsystemscorp | 0:191698f11ceb | 50 | } |
| merlinsystemscorp | 0:191698f11ceb | 51 | if (cmd=="servo1") |
| merlinsystemscorp | 0:191698f11ceb | 52 | { |
| merlinsystemscorp | 0:191698f11ceb | 53 | myax12.SetGoal(strtol(value.c_str(),NULL,10)); |
| merlinsystemscorp | 0:191698f11ceb | 54 | } |
| merlinsystemscorp | 0:191698f11ceb | 55 | if (cmd=="led1") |
| merlinsystemscorp | 0:191698f11ceb | 56 | { |
| merlinsystemscorp | 0:191698f11ceb | 57 | led1 = strtod(value.c_str(),NULL); |
| merlinsystemscorp | 0:191698f11ceb | 58 | } |
| merlinsystemscorp | 0:191698f11ceb | 59 | else if (cmd == "quit") |
| merlinsystemscorp | 0:191698f11ceb | 60 | { |
| merlinsystemscorp | 0:191698f11ceb | 61 | notFinished = false; |
| merlinsystemscorp | 0:191698f11ceb | 62 | printf("Quitting ....\n\r"); |
| merlinsystemscorp | 0:191698f11ceb | 63 | } |
| merlinsystemscorp | 0:191698f11ceb | 64 | |
| merlinsystemscorp | 0:191698f11ceb | 65 | } |
| merlinsystemscorp | 0:191698f11ceb | 66 | |
| merlinsystemscorp | 0:191698f11ceb | 67 | void serialHandler() |
| merlinsystemscorp | 0:191698f11ceb | 68 | { |
| merlinsystemscorp | 0:191698f11ceb | 69 | char ch = pc.getc(); |
| merlinsystemscorp | 0:191698f11ceb | 70 | |
| merlinsystemscorp | 0:191698f11ceb | 71 | // echo back |
| merlinsystemscorp | 0:191698f11ceb | 72 | pc.putc(ch); |
| merlinsystemscorp | 0:191698f11ceb | 73 | |
| merlinsystemscorp | 0:191698f11ceb | 74 | switch(ch) |
| merlinsystemscorp | 0:191698f11ceb | 75 | { |
| merlinsystemscorp | 0:191698f11ceb | 76 | case '[': |
| merlinsystemscorp | 0:191698f11ceb | 77 | buffer = ""; |
| merlinsystemscorp | 0:191698f11ceb | 78 | validPacket = true; |
| merlinsystemscorp | 0:191698f11ceb | 79 | break; |
| merlinsystemscorp | 0:191698f11ceb | 80 | case ']': |
| merlinsystemscorp | 0:191698f11ceb | 81 | commandBuffer = buffer; |
| merlinsystemscorp | 0:191698f11ceb | 82 | buffer = ""; |
| merlinsystemscorp | 0:191698f11ceb | 83 | validPacket = false; |
| merlinsystemscorp | 0:191698f11ceb | 84 | doCommand(commandBuffer); |
| merlinsystemscorp | 0:191698f11ceb | 85 | break; |
| merlinsystemscorp | 0:191698f11ceb | 86 | default: |
| merlinsystemscorp | 0:191698f11ceb | 87 | if (validPacket) |
| merlinsystemscorp | 0:191698f11ceb | 88 | buffer = buffer + ch; |
| merlinsystemscorp | 0:191698f11ceb | 89 | |
| merlinsystemscorp | 0:191698f11ceb | 90 | } |
| merlinsystemscorp | 0:191698f11ceb | 91 | |
| merlinsystemscorp | 0:191698f11ceb | 92 | } |
| merlinsystemscorp | 0:191698f11ceb | 93 | |
| merlinsystemscorp | 0:191698f11ceb | 94 | void demo() |
| merlinsystemscorp | 0:191698f11ceb | 95 | { |
| merlinsystemscorp | 0:191698f11ceb | 96 | |
| merlinsystemscorp | 0:191698f11ceb | 97 | myax12.SetGoal(80); // go to 60 degrees |
| merlinsystemscorp | 0:191698f11ceb | 98 | act1 = 0; |
| merlinsystemscorp | 0:191698f11ceb | 99 | act2=1; |
| merlinsystemscorp | 0:191698f11ceb | 100 | led1 = 0; |
| merlinsystemscorp | 0:191698f11ceb | 101 | |
| merlinsystemscorp | 0:191698f11ceb | 102 | wait (3.5); |
| merlinsystemscorp | 0:191698f11ceb | 103 | |
| merlinsystemscorp | 0:191698f11ceb | 104 | myax12.SetGoal(200); // go to 240 degrees |
| merlinsystemscorp | 0:191698f11ceb | 105 | act1 = 1; |
| merlinsystemscorp | 0:191698f11ceb | 106 | led1 = .7; |
| merlinsystemscorp | 0:191698f11ceb | 107 | act2=0; |
| merlinsystemscorp | 0:191698f11ceb | 108 | wait (3.5); |
| merlinsystemscorp | 0:191698f11ceb | 109 | |
| merlinsystemscorp | 0:191698f11ceb | 110 | } |
| merlinsystemscorp | 0:191698f11ceb | 111 | |
| merlinsystemscorp | 0:191698f11ceb | 112 | int main() { |
| merlinsystemscorp | 0:191698f11ceb | 113 | |
| merlinsystemscorp | 0:191698f11ceb | 114 | pc.attach(serialHandler); |
| merlinsystemscorp | 0:191698f11ceb | 115 | act1.period_us(100); |
| merlinsystemscorp | 0:191698f11ceb | 116 | act1.pulsewidth_us(10); |
| merlinsystemscorp | 0:191698f11ceb | 117 | act2.period_us(100); |
| merlinsystemscorp | 0:191698f11ceb | 118 | act2.pulsewidth_us(10); |
| merlinsystemscorp | 0:191698f11ceb | 119 | led1.period_us(100); |
| merlinsystemscorp | 0:191698f11ceb | 120 | led1.pulsewidth_us(10); |
| merlinsystemscorp | 0:191698f11ceb | 121 | act1 = 1.0; |
| merlinsystemscorp | 0:191698f11ceb | 122 | act2 = 1.0; |
| merlinsystemscorp | 0:191698f11ceb | 123 | led1 = 0.5; |
| merlinsystemscorp | 0:191698f11ceb | 124 | |
| merlinsystemscorp | 0:191698f11ceb | 125 | printf("Starting..."); |
| merlinsystemscorp | 0:191698f11ceb | 126 | |
| merlinsystemscorp | 0:191698f11ceb | 127 | while (notFinished) |
| merlinsystemscorp | 0:191698f11ceb | 128 | { |
| merlinsystemscorp | 0:191698f11ceb | 129 | } |
| merlinsystemscorp | 0:191698f11ceb | 130 | |
| merlinsystemscorp | 0:191698f11ceb | 131 | printf("Finished..."); |
| merlinsystemscorp | 0:191698f11ceb | 132 | |
| merlinsystemscorp | 0:191698f11ceb | 133 | } |