This is a program for a DIY robotic arm for demonstrates the capacities of the BIXI Bluetooth module

Dependencies:   Servo TextLCD mbed

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?

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