Code for Mbed Receiver for the Follow My Eye Project

Dependencies:   mbed

Committer:
pramodnataraja
Date:
Wed Dec 14 04:39:29 2011 +0000
Revision:
0:b76f98d1556b
Version 1.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
pramodnataraja 0:b76f98d1556b 1 #include "mbed.h"
pramodnataraja 0:b76f98d1556b 2
pramodnataraja 0:b76f98d1556b 3 #define FORWARD 0
pramodnataraja 0:b76f98d1556b 4 #define REVERSE 1
pramodnataraja 0:b76f98d1556b 5
pramodnataraja 0:b76f98d1556b 6 #define ON_OFF '0'
pramodnataraja 0:b76f98d1556b 7 #define FRONT '1'
pramodnataraja 0:b76f98d1556b 8 #define BACK '2'
pramodnataraja 0:b76f98d1556b 9 #define LEFT '3'
pramodnataraja 0:b76f98d1556b 10 #define RIGHT '4'
pramodnataraja 0:b76f98d1556b 11 #define HALF_FRONT_RIGHT '5'
pramodnataraja 0:b76f98d1556b 12 #define HALF_FRONT_LEFT '6'
pramodnataraja 0:b76f98d1556b 13 #define HALF_BACK_RIGHT '7'
pramodnataraja 0:b76f98d1556b 14 #define HALF_BACK_LEFT '8'
pramodnataraja 0:b76f98d1556b 15
pramodnataraja 0:b76f98d1556b 16 /********************H-Bridge pins*****************/
pramodnataraja 0:b76f98d1556b 17 DigitalOut Ain1(p6);
pramodnataraja 0:b76f98d1556b 18 DigitalOut Ain2(p5);
pramodnataraja 0:b76f98d1556b 19 DigitalOut Bin1(p7);
pramodnataraja 0:b76f98d1556b 20 DigitalOut Bin2(p8);
pramodnataraja 0:b76f98d1556b 21 PwmOut motorA(p22);
pramodnataraja 0:b76f98d1556b 22 PwmOut motorB(p23);
pramodnataraja 0:b76f98d1556b 23
pramodnataraja 0:b76f98d1556b 24 /********************X-Bee Configuration*****************/
pramodnataraja 0:b76f98d1556b 25 Serial xbee(p9,p10);
pramodnataraja 0:b76f98d1556b 26 DigitalOut rst(p11);
pramodnataraja 0:b76f98d1556b 27
pramodnataraja 0:b76f98d1556b 28 DigitalOut led1(LED1);
pramodnataraja 0:b76f98d1556b 29 DigitalOut led2(LED2);
pramodnataraja 0:b76f98d1556b 30
pramodnataraja 0:b76f98d1556b 31 /*******************Motor directions***************/
pramodnataraja 0:b76f98d1556b 32 void forward();
pramodnataraja 0:b76f98d1556b 33 void reverse();
pramodnataraja 0:b76f98d1556b 34 void left(float);
pramodnataraja 0:b76f98d1556b 35 void right(float);
pramodnataraja 0:b76f98d1556b 36 void stop();
pramodnataraja 0:b76f98d1556b 37
pramodnataraja 0:b76f98d1556b 38
pramodnataraja 0:b76f98d1556b 39 void Move(char DirectionToMove, int& prevState);
pramodnataraja 0:b76f98d1556b 40
pramodnataraja 0:b76f98d1556b 41 float time_rotate = 0.5;
pramodnataraja 0:b76f98d1556b 42
pramodnataraja 0:b76f98d1556b 43 int main()
pramodnataraja 0:b76f98d1556b 44 {
pramodnataraja 0:b76f98d1556b 45 rst = 0;
pramodnataraja 0:b76f98d1556b 46 wait(0.5);
pramodnataraja 0:b76f98d1556b 47 rst = 1;
pramodnataraja 0:b76f98d1556b 48 wait(0.5);
pramodnataraja 0:b76f98d1556b 49
pramodnataraja 0:b76f98d1556b 50 int prevState = 1; // 1 for forward and 0 for back
pramodnataraja 0:b76f98d1556b 51 int onOff = 1; // 1 for ON 0 for OFF
pramodnataraja 0:b76f98d1556b 52 char DirectionToMove = '1';
pramodnataraja 0:b76f98d1556b 53
pramodnataraja 0:b76f98d1556b 54 /* init of prevhbridgestatus comes here*/
pramodnataraja 0:b76f98d1556b 55
pramodnataraja 0:b76f98d1556b 56 while(1)
pramodnataraja 0:b76f98d1556b 57 {
pramodnataraja 0:b76f98d1556b 58 while(!(xbee.readable()))
pramodnataraja 0:b76f98d1556b 59 {
pramodnataraja 0:b76f98d1556b 60 led1 = 1;
pramodnataraja 0:b76f98d1556b 61 }
pramodnataraja 0:b76f98d1556b 62 led1 = 0;
pramodnataraja 0:b76f98d1556b 63
pramodnataraja 0:b76f98d1556b 64 led2 = prevState;
pramodnataraja 0:b76f98d1556b 65
pramodnataraja 0:b76f98d1556b 66 DirectionToMove = xbee.getc();
pramodnataraja 0:b76f98d1556b 67
pramodnataraja 0:b76f98d1556b 68 if(DirectionToMove == '0')
pramodnataraja 0:b76f98d1556b 69 {
pramodnataraja 0:b76f98d1556b 70 if(onOff == 1)
pramodnataraja 0:b76f98d1556b 71 {
pramodnataraja 0:b76f98d1556b 72 onOff = 0;
pramodnataraja 0:b76f98d1556b 73 stop();
pramodnataraja 0:b76f98d1556b 74 }
pramodnataraja 0:b76f98d1556b 75 else
pramodnataraja 0:b76f98d1556b 76 onOff = 1;
pramodnataraja 0:b76f98d1556b 77 }
pramodnataraja 0:b76f98d1556b 78 else if(onOff == 1)
pramodnataraja 0:b76f98d1556b 79 {
pramodnataraja 0:b76f98d1556b 80 Move(DirectionToMove, prevState); /* This function moves along a direction determined by current direction and the previous direction of motion */
pramodnataraja 0:b76f98d1556b 81 }
pramodnataraja 0:b76f98d1556b 82 }
pramodnataraja 0:b76f98d1556b 83
pramodnataraja 0:b76f98d1556b 84 }
pramodnataraja 0:b76f98d1556b 85
pramodnataraja 0:b76f98d1556b 86 void Move(char DirectionToMove, int& prevState)
pramodnataraja 0:b76f98d1556b 87 {
pramodnataraja 0:b76f98d1556b 88 switch(DirectionToMove)
pramodnataraja 0:b76f98d1556b 89 {
pramodnataraja 0:b76f98d1556b 90 case FRONT:
pramodnataraja 0:b76f98d1556b 91 forward();
pramodnataraja 0:b76f98d1556b 92 prevState = 1;
pramodnataraja 0:b76f98d1556b 93 break;
pramodnataraja 0:b76f98d1556b 94
pramodnataraja 0:b76f98d1556b 95 case BACK:
pramodnataraja 0:b76f98d1556b 96 reverse();
pramodnataraja 0:b76f98d1556b 97 prevState = 0;
pramodnataraja 0:b76f98d1556b 98 break;
pramodnataraja 0:b76f98d1556b 99
pramodnataraja 0:b76f98d1556b 100 case LEFT:
pramodnataraja 0:b76f98d1556b 101 left(2 * time_rotate);
pramodnataraja 0:b76f98d1556b 102 if(prevState == 0)
pramodnataraja 0:b76f98d1556b 103 reverse();
pramodnataraja 0:b76f98d1556b 104 else
pramodnataraja 0:b76f98d1556b 105 forward();
pramodnataraja 0:b76f98d1556b 106 break;
pramodnataraja 0:b76f98d1556b 107
pramodnataraja 0:b76f98d1556b 108 case RIGHT:
pramodnataraja 0:b76f98d1556b 109 right(2 * time_rotate);
pramodnataraja 0:b76f98d1556b 110 if(prevState == 0)
pramodnataraja 0:b76f98d1556b 111 reverse();
pramodnataraja 0:b76f98d1556b 112 else
pramodnataraja 0:b76f98d1556b 113 forward();
pramodnataraja 0:b76f98d1556b 114 break;
pramodnataraja 0:b76f98d1556b 115
pramodnataraja 0:b76f98d1556b 116 case HALF_FRONT_RIGHT:
pramodnataraja 0:b76f98d1556b 117 right(time_rotate);
pramodnataraja 0:b76f98d1556b 118 prevState = 1;
pramodnataraja 0:b76f98d1556b 119 forward();
pramodnataraja 0:b76f98d1556b 120 break;
pramodnataraja 0:b76f98d1556b 121
pramodnataraja 0:b76f98d1556b 122 case HALF_FRONT_LEFT:
pramodnataraja 0:b76f98d1556b 123 left(time_rotate);
pramodnataraja 0:b76f98d1556b 124 prevState = 1;
pramodnataraja 0:b76f98d1556b 125 forward();
pramodnataraja 0:b76f98d1556b 126 break;
pramodnataraja 0:b76f98d1556b 127
pramodnataraja 0:b76f98d1556b 128 case HALF_BACK_RIGHT:
pramodnataraja 0:b76f98d1556b 129 right(time_rotate);
pramodnataraja 0:b76f98d1556b 130 prevState = 0;
pramodnataraja 0:b76f98d1556b 131 reverse();
pramodnataraja 0:b76f98d1556b 132 break;
pramodnataraja 0:b76f98d1556b 133
pramodnataraja 0:b76f98d1556b 134 case HALF_BACK_LEFT:
pramodnataraja 0:b76f98d1556b 135 left(time_rotate);
pramodnataraja 0:b76f98d1556b 136 prevState = 0;
pramodnataraja 0:b76f98d1556b 137 reverse();
pramodnataraja 0:b76f98d1556b 138 break;
pramodnataraja 0:b76f98d1556b 139
pramodnataraja 0:b76f98d1556b 140 default:
pramodnataraja 0:b76f98d1556b 141 break;
pramodnataraja 0:b76f98d1556b 142 }
pramodnataraja 0:b76f98d1556b 143 }
pramodnataraja 0:b76f98d1556b 144
pramodnataraja 0:b76f98d1556b 145 void reverse()
pramodnataraja 0:b76f98d1556b 146 {
pramodnataraja 0:b76f98d1556b 147 stop();
pramodnataraja 0:b76f98d1556b 148 Ain1 = 1;
pramodnataraja 0:b76f98d1556b 149 Ain2 = 0;
pramodnataraja 0:b76f98d1556b 150 Bin1 = 1;
pramodnataraja 0:b76f98d1556b 151 Bin2 = 0;
pramodnataraja 0:b76f98d1556b 152 motorA = 0.5;
pramodnataraja 0:b76f98d1556b 153 motorB=0.5;
pramodnataraja 0:b76f98d1556b 154
pramodnataraja 0:b76f98d1556b 155 }
pramodnataraja 0:b76f98d1556b 156
pramodnataraja 0:b76f98d1556b 157 void forward()
pramodnataraja 0:b76f98d1556b 158 {
pramodnataraja 0:b76f98d1556b 159 stop();
pramodnataraja 0:b76f98d1556b 160 Ain1 = 0;
pramodnataraja 0:b76f98d1556b 161 Ain2 = 1;
pramodnataraja 0:b76f98d1556b 162 Bin1 = 0;
pramodnataraja 0:b76f98d1556b 163 Bin2 = 1;
pramodnataraja 0:b76f98d1556b 164 motorA = 0.5;
pramodnataraja 0:b76f98d1556b 165 motorB=0.5;
pramodnataraja 0:b76f98d1556b 166
pramodnataraja 0:b76f98d1556b 167 }
pramodnataraja 0:b76f98d1556b 168 void left(float time1)
pramodnataraja 0:b76f98d1556b 169 {
pramodnataraja 0:b76f98d1556b 170 stop();
pramodnataraja 0:b76f98d1556b 171 Ain1 = 1;
pramodnataraja 0:b76f98d1556b 172 Ain2 = 0;
pramodnataraja 0:b76f98d1556b 173 Bin1 = 0;
pramodnataraja 0:b76f98d1556b 174 Bin2 = 1;
pramodnataraja 0:b76f98d1556b 175 motorA = 0.5;
pramodnataraja 0:b76f98d1556b 176 motorB=0.5;
pramodnataraja 0:b76f98d1556b 177 wait(time1);
pramodnataraja 0:b76f98d1556b 178 }
pramodnataraja 0:b76f98d1556b 179 void right(float time1)
pramodnataraja 0:b76f98d1556b 180 {
pramodnataraja 0:b76f98d1556b 181 stop();
pramodnataraja 0:b76f98d1556b 182 Ain1 = 0;
pramodnataraja 0:b76f98d1556b 183 Ain2 = 1;
pramodnataraja 0:b76f98d1556b 184 Bin1 = 1;
pramodnataraja 0:b76f98d1556b 185 Bin2 = 0;
pramodnataraja 0:b76f98d1556b 186 motorA = 0.5;
pramodnataraja 0:b76f98d1556b 187 motorB=0.5;
pramodnataraja 0:b76f98d1556b 188 wait(time1);
pramodnataraja 0:b76f98d1556b 189 }
pramodnataraja 0:b76f98d1556b 190
pramodnataraja 0:b76f98d1556b 191 void stop()
pramodnataraja 0:b76f98d1556b 192 {
pramodnataraja 0:b76f98d1556b 193 Ain1 = 0;
pramodnataraja 0:b76f98d1556b 194 Ain2 = 0;
pramodnataraja 0:b76f98d1556b 195 Bin1 = 0;
pramodnataraja 0:b76f98d1556b 196 Bin2 = 0;
pramodnataraja 0:b76f98d1556b 197 motorA = 1;
pramodnataraja 0:b76f98d1556b 198 motorB=1;
pramodnataraja 0:b76f98d1556b 199
pramodnataraja 0:b76f98d1556b 200 }