Code

Dependencies:   mbed QEI MPU6050 TextLCD

Committer:
belsarekaiwalya
Date:
Wed Mar 22 07:15:20 2017 +0000
Revision:
4:b084af72f9a6
Parent:
3:86145fd89b45
Child:
5:84e63108a1b6
Includes motor Run function.;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
belsarekaiwalya 0:c9c8c027609e 1 #include "mbed.h"
belsarekaiwalya 0:c9c8c027609e 2 #include "TextLCD.h"
belsarekaiwalya 0:c9c8c027609e 3 TextLCD lcd(PA_0,PA_1,PA_4,PB_0,PC_1,PC_0); // rs, e, d4-d7
belsarekaiwalya 3:86145fd89b45 4 Serial serial(USBTX, USBRX);
belsarekaiwalya 3:86145fd89b45 5 Serial bt(PC_6,PC_7);//tx,rx
belsarekaiwalya 1:59c416ccba42 6 DigitalOut dirRa(PB_3);
belsarekaiwalya 1:59c416ccba42 7 DigitalOut dirRb(PB_5);
belsarekaiwalya 1:59c416ccba42 8 DigitalOut dirLa(PB_4);
belsarekaiwalya 1:59c416ccba42 9 DigitalOut dirLb(PB_10);
belsarekaiwalya 1:59c416ccba42 10 PwmOut pwmL(PA_8);//left
belsarekaiwalya 1:59c416ccba42 11 PwmOut pwmR(PA_9);//right
belsarekaiwalya 0:c9c8c027609e 12
belsarekaiwalya 3:86145fd89b45 13 void InitSerial();
belsarekaiwalya 4:b084af72f9a6 14 void runMotor(char mot, bool dir, float pwm);
belsarekaiwalya 3:86145fd89b45 15 void front(float xpwmL,float xpwmR);
belsarekaiwalya 3:86145fd89b45 16 void back(float xpwm,float xpwmR);
belsarekaiwalya 3:86145fd89b45 17 void left(float xpwm, float xpwmR);
belsarekaiwalya 3:86145fd89b45 18 void right(float xpwm,float xpwmR);
belsarekaiwalya 3:86145fd89b45 19 void clockWise(float xpwm,float xpwmR);
belsarekaiwalya 3:86145fd89b45 20 void antiClock(float xpwm,float xpwmR);
belsarekaiwalya 3:86145fd89b45 21 void Brake();
belsarekaiwalya 0:c9c8c027609e 22
belsarekaiwalya 3:86145fd89b45 23 int ch;
belsarekaiwalya 3:86145fd89b45 24
belsarekaiwalya 3:86145fd89b45 25 void InitSerial()
belsarekaiwalya 0:c9c8c027609e 26 {
belsarekaiwalya 0:c9c8c027609e 27 bt.baud(9600);
belsarekaiwalya 0:c9c8c027609e 28 serial.baud(9600);
belsarekaiwalya 3:86145fd89b45 29 }
belsarekaiwalya 3:86145fd89b45 30 void SetPwmf_kHz(float freq)
belsarekaiwalya 3:86145fd89b45 31 {
belsarekaiwalya 3:86145fd89b45 32
belsarekaiwalya 3:86145fd89b45 33 pwmL.period_ms(freq);
belsarekaiwalya 3:86145fd89b45 34 pwmR.period_ms(freq);
belsarekaiwalya 3:86145fd89b45 35
belsarekaiwalya 3:86145fd89b45 36 }
belsarekaiwalya 3:86145fd89b45 37 int main()
belsarekaiwalya 3:86145fd89b45 38 {
belsarekaiwalya 3:86145fd89b45 39 InitSerial();
belsarekaiwalya 3:86145fd89b45 40 SetPwmf_kHz(1);
belsarekaiwalya 3:86145fd89b45 41 Brake();
belsarekaiwalya 0:c9c8c027609e 42 while(1)
belsarekaiwalya 0:c9c8c027609e 43 {
belsarekaiwalya 0:c9c8c027609e 44 if(bt.readable())
belsarekaiwalya 0:c9c8c027609e 45 {
belsarekaiwalya 0:c9c8c027609e 46 ch = bt.getc();
belsarekaiwalya 0:c9c8c027609e 47 lcd.cls();
belsarekaiwalya 0:c9c8c027609e 48 switch(ch)
belsarekaiwalya 0:c9c8c027609e 49 {
belsarekaiwalya 1:59c416ccba42 50 case 'w'://Front
belsarekaiwalya 4:b084af72f9a6 51 runMotor('L', 1, 0.5);
belsarekaiwalya 4:b084af72f9a6 52 runMotor('R', 1, 0.5);
belsarekaiwalya 3:86145fd89b45 53 serial.printf("Forward\n");
belsarekaiwalya 3:86145fd89b45 54 lcd.cls();
belsarekaiwalya 3:86145fd89b45 55 lcd.locate(1,0);
belsarekaiwalya 3:86145fd89b45 56 lcd.printf("Forward\n");
belsarekaiwalya 3:86145fd89b45 57 break;
belsarekaiwalya 3:86145fd89b45 58
belsarekaiwalya 1:59c416ccba42 59 case 'a'://Left
belsarekaiwalya 4:b084af72f9a6 60 runMotor('L', 1, 0);
belsarekaiwalya 4:b084af72f9a6 61 runMotor('R', 1, 0.5);
belsarekaiwalya 3:86145fd89b45 62 serial.printf("Left\n");
belsarekaiwalya 3:86145fd89b45 63 lcd.cls();
belsarekaiwalya 3:86145fd89b45 64 lcd.locate(1,0);
belsarekaiwalya 3:86145fd89b45 65 lcd.printf("Left\n");
belsarekaiwalya 3:86145fd89b45 66 break;
belsarekaiwalya 3:86145fd89b45 67
belsarekaiwalya 1:59c416ccba42 68 case 's'://Back
belsarekaiwalya 4:b084af72f9a6 69 runMotor('L', 0, 0.5);
belsarekaiwalya 4:b084af72f9a6 70 runMotor('R', 0, 0.5);
belsarekaiwalya 3:86145fd89b45 71 serial.printf("Back\n");
belsarekaiwalya 3:86145fd89b45 72 lcd.cls();
belsarekaiwalya 3:86145fd89b45 73 lcd.locate(1,0);
belsarekaiwalya 3:86145fd89b45 74 lcd.printf("Back\n");
belsarekaiwalya 3:86145fd89b45 75 break;
belsarekaiwalya 3:86145fd89b45 76
belsarekaiwalya 1:59c416ccba42 77 case 'd'://Right
belsarekaiwalya 4:b084af72f9a6 78 runMotor('L', 1, 0.5);
belsarekaiwalya 4:b084af72f9a6 79 runMotor('R', 1, 0);
belsarekaiwalya 3:86145fd89b45 80 serial.printf("Right\n");
belsarekaiwalya 3:86145fd89b45 81 lcd.cls();
belsarekaiwalya 3:86145fd89b45 82 lcd.locate(1,0);
belsarekaiwalya 3:86145fd89b45 83 lcd.printf("Right\n");
belsarekaiwalya 3:86145fd89b45 84 break;
belsarekaiwalya 3:86145fd89b45 85
belsarekaiwalya 4:b084af72f9a6 86 case 'A'://Anticlock
belsarekaiwalya 4:b084af72f9a6 87 runMotor('L', 0, 0.5);
belsarekaiwalya 4:b084af72f9a6 88 runMotor('R', 1, 0.5);
belsarekaiwalya 4:b084af72f9a6 89 serial.printf("AntiClock\n");
belsarekaiwalya 4:b084af72f9a6 90 lcd.cls();
belsarekaiwalya 4:b084af72f9a6 91 lcd.locate(1,0);
belsarekaiwalya 4:b084af72f9a6 92 lcd.printf("AntiClock\n");
belsarekaiwalya 4:b084af72f9a6 93 break;
belsarekaiwalya 4:b084af72f9a6 94
belsarekaiwalya 4:b084af72f9a6 95 case 'C'://Clock
belsarekaiwalya 4:b084af72f9a6 96 runMotor('L', 1, 0.5);
belsarekaiwalya 4:b084af72f9a6 97 runMotor('R', 0, 0.5);
belsarekaiwalya 4:b084af72f9a6 98 serial.printf("Clock\n");
belsarekaiwalya 4:b084af72f9a6 99 lcd.cls();
belsarekaiwalya 4:b084af72f9a6 100 lcd.locate(1,0);
belsarekaiwalya 4:b084af72f9a6 101 lcd.printf("Clock\n");
belsarekaiwalya 4:b084af72f9a6 102 break;
belsarekaiwalya 4:b084af72f9a6 103
belsarekaiwalya 1:59c416ccba42 104 case 'O'://Stop
belsarekaiwalya 3:86145fd89b45 105 Brake();
belsarekaiwalya 3:86145fd89b45 106 serial.printf("STOP\n");
belsarekaiwalya 3:86145fd89b45 107 lcd.cls();
belsarekaiwalya 3:86145fd89b45 108 lcd.locate(1,0);
belsarekaiwalya 3:86145fd89b45 109 lcd.printf("STOP\n");
belsarekaiwalya 3:86145fd89b45 110 break;
belsarekaiwalya 4:b084af72f9a6 111
belsarekaiwalya 0:c9c8c027609e 112 default:
belsarekaiwalya 3:86145fd89b45 113 Brake();
belsarekaiwalya 3:86145fd89b45 114 serial.printf("Brake");
belsarekaiwalya 3:86145fd89b45 115 lcd.cls();
belsarekaiwalya 3:86145fd89b45 116 lcd.locate(1,0);
belsarekaiwalya 3:86145fd89b45 117 lcd.printf("Brake");
belsarekaiwalya 3:86145fd89b45 118 }
belsarekaiwalya 0:c9c8c027609e 119 }
belsarekaiwalya 0:c9c8c027609e 120 }
belsarekaiwalya 0:c9c8c027609e 121 }
belsarekaiwalya 4:b084af72f9a6 122 void runMotor(char mot, bool dir, float pwm)
belsarekaiwalya 4:b084af72f9a6 123 {
belsarekaiwalya 4:b084af72f9a6 124 switch(mot)
belsarekaiwalya 4:b084af72f9a6 125 {
belsarekaiwalya 4:b084af72f9a6 126 case 'L':
belsarekaiwalya 4:b084af72f9a6 127 if(dir)
belsarekaiwalya 4:b084af72f9a6 128 {
belsarekaiwalya 4:b084af72f9a6 129 dirLa = 1;
belsarekaiwalya 4:b084af72f9a6 130 dirLb = 0;
belsarekaiwalya 4:b084af72f9a6 131 }
belsarekaiwalya 4:b084af72f9a6 132 else
belsarekaiwalya 4:b084af72f9a6 133 {
belsarekaiwalya 4:b084af72f9a6 134 dirLa = 0;
belsarekaiwalya 4:b084af72f9a6 135 dirLb = 1;
belsarekaiwalya 4:b084af72f9a6 136 }
belsarekaiwalya 4:b084af72f9a6 137 pwmL= pwm;
belsarekaiwalya 4:b084af72f9a6 138 break;
belsarekaiwalya 4:b084af72f9a6 139
belsarekaiwalya 4:b084af72f9a6 140 case 'R':
belsarekaiwalya 4:b084af72f9a6 141 if(dir)
belsarekaiwalya 4:b084af72f9a6 142 {
belsarekaiwalya 4:b084af72f9a6 143 dirRa = 1;
belsarekaiwalya 4:b084af72f9a6 144 dirRb = 0;
belsarekaiwalya 4:b084af72f9a6 145 }
belsarekaiwalya 4:b084af72f9a6 146 else
belsarekaiwalya 4:b084af72f9a6 147 {
belsarekaiwalya 4:b084af72f9a6 148 dirRa = 0;
belsarekaiwalya 4:b084af72f9a6 149 dirRb = 1;
belsarekaiwalya 4:b084af72f9a6 150 }
belsarekaiwalya 4:b084af72f9a6 151 pwmR= pwm;
belsarekaiwalya 4:b084af72f9a6 152 break;
belsarekaiwalya 4:b084af72f9a6 153
belsarekaiwalya 4:b084af72f9a6 154 default:
belsarekaiwalya 4:b084af72f9a6 155 Brake();
belsarekaiwalya 4:b084af72f9a6 156 }
belsarekaiwalya 4:b084af72f9a6 157 }
belsarekaiwalya 3:86145fd89b45 158 void front(float xpwmL,float xpwmR)
belsarekaiwalya 3:86145fd89b45 159 {
belsarekaiwalya 3:86145fd89b45 160 dirLa = 1;
belsarekaiwalya 3:86145fd89b45 161 dirLb = 0;
belsarekaiwalya 3:86145fd89b45 162 pwmL= xpwmL;
belsarekaiwalya 1:59c416ccba42 163
belsarekaiwalya 1:59c416ccba42 164 dirRa = 1;
belsarekaiwalya 1:59c416ccba42 165 dirRb = 0;
belsarekaiwalya 3:86145fd89b45 166 pwmR= xpwmR;
belsarekaiwalya 3:86145fd89b45 167 }
belsarekaiwalya 3:86145fd89b45 168 void back(float xpwmL,float xpwmR)
belsarekaiwalya 3:86145fd89b45 169 {
belsarekaiwalya 3:86145fd89b45 170 dirLa = 0;
belsarekaiwalya 3:86145fd89b45 171 dirLb = 1;
belsarekaiwalya 3:86145fd89b45 172 pwmL= xpwmL;
belsarekaiwalya 3:86145fd89b45 173
belsarekaiwalya 3:86145fd89b45 174 dirRa = 0;
belsarekaiwalya 3:86145fd89b45 175 dirRb = 1;
belsarekaiwalya 3:86145fd89b45 176 pwmR= xpwmR;
belsarekaiwalya 3:86145fd89b45 177 }
belsarekaiwalya 3:86145fd89b45 178 void left(float xpwmL,float xpwmR)
belsarekaiwalya 3:86145fd89b45 179 {
belsarekaiwalya 3:86145fd89b45 180 dirLa = 0;
belsarekaiwalya 3:86145fd89b45 181 dirLb = 0;
belsarekaiwalya 3:86145fd89b45 182 pwmL= xpwmL;
belsarekaiwalya 3:86145fd89b45 183
belsarekaiwalya 3:86145fd89b45 184 dirRa = 1;
belsarekaiwalya 3:86145fd89b45 185 dirRb = 0;
belsarekaiwalya 3:86145fd89b45 186 pwmR= xpwmR;
belsarekaiwalya 3:86145fd89b45 187 }
belsarekaiwalya 3:86145fd89b45 188 void right(float xpwmL,float xpwmR)
belsarekaiwalya 3:86145fd89b45 189 {
belsarekaiwalya 1:59c416ccba42 190 dirLa = 1;
belsarekaiwalya 1:59c416ccba42 191 dirLb = 0;
belsarekaiwalya 3:86145fd89b45 192 pwmL = xpwmL;
belsarekaiwalya 0:c9c8c027609e 193
belsarekaiwalya 3:86145fd89b45 194 dirRa = 0;
belsarekaiwalya 3:86145fd89b45 195 dirRb = 0;
belsarekaiwalya 3:86145fd89b45 196 pwmR = xpwmR;
belsarekaiwalya 0:c9c8c027609e 197 }
belsarekaiwalya 3:86145fd89b45 198 void Brake()
belsarekaiwalya 0:c9c8c027609e 199 {
belsarekaiwalya 1:59c416ccba42 200 dirLa = 0;
belsarekaiwalya 1:59c416ccba42 201 dirLb = 0;
belsarekaiwalya 1:59c416ccba42 202 pwmL=0.0;
belsarekaiwalya 4:b084af72f9a6 203
belsarekaiwalya 4:b084af72f9a6 204 dirRa = 0;
belsarekaiwalya 4:b084af72f9a6 205 dirRb = 0;
belsarekaiwalya 1:59c416ccba42 206 pwmR=0.0;
belsarekaiwalya 0:c9c8c027609e 207 }
belsarekaiwalya 3:86145fd89b45 208 void antiClock(float xpwmL,float xpwmR)
belsarekaiwalya 3:86145fd89b45 209 {
belsarekaiwalya 3:86145fd89b45 210 dirLa = 0;
belsarekaiwalya 3:86145fd89b45 211 dirLb = 1;
belsarekaiwalya 3:86145fd89b45 212 pwmL = xpwmL;
belsarekaiwalya 4:b084af72f9a6 213
belsarekaiwalya 4:b084af72f9a6 214 dirRa = 1;
belsarekaiwalya 4:b084af72f9a6 215 dirRb = 0;
belsarekaiwalya 3:86145fd89b45 216 pwmR = xpwmR;
belsarekaiwalya 3:86145fd89b45 217 }
belsarekaiwalya 3:86145fd89b45 218 void clockWise(float xpwmL,float xpwmR)
belsarekaiwalya 0:c9c8c027609e 219 {
belsarekaiwalya 3:86145fd89b45 220 dirLa = 1;
belsarekaiwalya 1:59c416ccba42 221 dirLb = 0;
belsarekaiwalya 3:86145fd89b45 222 pwmL = xpwmL;
belsarekaiwalya 4:b084af72f9a6 223
belsarekaiwalya 4:b084af72f9a6 224 dirRa = 0;
belsarekaiwalya 4:b084af72f9a6 225 dirRb = 1;
belsarekaiwalya 3:86145fd89b45 226 pwmR = xpwmR;
belsarekaiwalya 3:86145fd89b45 227 }