Fx0 hackathon team4

Dependencies:   NySNICInterface mbed-rtos mbed

Fork of RESTServerSample by KDDI Fx0 hackathon

Committer:
oks486
Date:
Sun Feb 15 02:55:36 2015 +0000
Revision:
4:99a67256b765
Parent:
2:2f187e09bdb0
Child:
5:70c9f6045f2d
add motor control with pwm

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yi 2:2f187e09bdb0 1 #include "control_motors.h"
yi 2:2f187e09bdb0 2
yi 2:2f187e09bdb0 3 void parse_request(char *request){
yi 2:2f187e09bdb0 4
yi 2:2f187e09bdb0 5 bool errorFlag = false;
yi 2:2f187e09bdb0 6
yi 2:2f187e09bdb0 7 char* str = strtok(request+1,"/");
yi 2:2f187e09bdb0 8
yi 2:2f187e09bdb0 9 if(strcmp(str, "api") == 0){
yi 2:2f187e09bdb0 10 str = strtok(NULL,"/");
yi 2:2f187e09bdb0 11
yi 2:2f187e09bdb0 12 if(strcmp(str, "motor") == 0){
yi 2:2f187e09bdb0 13 str = strtok(NULL,"?");
yi 2:2f187e09bdb0 14
yi 2:2f187e09bdb0 15 if(strcmp(str, "right") == 0){
yi 2:2f187e09bdb0 16
yi 2:2f187e09bdb0 17 str = strtok(NULL,"="); //"speed"
yi 2:2f187e09bdb0 18 str = strtok(NULL,""); //
yi 2:2f187e09bdb0 19
yi 2:2f187e09bdb0 20 int speed = atoi(str);
yi 2:2f187e09bdb0 21
yi 2:2f187e09bdb0 22 // motor right
yi 2:2f187e09bdb0 23 move(MOTOR_RIGHT, speed);
yi 2:2f187e09bdb0 24
yi 2:2f187e09bdb0 25 }else if(strcmp(str, "left") == 0){
yi 2:2f187e09bdb0 26
yi 2:2f187e09bdb0 27 str = strtok(NULL,"="); //"speed"
yi 2:2f187e09bdb0 28 str = strtok(NULL,""); //
yi 2:2f187e09bdb0 29
yi 2:2f187e09bdb0 30 int speed = atoi(str);
yi 2:2f187e09bdb0 31
yi 2:2f187e09bdb0 32 // motor left
yi 2:2f187e09bdb0 33 move(MOTOR_LEFT, speed);
yi 2:2f187e09bdb0 34
yi 2:2f187e09bdb0 35 }else{
yi 2:2f187e09bdb0 36 errorFlag = true;
yi 2:2f187e09bdb0 37 }
yi 2:2f187e09bdb0 38
yi 2:2f187e09bdb0 39 }else if(strcmp(str, "tail") == 0){
yi 2:2f187e09bdb0 40 str = strtok(NULL,"/");
yi 2:2f187e09bdb0 41 if(strcmp(str, "swing") == 0){
yi 2:2f187e09bdb0 42 str = strtok(NULL,"/");
yi 2:2f187e09bdb0 43 if(strcmp(str, "start") == 0){
yi 2:2f187e09bdb0 44
yi 2:2f187e09bdb0 45 // tail start
yi 2:2f187e09bdb0 46 start_shaking_tail();
yi 2:2f187e09bdb0 47
yi 2:2f187e09bdb0 48 }else if(strcmp(str, "end") == 0){
yi 2:2f187e09bdb0 49
yi 2:2f187e09bdb0 50 // tail end
yi 2:2f187e09bdb0 51 stop_shaking_tail();
yi 2:2f187e09bdb0 52
yi 2:2f187e09bdb0 53 }else{
yi 2:2f187e09bdb0 54 errorFlag = true;
yi 2:2f187e09bdb0 55 }
yi 2:2f187e09bdb0 56 }else{
yi 2:2f187e09bdb0 57 errorFlag = true;
yi 2:2f187e09bdb0 58 }
yi 2:2f187e09bdb0 59 }
yi 2:2f187e09bdb0 60 }
yi 2:2f187e09bdb0 61
yi 2:2f187e09bdb0 62 if(errorFlag){
yi 2:2f187e09bdb0 63 printf("error: request=%s\n", request);
yi 2:2f187e09bdb0 64 }
yi 2:2f187e09bdb0 65 }
yi 2:2f187e09bdb0 66
yi 2:2f187e09bdb0 67
yi 2:2f187e09bdb0 68 void move(int motor_id, int speed){
yi 2:2f187e09bdb0 69 if(motor_id == MOTOR_RIGHT){
yi 2:2f187e09bdb0 70 printf("motor right speed = %d\n", speed);
yi 2:2f187e09bdb0 71
yi 2:2f187e09bdb0 72 // TODO
yi 2:2f187e09bdb0 73 // モーター制御の処理
oks486 4:99a67256b765 74 if(speed > 0){
oks486 4:99a67256b765 75 mPwmMotorR = (float)speed/255;
oks486 4:99a67256b765 76 mDoutMotorR1 = 1;
oks486 4:99a67256b765 77 mDoutMotorR2 = 0;
oks486 4:99a67256b765 78 }else if (speed < 0){
oks486 4:99a67256b765 79 mPwmMotorR = -(float)speed/255;
oks486 4:99a67256b765 80 mDoutMotorR1 = 0;
oks486 4:99a67256b765 81 mDoutMotorR2 = 1;
oks486 4:99a67256b765 82 }else{
oks486 4:99a67256b765 83 mPwmMotorR = 0;
oks486 4:99a67256b765 84 mDoutMotorR1 = 0;
oks486 4:99a67256b765 85 mDoutMotorR2 = 0;
oks486 4:99a67256b765 86 }
oks486 4:99a67256b765 87
yi 2:2f187e09bdb0 88 }else if(motor_id == MOTOR_LEFT){
yi 2:2f187e09bdb0 89 printf("motor left speed = %d\n", speed);
yi 2:2f187e09bdb0 90
yi 2:2f187e09bdb0 91 // TODO
yi 2:2f187e09bdb0 92 // モーター制御の処理
oks486 4:99a67256b765 93 if(speed > 0){
oks486 4:99a67256b765 94 mPwmMotorL = (float)speed/255;
oks486 4:99a67256b765 95 mDoutMotorL1 = 1;
oks486 4:99a67256b765 96 mDoutMotorL2 = 0;
oks486 4:99a67256b765 97 }else if (speed < 0){
oks486 4:99a67256b765 98 mPwmMotorL = -(float)speed/255;
oks486 4:99a67256b765 99 mDoutMotorL1 = 0;
oks486 4:99a67256b765 100 mDoutMotorL2 = 1;
oks486 4:99a67256b765 101 }else{
oks486 4:99a67256b765 102 mPwmMotorL = 0.0;
oks486 4:99a67256b765 103 mDoutMotorL1 = 0;
oks486 4:99a67256b765 104 mDoutMotorL2 = 0;
oks486 4:99a67256b765 105 }
oks486 4:99a67256b765 106
yi 2:2f187e09bdb0 107 }
yi 2:2f187e09bdb0 108 }
yi 2:2f187e09bdb0 109
yi 2:2f187e09bdb0 110
yi 2:2f187e09bdb0 111 void start_shaking_tail(){
yi 2:2f187e09bdb0 112 printf("start_shaking_tail\n");
yi 2:2f187e09bdb0 113
yi 2:2f187e09bdb0 114 // TODO
yi 2:2f187e09bdb0 115 // モーター制御の処理
oks486 4:99a67256b765 116 mPwmMotorTail = 0.8;
oks486 4:99a67256b765 117 mDoutMotorTail1 = 1;
oks486 4:99a67256b765 118 mDoutMotorTail2 = 0;
oks486 4:99a67256b765 119
yi 2:2f187e09bdb0 120 }
yi 2:2f187e09bdb0 121
yi 2:2f187e09bdb0 122
yi 2:2f187e09bdb0 123 void stop_shaking_tail(){
yi 2:2f187e09bdb0 124 printf("stop_shaking_tail\n");
yi 2:2f187e09bdb0 125
yi 2:2f187e09bdb0 126 // TODO
yi 2:2f187e09bdb0 127 // モーター制御の処理
oks486 4:99a67256b765 128 mPwmMotorTail = 0.0;
oks486 4:99a67256b765 129 mDoutMotorTail1 = 0;
oks486 4:99a67256b765 130 mDoutMotorTail2 = 0;
oks486 4:99a67256b765 131
yi 2:2f187e09bdb0 132 }