
This is a program for a DIY robotic arm for demonstrates the capacities of the BIXI Bluetooth module
Dependencies: Servo TextLCD mbed
main.cpp@5:da214688a308, 2016-06-20 (annotated)
- Committer:
- clementb
- Date:
- Mon Jun 20 12:15:15 2016 +0000
- Revision:
- 5:da214688a308
- Parent:
- 4:1a6e5f38f0d9
- Child:
- 6:f9179fb52bbc
A faster version, the presentation and the help are deleted.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
clementb | 2:2728901fd798 | 1 | /* |
clementb | 2:2728901fd798 | 2 | Program created in June, 2016 by Clément BALLOT |
clementb | 2:2728901fd798 | 3 | |
clementb | 2:2728901fd798 | 4 | This program is for a robotic arm for demonstrates the Bixi capacities, with 2 axes. The Bixi is a Bluetooth module for touch-free control |
clementb | 2:2728901fd798 | 5 | Bluetooth devices, like a smartphone or a tablet. It is develloped by Bluemint Labs. |
clementb | 2:2728901fd798 | 6 | |
clementb | 2:2728901fd798 | 7 | To make this project, you need : |
clementb | 5:da214688a308 | 8 | - a STM32 Nucleo board (ST). BE CAREFUL : CHOISE THE RIGH BOARD BEFORE COMPILING !!! ; |
clementb | 5:da214688a308 | 9 | - 2x servomotors (5V) ; |
clementb | 5:da214688a308 | 10 | - 2x LEDs : 1x red, 1x green ; |
clementb | 5:da214688a308 | 11 | - 3 pushbuttons ; |
clementb | 5:da214688a308 | 12 | - 4x 10K potentiometers ; |
clementb | 5:da214688a308 | 13 | - a 2 rows 16 columns alphanumeric LCD screen ; |
clementb | 5:da214688a308 | 14 | - a USB A to micro cable ; |
clementb | 5:da214688a308 | 15 | - a breadboard ; |
clementb | 5:da214688a308 | 16 | - 2x 100K resistors . |
clementb | 2:2728901fd798 | 17 | */ |
clementb | 0:9438fe754ab6 | 18 | #include "mbed.h" |
clementb | 0:9438fe754ab6 | 19 | #include "TextLCD.h" |
clementb | 0:9438fe754ab6 | 20 | #include "Servo.h" |
clementb | 0:9438fe754ab6 | 21 | |
clementb | 0:9438fe754ab6 | 22 | |
clementb | 2:2728901fd798 | 23 | TextLCD lcd(D2, D3, D4, D5, D6, D7); |
clementb | 2:2728901fd798 | 24 | enum LCDType{LCD16x2B}; |
clementb | 0:9438fe754ab6 | 25 | |
clementb | 2:2728901fd798 | 26 | Servo servoRL(D10); //Righ-left servo : x axe |
clementb | 2:2728901fd798 | 27 | Servo servoHL(D9); //Up-down servo : y axe |
clementb | 0:9438fe754ab6 | 28 | |
clementb | 2:2728901fd798 | 29 | DigitalIn menuL(D11); //"Back" button |
clementb | 2:2728901fd798 | 30 | DigitalIn menuR(D12); //"Next" button |
clementb | 2:2728901fd798 | 31 | DigitalOut ledY(D8); //"Please wait" LED |
clementb | 2:2728901fd798 | 32 | DigitalOut ledV(D13); //"In progress" and "press a button" LED |
clementb | 2:2728901fd798 | 33 | AnalogIn analogX(A1); //Analog in for x potentiometer |
clementb | 2:2728901fd798 | 34 | AnalogIn analogY(A3); //Analog in for y potentiometer |
clementb | 0:9438fe754ab6 | 35 | |
clementb | 4:1a6e5f38f0d9 | 36 | float vitesse = 0.001; //------------------------------------------- CHANGE IT TO REDUCE/INCREASE SERVOMOTORS SPEED -------------------- |
clementb | 0:9438fe754ab6 | 37 | int page; |
clementb | 2:2728901fd798 | 38 | int i = 0; |
clementb | 3:dd4efdfbbf01 | 39 | int disp = 0; |
clementb | 5:da214688a308 | 40 | float xPos = 0.00; |
clementb | 5:da214688a308 | 41 | float yPos = 0.00; |
clementb | 4:1a6e5f38f0d9 | 42 | int ok = 0; |
clementb | 0:9438fe754ab6 | 43 | |
clementb | 1:c3a33d9372f5 | 44 | |
clementb | 1:c3a33d9372f5 | 45 | int main(){ |
clementb | 1:c3a33d9372f5 | 46 | page = 1; |
clementb | 0:9438fe754ab6 | 47 | lcd.cls(); |
clementb | 0:9438fe754ab6 | 48 | lcd.locate(0,0); |
clementb | 2:2728901fd798 | 49 | lcd.printf("BIXI Rob'Arm :by"); |
clementb | 1:c3a33d9372f5 | 50 | lcd.locate(0,1); |
clementb | 2:2728901fd798 | 51 | lcd.printf("Clement BALLOT"); |
clementb | 5:da214688a308 | 52 | servoRL = 0.00; |
clementb | 5:da214688a308 | 53 | servoHL = 0.00; |
clementb | 4:1a6e5f38f0d9 | 54 | while(i != 5){ |
clementb | 2:2728901fd798 | 55 | ledY = 1; |
clementb | 2:2728901fd798 | 56 | ledV = 0; |
clementb | 4:1a6e5f38f0d9 | 57 | wait(0.5); |
clementb | 2:2728901fd798 | 58 | ledY = 0; |
clementb | 2:2728901fd798 | 59 | ledV = 1; |
clementb | 4:1a6e5f38f0d9 | 60 | wait(0.5); |
clementb | 2:2728901fd798 | 61 | i = i++; |
clementb | 0:9438fe754ab6 | 62 | } |
clementb | 2:2728901fd798 | 63 | ledY = 0; |
clementb | 2:2728901fd798 | 64 | ledV = 0; |
clementb | 0:9438fe754ab6 | 65 | |
clementb | 1:c3a33d9372f5 | 66 | while(1) { |
clementb | 2:2728901fd798 | 67 | ledY = 1; |
clementb | 2:2728901fd798 | 68 | lcd.cls(); |
clementb | 2:2728901fd798 | 69 | lcd.locate(0,0); |
clementb | 2:2728901fd798 | 70 | lcd.printf("Reset servo pos"); |
clementb | 5:da214688a308 | 71 | wait(1); |
clementb | 2:2728901fd798 | 72 | lcd.locate(0, 1); |
clementb | 2:2728901fd798 | 73 | lcd.printf("Please wait..."); |
clementb | 3:dd4efdfbbf01 | 74 | wait(1); |
clementb | 2:2728901fd798 | 75 | lcd.cls(); |
clementb | 2:2728901fd798 | 76 | lcd.locate(3, 0); |
clementb | 2:2728901fd798 | 77 | lcd.printf(" : x servo"); |
clementb | 2:2728901fd798 | 78 | lcd.locate(3, 1); |
clementb | 2:2728901fd798 | 79 | lcd.printf(" : y servo"); |
clementb | 2:2728901fd798 | 80 | lcd.locate(0,0); |
clementb | 3:dd4efdfbbf01 | 81 | disp = xPos*100; |
clementb | 3:dd4efdfbbf01 | 82 | lcd.printf("%3d", disp); |
clementb | 2:2728901fd798 | 83 | lcd.locate(0, 1); |
clementb | 3:dd4efdfbbf01 | 84 | disp = yPos*100; |
clementb | 3:dd4efdfbbf01 | 85 | lcd.printf("%3d", disp); |
clementb | 5:da214688a308 | 86 | if(xPos!=0.00){ |
clementb | 3:dd4efdfbbf01 | 87 | while(yPos < 1.00){ |
clementb | 3:dd4efdfbbf01 | 88 | yPos = yPos + 0.01; |
clementb | 2:2728901fd798 | 89 | lcd.locate(0, 1); |
clementb | 3:dd4efdfbbf01 | 90 | disp = yPos*100; |
clementb | 3:dd4efdfbbf01 | 91 | lcd.printf("%3d", disp); |
clementb | 2:2728901fd798 | 92 | servoHL = yPos; |
clementb | 3:dd4efdfbbf01 | 93 | wait(vitesse*10); |
clementb | 1:c3a33d9372f5 | 94 | } |
clementb | 0:9438fe754ab6 | 95 | } |
clementb | 3:dd4efdfbbf01 | 96 | while(xPos > 0.00){ |
clementb | 2:2728901fd798 | 97 | xPos = xPos - 0.01; |
clementb | 2:2728901fd798 | 98 | lcd.locate(0,0); |
clementb | 3:dd4efdfbbf01 | 99 | disp = xPos*100; |
clementb | 3:dd4efdfbbf01 | 100 | lcd.printf("%3d", disp); |
clementb | 2:2728901fd798 | 101 | servoRL = xPos; |
clementb | 3:dd4efdfbbf01 | 102 | wait(vitesse*10); |
clementb | 2:2728901fd798 | 103 | } |
clementb | 3:dd4efdfbbf01 | 104 | while(yPos >0.00){ |
clementb | 3:dd4efdfbbf01 | 105 | yPos = yPos - 0.01; |
clementb | 2:2728901fd798 | 106 | lcd.locate(0, 1); |
clementb | 3:dd4efdfbbf01 | 107 | disp = yPos*100; |
clementb | 3:dd4efdfbbf01 | 108 | lcd.printf("%3d", disp); |
clementb | 2:2728901fd798 | 109 | servoHL = yPos; |
clementb | 3:dd4efdfbbf01 | 110 | wait(vitesse*10); |
clementb | 2:2728901fd798 | 111 | } |
clementb | 5:da214688a308 | 112 | servoRL = 0.00; |
clementb | 5:da214688a308 | 113 | servoHL = 0.00; |
clementb | 2:2728901fd798 | 114 | |
clementb | 3:dd4efdfbbf01 | 115 | |
clementb | 2:2728901fd798 | 116 | |
clementb | 2:2728901fd798 | 117 | ledV = 1; |
clementb | 2:2728901fd798 | 118 | ledY = 0; |
clementb | 2:2728901fd798 | 119 | lcd.cls(); |
clementb | 2:2728901fd798 | 120 | lcd.locate(0,0); |
clementb | 3:dd4efdfbbf01 | 121 | lcd.printf("Press a button.."); |
clementb | 2:2728901fd798 | 122 | lcd.locate(0, 1); |
clementb | 3:dd4efdfbbf01 | 123 | lcd.printf("Currently : P%d ", page); |
clementb | 4:1a6e5f38f0d9 | 124 | i = 0; |
clementb | 5:da214688a308 | 125 | while(i!=20){ |
clementb | 5:da214688a308 | 126 | wait(0.1); |
clementb | 4:1a6e5f38f0d9 | 127 | ledV = 0; |
clementb | 5:da214688a308 | 128 | wait(0.1); |
clementb | 4:1a6e5f38f0d9 | 129 | ledV = 1; |
clementb | 4:1a6e5f38f0d9 | 130 | i = i++; |
clementb | 2:2728901fd798 | 131 | } |
clementb | 4:1a6e5f38f0d9 | 132 | |
clementb | 4:1a6e5f38f0d9 | 133 | if(menuR == 1 && menuL == 1 && ok == 0){ |
clementb | 2:2728901fd798 | 134 | page = 5; |
clementb | 2:2728901fd798 | 135 | } |
clementb | 4:1a6e5f38f0d9 | 136 | |
clementb | 4:1a6e5f38f0d9 | 137 | else if(menuL == 1){ |
clementb | 4:1a6e5f38f0d9 | 138 | if(page == 1){ |
clementb | 4:1a6e5f38f0d9 | 139 | page = 4; |
clementb | 4:1a6e5f38f0d9 | 140 | } |
clementb | 4:1a6e5f38f0d9 | 141 | else{ |
clementb | 4:1a6e5f38f0d9 | 142 | page = page--; |
clementb | 4:1a6e5f38f0d9 | 143 | } |
clementb | 4:1a6e5f38f0d9 | 144 | } |
clementb | 4:1a6e5f38f0d9 | 145 | else if(menuR == 1){ |
clementb | 4:1a6e5f38f0d9 | 146 | if(page == 4){ |
clementb | 4:1a6e5f38f0d9 | 147 | page = 1; |
clementb | 4:1a6e5f38f0d9 | 148 | } |
clementb | 4:1a6e5f38f0d9 | 149 | else{ |
clementb | 4:1a6e5f38f0d9 | 150 | page = page++; |
clementb | 4:1a6e5f38f0d9 | 151 | } |
clementb | 4:1a6e5f38f0d9 | 152 | } |
clementb | 4:1a6e5f38f0d9 | 153 | |
clementb | 2:2728901fd798 | 154 | lcd.locate(0, 1); |
clementb | 2:2728901fd798 | 155 | lcd.printf("OK ! Next : P%d ", page); |
clementb | 5:da214688a308 | 156 | wait(1); |
clementb | 4:1a6e5f38f0d9 | 157 | ledV = 0; |
clementb | 4:1a6e5f38f0d9 | 158 | ledY = 1; |
clementb | 3:dd4efdfbbf01 | 159 | lcd.cls(); |
clementb | 3:dd4efdfbbf01 | 160 | lcd.locate(0, 0); |
clementb | 3:dd4efdfbbf01 | 161 | lcd.printf("Loading P%d...", page); |
clementb | 3:dd4efdfbbf01 | 162 | lcd.locate(0, 1); |
clementb | 3:dd4efdfbbf01 | 163 | lcd.printf("P%d :",page); |
clementb | 3:dd4efdfbbf01 | 164 | lcd.locate(4, 1); |
clementb | 2:2728901fd798 | 165 | |
clementb | 2:2728901fd798 | 166 | /*------------------------------------------- P4 : down > up --------------------------------------------------------------*/ |
clementb | 1:c3a33d9372f5 | 167 | |
clementb | 1:c3a33d9372f5 | 168 | if(page == 4) { |
clementb | 3:dd4efdfbbf01 | 169 | lcd.printf("down > up "); |
clementb | 2:2728901fd798 | 170 | servoHL = 0; |
clementb | 2:2728901fd798 | 171 | i = 0; |
clementb | 5:da214688a308 | 172 | wait(2); |
clementb | 2:2728901fd798 | 173 | lcd.locate(3, 1); |
clementb | 3:dd4efdfbbf01 | 174 | lcd.printf(": x servo "); |
clementb | 4:1a6e5f38f0d9 | 175 | while(xPos<0.50){ |
clementb | 2:2728901fd798 | 176 | lcd.locate(0, 1); |
clementb | 3:dd4efdfbbf01 | 177 | xPos = xPos+0.01; |
clementb | 3:dd4efdfbbf01 | 178 | disp = xPos*100; |
clementb | 4:1a6e5f38f0d9 | 179 | servoRL = xPos; |
clementb | 3:dd4efdfbbf01 | 180 | lcd.printf("%3d", disp); |
clementb | 4:1a6e5f38f0d9 | 181 | wait(vitesse*10); |
clementb | 2:2728901fd798 | 182 | } |
clementb | 2:2728901fd798 | 183 | wait(1); |
clementb | 3:dd4efdfbbf01 | 184 | |
clementb | 3:dd4efdfbbf01 | 185 | |
clementb | 3:dd4efdfbbf01 | 186 | |
clementb | 2:2728901fd798 | 187 | ledY = 0; |
clementb | 2:2728901fd798 | 188 | lcd.cls(); |
clementb | 1:c3a33d9372f5 | 189 | lcd.locate(0,0); |
clementb | 1:c3a33d9372f5 | 190 | lcd.printf("Running P4... "); |
clementb | 2:2728901fd798 | 191 | lcd.locate(0, 1); |
clementb | 3:dd4efdfbbf01 | 192 | lcd.printf(" 0 : y servo"); |
clementb | 2:2728901fd798 | 193 | ledV = 1; |
clementb | 3:dd4efdfbbf01 | 194 | wait(1); |
clementb | 2:2728901fd798 | 195 | lcd.locate(0,1); |
clementb | 4:1a6e5f38f0d9 | 196 | while(yPos<1.00){ |
clementb | 2:2728901fd798 | 197 | lcd.locate(0,1); |
clementb | 3:dd4efdfbbf01 | 198 | yPos = yPos + 0.01; |
clementb | 3:dd4efdfbbf01 | 199 | disp = yPos*100; |
clementb | 3:dd4efdfbbf01 | 200 | lcd.printf("%3d", disp); |
clementb | 3:dd4efdfbbf01 | 201 | servoHL = yPos; |
clementb | 2:2728901fd798 | 202 | wait(vitesse); |
clementb | 2:2728901fd798 | 203 | } |
clementb | 5:da214688a308 | 204 | wait(1); |
clementb | 2:2728901fd798 | 205 | ledV = 0; |
clementb | 1:c3a33d9372f5 | 206 | } |
clementb | 2:2728901fd798 | 207 | |
clementb | 5:da214688a308 | 208 | /*---------------------------------------------------- P3 : left > right -----------------------------------------------------------------*/ |
clementb | 2:2728901fd798 | 209 | |
clementb | 1:c3a33d9372f5 | 210 | else if(page == 3) { |
clementb | 5:da214688a308 | 211 | lcd.printf("left > right"); |
clementb | 5:da214688a308 | 212 | wait(2); |
clementb | 2:2728901fd798 | 213 | lcd.locate(3, 1); |
clementb | 2:2728901fd798 | 214 | lcd.printf(": y servo "); |
clementb | 3:dd4efdfbbf01 | 215 | while(yPos<1.00){ |
clementb | 3:dd4efdfbbf01 | 216 | yPos = yPos+0.01; |
clementb | 2:2728901fd798 | 217 | servoHL = yPos; |
clementb | 3:dd4efdfbbf01 | 218 | disp = yPos*100; |
clementb | 3:dd4efdfbbf01 | 219 | lcd.locate(0, 1); |
clementb | 3:dd4efdfbbf01 | 220 | lcd.printf("%3d", disp); |
clementb | 3:dd4efdfbbf01 | 221 | wait(vitesse*10); |
clementb | 2:2728901fd798 | 222 | } |
clementb | 2:2728901fd798 | 223 | i = 0; |
clementb | 2:2728901fd798 | 224 | wait(1); |
clementb | 2:2728901fd798 | 225 | lcd.locate(5, 1); |
clementb | 2:2728901fd798 | 226 | lcd.printf("x"); |
clementb | 3:dd4efdfbbf01 | 227 | while(xPos<1.00){ |
clementb | 3:dd4efdfbbf01 | 228 | xPos = xPos+0.01; |
clementb | 2:2728901fd798 | 229 | servoRL = xPos; |
clementb | 3:dd4efdfbbf01 | 230 | disp = xPos*100; |
clementb | 3:dd4efdfbbf01 | 231 | lcd.locate(0, 1); |
clementb | 3:dd4efdfbbf01 | 232 | lcd.printf("%3d", disp); |
clementb | 3:dd4efdfbbf01 | 233 | wait(vitesse*10); |
clementb | 2:2728901fd798 | 234 | } |
clementb | 2:2728901fd798 | 235 | i = 100; |
clementb | 5:da214688a308 | 236 | wait(0.5); |
clementb | 2:2728901fd798 | 237 | lcd.locate(5, 1); |
clementb | 2:2728901fd798 | 238 | lcd.printf("y"); |
clementb | 3:dd4efdfbbf01 | 239 | while(yPos>0.00){ |
clementb | 3:dd4efdfbbf01 | 240 | yPos = yPos-0.01; |
clementb | 2:2728901fd798 | 241 | servoHL = yPos; |
clementb | 3:dd4efdfbbf01 | 242 | disp = yPos*100; |
clementb | 3:dd4efdfbbf01 | 243 | lcd.locate(0, 1); |
clementb | 3:dd4efdfbbf01 | 244 | lcd.printf("%3d", disp); |
clementb | 3:dd4efdfbbf01 | 245 | wait(vitesse*10); |
clementb | 2:2728901fd798 | 246 | } |
clementb | 2:2728901fd798 | 247 | wait(1); |
clementb | 2:2728901fd798 | 248 | ledY = 0; |
clementb | 2:2728901fd798 | 249 | lcd.cls(); |
clementb | 1:c3a33d9372f5 | 250 | lcd.locate(0,0); |
clementb | 1:c3a33d9372f5 | 251 | lcd.printf("Running P3... "); |
clementb | 2:2728901fd798 | 252 | lcd.locate(0, 1); |
clementb | 3:dd4efdfbbf01 | 253 | lcd.printf("100 : x servo"); |
clementb | 2:2728901fd798 | 254 | ledV = 1; |
clementb | 5:da214688a308 | 255 | wait(1); |
clementb | 2:2728901fd798 | 256 | i = 100; |
clementb | 3:dd4efdfbbf01 | 257 | while(xPos>0){ |
clementb | 3:dd4efdfbbf01 | 258 | xPos = xPos-0.01; |
clementb | 3:dd4efdfbbf01 | 259 | disp = xPos*100; |
clementb | 3:dd4efdfbbf01 | 260 | servoRL = xPos; |
clementb | 2:2728901fd798 | 261 | lcd.locate(0,1); |
clementb | 3:dd4efdfbbf01 | 262 | lcd.printf("%3d",disp); |
clementb | 2:2728901fd798 | 263 | wait(vitesse); |
clementb | 2:2728901fd798 | 264 | } |
clementb | 5:da214688a308 | 265 | wait(1); |
clementb | 2:2728901fd798 | 266 | ledV = 0; |
clementb | 1:c3a33d9372f5 | 267 | } |
clementb | 2:2728901fd798 | 268 | |
clementb | 2:2728901fd798 | 269 | /*---------------------------------------------------- P2 : up > down ----------------------------------------------------------------*/ |
clementb | 2:2728901fd798 | 270 | |
clementb | 3:dd4efdfbbf01 | 271 | else if(page == 2) { |
clementb | 3:dd4efdfbbf01 | 272 | lcd.printf("up > down "); |
clementb | 5:da214688a308 | 273 | wait(1); |
clementb | 2:2728901fd798 | 274 | |
clementb | 2:2728901fd798 | 275 | |
clementb | 2:2728901fd798 | 276 | |
clementb | 2:2728901fd798 | 277 | i = 0; //loading |
clementb | 2:2728901fd798 | 278 | lcd.locate(3, 1); |
clementb | 2:2728901fd798 | 279 | lcd.printf(": y servo "); |
clementb | 3:dd4efdfbbf01 | 280 | while(yPos<1.00){ |
clementb | 3:dd4efdfbbf01 | 281 | yPos = yPos+0.01; |
clementb | 2:2728901fd798 | 282 | servoHL = yPos; |
clementb | 3:dd4efdfbbf01 | 283 | disp = yPos*100; |
clementb | 3:dd4efdfbbf01 | 284 | lcd.locate(0, 1); |
clementb | 3:dd4efdfbbf01 | 285 | lcd.printf("%3d", disp); |
clementb | 3:dd4efdfbbf01 | 286 | wait(vitesse*10); |
clementb | 5:da214688a308 | 287 | }; |
clementb | 2:2728901fd798 | 288 | lcd.locate(5, 1); |
clementb | 2:2728901fd798 | 289 | lcd.printf("x"); |
clementb | 3:dd4efdfbbf01 | 290 | while(xPos<0.50){ |
clementb | 3:dd4efdfbbf01 | 291 | xPos = xPos+0.01; |
clementb | 2:2728901fd798 | 292 | servoRL = xPos; |
clementb | 3:dd4efdfbbf01 | 293 | disp = xPos*100; |
clementb | 3:dd4efdfbbf01 | 294 | lcd.locate(0, 1); |
clementb | 3:dd4efdfbbf01 | 295 | lcd.printf("%3d", disp); |
clementb | 3:dd4efdfbbf01 | 296 | wait(vitesse*10); |
clementb | 2:2728901fd798 | 297 | } |
clementb | 2:2728901fd798 | 298 | lcd.locate(5, 1); |
clementb | 2:2728901fd798 | 299 | lcd.printf("y"); |
clementb | 3:dd4efdfbbf01 | 300 | while(yPos >0.61){ |
clementb | 3:dd4efdfbbf01 | 301 | yPos = yPos-0.01; |
clementb | 2:2728901fd798 | 302 | servoHL = yPos; |
clementb | 3:dd4efdfbbf01 | 303 | disp = yPos*100; |
clementb | 3:dd4efdfbbf01 | 304 | lcd.locate(0, 1); |
clementb | 3:dd4efdfbbf01 | 305 | lcd.printf("%3d", disp); |
clementb | 3:dd4efdfbbf01 | 306 | wait(vitesse*10); |
clementb | 2:2728901fd798 | 307 | } |
clementb | 2:2728901fd798 | 308 | wait(1); |
clementb | 2:2728901fd798 | 309 | |
clementb | 2:2728901fd798 | 310 | |
clementb | 2:2728901fd798 | 311 | |
clementb | 2:2728901fd798 | 312 | ledY = 0; //running |
clementb | 2:2728901fd798 | 313 | lcd.cls(); |
clementb | 1:c3a33d9372f5 | 314 | lcd.locate(0,0); |
clementb | 1:c3a33d9372f5 | 315 | lcd.printf("Running P2... "); |
clementb | 2:2728901fd798 | 316 | lcd.locate(0, 1); |
clementb | 3:dd4efdfbbf01 | 317 | lcd.printf(" 60: y degrees"); |
clementb | 2:2728901fd798 | 318 | ledV = 1; |
clementb | 3:dd4efdfbbf01 | 319 | wait(1); |
clementb | 3:dd4efdfbbf01 | 320 | yPos = 0.60; |
clementb | 3:dd4efdfbbf01 | 321 | while(yPos>0.00){ |
clementb | 3:dd4efdfbbf01 | 322 | disp = yPos*100; |
clementb | 2:2728901fd798 | 323 | lcd.locate(0,1); |
clementb | 3:dd4efdfbbf01 | 324 | lcd.printf("%3d", disp); |
clementb | 3:dd4efdfbbf01 | 325 | yPos = yPos-0.01; |
clementb | 3:dd4efdfbbf01 | 326 | servoHL = yPos; |
clementb | 2:2728901fd798 | 327 | wait(vitesse); |
clementb | 2:2728901fd798 | 328 | } |
clementb | 3:dd4efdfbbf01 | 329 | yPos = 0.00; |
clementb | 5:da214688a308 | 330 | ok = 0.50; |
clementb | 5:da214688a308 | 331 | xPos = 0.00; |
clementb | 2:2728901fd798 | 332 | wait(3); |
clementb | 2:2728901fd798 | 333 | ledV = 0; |
clementb | 1:c3a33d9372f5 | 334 | } |
clementb | 2:2728901fd798 | 335 | |
clementb | 5:da214688a308 | 336 | /*---------------------------------------------- P1 : righ > left ------------------------------------------------------------------*/ |
clementb | 2:2728901fd798 | 337 | |
clementb | 3:dd4efdfbbf01 | 338 | else if(page == 1){ |
clementb | 5:da214688a308 | 339 | lcd.printf("right > left"); |
clementb | 5:da214688a308 | 340 | wait(1); |
clementb | 2:2728901fd798 | 341 | |
clementb | 5:da214688a308 | 342 | ledY = 0; //running |
clementb | 5:da214688a308 | 343 | lcd.cls(); |
clementb | 5:da214688a308 | 344 | lcd.locate(0,0); |
clementb | 5:da214688a308 | 345 | lcd.printf("Running P1... "); |
clementb | 2:2728901fd798 | 346 | lcd.locate(0, 1); |
clementb | 5:da214688a308 | 347 | lcd.printf(" 0 : x degrees"); |
clementb | 5:da214688a308 | 348 | ledV = 1; |
clementb | 5:da214688a308 | 349 | wait(0.5); |
clementb | 5:da214688a308 | 350 | xPos = 0.00; |
clementb | 5:da214688a308 | 351 | while(xPos<1.00){ |
clementb | 5:da214688a308 | 352 | xPos = xPos+0.01; |
clementb | 5:da214688a308 | 353 | servoRL = xPos; |
clementb | 5:da214688a308 | 354 | disp = xPos*100; |
clementb | 5:da214688a308 | 355 | lcd.locate(0, 1); |
clementb | 5:da214688a308 | 356 | lcd.printf("%3d", disp); |
clementb | 5:da214688a308 | 357 | wait(vitesse); |
clementb | 5:da214688a308 | 358 | } |
clementb | 5:da214688a308 | 359 | wait(0.5); |
clementb | 5:da214688a308 | 360 | ledV = 0; |
clementb | 1:c3a33d9372f5 | 361 | } |
clementb | 2:2728901fd798 | 362 | |
clementb | 2:2728901fd798 | 363 | /*------------------------------------------------ P5 : manual mode ----------------------------------------------------------------*/ |
clementb | 2:2728901fd798 | 364 | |
clementb | 2:2728901fd798 | 365 | if(page == 5){ //home screen |
clementb | 2:2728901fd798 | 366 | ledY = 1; |
clementb | 2:2728901fd798 | 367 | lcd.cls(); |
clementb | 2:2728901fd798 | 368 | lcd.locate(0, 0); |
clementb | 2:2728901fd798 | 369 | lcd.printf("P5 : manual mode"); |
clementb | 2:2728901fd798 | 370 | lcd.locate(0,1); |
clementb | 2:2728901fd798 | 371 | lcd.printf("Button : exit"); |
clementb | 5:da214688a308 | 372 | wait(2); |
clementb | 4:1a6e5f38f0d9 | 373 | int j=0; |
clementb | 4:1a6e5f38f0d9 | 374 | lcd.locate(15, 1); |
clementb | 4:1a6e5f38f0d9 | 375 | while(j < 60){ |
clementb | 4:1a6e5f38f0d9 | 376 | ledV = 1; |
clementb | 4:1a6e5f38f0d9 | 377 | ledY = 0; |
clementb | 4:1a6e5f38f0d9 | 378 | i = rand(); |
clementb | 4:1a6e5f38f0d9 | 379 | lcd.printf("%d",i); |
clementb | 4:1a6e5f38f0d9 | 380 | wait(0.05); |
clementb | 4:1a6e5f38f0d9 | 381 | ledV = 0; |
clementb | 4:1a6e5f38f0d9 | 382 | ledY = 1; |
clementb | 4:1a6e5f38f0d9 | 383 | wait(0.05); |
clementb | 4:1a6e5f38f0d9 | 384 | j=j++; |
clementb | 4:1a6e5f38f0d9 | 385 | } |
clementb | 2:2728901fd798 | 386 | |
clementb | 2:2728901fd798 | 387 | |
clementb | 4:1a6e5f38f0d9 | 388 | while(i < 80){ |
clementb | 5:da214688a308 | 389 | lcd.cls(); |
clementb | 5:da214688a308 | 390 | disp = rand(); |
clementb | 5:da214688a308 | 391 | lcd.locate(0, 0); |
clementb | 5:da214688a308 | 392 | lcd.printf("How do you find"); |
clementb | 5:da214688a308 | 393 | lcd.locate(0, 1); |
clementb | 5:da214688a308 | 394 | lcd.printf("it ??? Go out !"); |
clementb | 5:da214688a308 | 395 | i = 0; |
clementb | 4:1a6e5f38f0d9 | 396 | ledV = 0; |
clementb | 4:1a6e5f38f0d9 | 397 | ledY = 1; |
clementb | 4:1a6e5f38f0d9 | 398 | wait(0.05); |
clementb | 4:1a6e5f38f0d9 | 399 | ledY = 0; |
clementb | 4:1a6e5f38f0d9 | 400 | ledV = 1; |
clementb | 4:1a6e5f38f0d9 | 401 | wait(0.05); |
clementb | 4:1a6e5f38f0d9 | 402 | if(menuL == 1 && menuR == 1){ |
clementb | 4:1a6e5f38f0d9 | 403 | i = i++; |
clementb | 4:1a6e5f38f0d9 | 404 | } |
clementb | 4:1a6e5f38f0d9 | 405 | } |
clementb | 2:2728901fd798 | 406 | |
clementb | 4:1a6e5f38f0d9 | 407 | ledY = 0; |
clementb | 4:1a6e5f38f0d9 | 408 | ledV = 0; |
clementb | 2:2728901fd798 | 409 | lcd.cls(); //loading |
clementb | 2:2728901fd798 | 410 | lcd.locate(0, 0); |
clementb | 2:2728901fd798 | 411 | lcd.printf("Servomotors will"); |
clementb | 2:2728901fd798 | 412 | lcd.locate(0, 1); |
clementb | 3:dd4efdfbbf01 | 413 | lcd.printf("be positioned as"); |
clementb | 4:1a6e5f38f0d9 | 414 | wait(2); |
clementb | 2:2728901fd798 | 415 | lcd.locate(0, 0); |
clementb | 3:dd4efdfbbf01 | 416 | lcd.printf("be positioned as"); |
clementb | 2:2728901fd798 | 417 | lcd.locate(0, 1); |
clementb | 2:2728901fd798 | 418 | lcd.printf("potentiometers, "); |
clementb | 4:1a6e5f38f0d9 | 419 | wait(2); |
clementb | 2:2728901fd798 | 420 | lcd.locate(0, 0); |
clementb | 2:2728901fd798 | 421 | lcd.printf("potentiometers, "); |
clementb | 2:2728901fd798 | 422 | lcd.locate(0, 1); |
clementb | 2:2728901fd798 | 423 | lcd.printf("please wait. "); |
clementb | 4:1a6e5f38f0d9 | 424 | wait(2); |
clementb | 2:2728901fd798 | 425 | lcd.cls(); |
clementb | 2:2728901fd798 | 426 | lcd.locate(4, 0); |
clementb | 2:2728901fd798 | 427 | lcd.printf(": x servo"); |
clementb | 2:2728901fd798 | 428 | lcd.locate(4, 1); |
clementb | 2:2728901fd798 | 429 | lcd.printf(": y servo"); |
clementb | 2:2728901fd798 | 430 | float mesure = analogX.read(); |
clementb | 3:dd4efdfbbf01 | 431 | xPos = (int) mesure*100; |
clementb | 3:dd4efdfbbf01 | 432 | xPos = xPos/100; |
clementb | 3:dd4efdfbbf01 | 433 | if(xPos>mesure){ |
clementb | 3:dd4efdfbbf01 | 434 | while(xPos>mesure){ |
clementb | 3:dd4efdfbbf01 | 435 | xPos = xPos-0.01; |
clementb | 3:dd4efdfbbf01 | 436 | servoRL = xPos; |
clementb | 3:dd4efdfbbf01 | 437 | disp = xPos*100; |
clementb | 3:dd4efdfbbf01 | 438 | lcd.locate(0, 0); |
clementb | 3:dd4efdfbbf01 | 439 | lcd.printf("%3d", disp); |
clementb | 3:dd4efdfbbf01 | 440 | wait(vitesse*10); |
clementb | 3:dd4efdfbbf01 | 441 | } |
clementb | 3:dd4efdfbbf01 | 442 | } |
clementb | 3:dd4efdfbbf01 | 443 | if(xPos<mesure){ |
clementb | 3:dd4efdfbbf01 | 444 | while(xPos<mesure){ |
clementb | 3:dd4efdfbbf01 | 445 | xPos = xPos+0.01; |
clementb | 3:dd4efdfbbf01 | 446 | servoRL = xPos; |
clementb | 3:dd4efdfbbf01 | 447 | disp = xPos*100; |
clementb | 3:dd4efdfbbf01 | 448 | lcd.locate(0, 0); |
clementb | 3:dd4efdfbbf01 | 449 | lcd.printf("%3d", disp); |
clementb | 3:dd4efdfbbf01 | 450 | wait(vitesse*10); |
clementb | 3:dd4efdfbbf01 | 451 | } |
clementb | 2:2728901fd798 | 452 | } |
clementb | 3:dd4efdfbbf01 | 453 | |
clementb | 2:2728901fd798 | 454 | mesure = analogY.read(); |
clementb | 3:dd4efdfbbf01 | 455 | yPos = (int) mesure*100; |
clementb | 3:dd4efdfbbf01 | 456 | yPos = yPos/100; |
clementb | 3:dd4efdfbbf01 | 457 | while(yPos!=mesure){ |
clementb | 3:dd4efdfbbf01 | 458 | if(yPos>mesure){ |
clementb | 3:dd4efdfbbf01 | 459 | yPos = yPos-0.01; |
clementb | 3:dd4efdfbbf01 | 460 | servoHL = yPos; |
clementb | 3:dd4efdfbbf01 | 461 | disp = yPos*100; |
clementb | 3:dd4efdfbbf01 | 462 | lcd.locate(0, 1); |
clementb | 3:dd4efdfbbf01 | 463 | lcd.printf("%3d", disp); |
clementb | 3:dd4efdfbbf01 | 464 | wait(vitesse*10); |
clementb | 3:dd4efdfbbf01 | 465 | } |
clementb | 3:dd4efdfbbf01 | 466 | else if(yPos<mesure){ |
clementb | 3:dd4efdfbbf01 | 467 | yPos = yPos+0.01; |
clementb | 3:dd4efdfbbf01 | 468 | servoHL = yPos; |
clementb | 3:dd4efdfbbf01 | 469 | disp = yPos*100; |
clementb | 3:dd4efdfbbf01 | 470 | lcd.locate(0, 1); |
clementb | 3:dd4efdfbbf01 | 471 | lcd.printf("%3d", disp); |
clementb | 3:dd4efdfbbf01 | 472 | wait(vitesse); |
clementb | 3:dd4efdfbbf01 | 473 | } |
clementb | 2:2728901fd798 | 474 | } |
clementb | 2:2728901fd798 | 475 | wait(1); |
clementb | 2:2728901fd798 | 476 | |
clementb | 2:2728901fd798 | 477 | |
clementb | 2:2728901fd798 | 478 | |
clementb | 4:1a6e5f38f0d9 | 479 | i=0; |
clementb | 4:1a6e5f38f0d9 | 480 | j = 20; |
clementb | 4:1a6e5f38f0d9 | 481 | lcd.locate(0, 0); |
clementb | 4:1a6e5f38f0d9 | 482 | while(i<j){ |
clementb | 4:1a6e5f38f0d9 | 483 | float mesure = analogX.read(); |
clementb | 4:1a6e5f38f0d9 | 484 | mesure = mesure*120; |
clementb | 4:1a6e5f38f0d9 | 485 | disp = rand(); |
clementb | 4:1a6e5f38f0d9 | 486 | xPos = mesure/100; |
clementb | 3:dd4efdfbbf01 | 487 | lcd.printf("%3d", disp); |
clementb | 4:1a6e5f38f0d9 | 488 | mesure = analogY.read(); |
clementb | 4:1a6e5f38f0d9 | 489 | mesure = mesure*120; |
clementb | 4:1a6e5f38f0d9 | 490 | disp = rand(); |
clementb | 4:1a6e5f38f0d9 | 491 | yPos = mesure/100; |
clementb | 4:1a6e5f38f0d9 | 492 | wait(0.5); |
clementb | 4:1a6e5f38f0d9 | 493 | i = i++; |
clementb | 3:dd4efdfbbf01 | 494 | } |
clementb | 4:1a6e5f38f0d9 | 495 | page = 4; |
clementb | 4:1a6e5f38f0d9 | 496 | ok = 1; |
clementb | 1:c3a33d9372f5 | 497 | } |
clementb | 2:2728901fd798 | 498 | } |
clementb | 0:9438fe754ab6 | 499 | } |