Mark Norman / Mbed 2 deprecated Nottingham

Dependencies:   mbed

Committer:
merlinsystemscorp
Date:
Tue Dec 14 11:32:52 2010 +0000
Revision:
0:191698f11ceb
Nottingham Lab Warehouse Controller

Who changed what in which revision?

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