Código para o menu no LCD

Dependencies:   mbed SDFileSystemSD TextLCD

Fork of TextLCD_HelloWorld2 by Wim Huiskamp

Committer:
claraluques
Date:
Wed May 23 14:54:13 2018 +0000
Revision:
32:c293f89170b0
Parent:
31:77eb51d4ee18
Child:
33:0149960e95c1
est? salvando programa com nome, mas ? necessario segurar e clicar para sair da tela. tamb?m, arrumar o fato de salvar uma letra a mais qnd segura.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lucasfontenla 17:0b8e489fac36 1 #define tx PC_10
lucasfontenla 17:0b8e489fac36 2 #define rx PC_11
lucasfontenla 17:0b8e489fac36 3
lucasfontenla 17:0b8e489fac36 4 Serial Mach(tx, rx);
lucasfontenla 28:b3c51076ebe8 5 Timer t;
lucasfontenla 17:0b8e489fac36 6
lucasfontenla 29:558eccdfc079 7 string file_name;
lucasfontenla 29:558eccdfc079 8 vector <string> filenames;
lucasfontenla 29:558eccdfc079 9
lucasfontenla 17:0b8e489fac36 10 class Machine {
lucasfontenla 17:0b8e489fac36 11 int n;
lucasfontenla 17:0b8e489fac36 12 string buffer;
lucasfontenla 17:0b8e489fac36 13 char buffer_char[2];
lucasfontenla 17:0b8e489fac36 14
lucasfontenla 17:0b8e489fac36 15 public:
lucasfontenla 17:0b8e489fac36 16 int debug;
lucasfontenla 17:0b8e489fac36 17
lucasfontenla 17:0b8e489fac36 18 // PUBLIC FUNCTIONS ----------------------------------------------------------------------------------------------------------------------------------------
lucasfontenla 17:0b8e489fac36 19 void move_to(float x, float y, float z, string type, int speed){
lucasfontenla 17:0b8e489fac36 20
lucasfontenla 17:0b8e489fac36 21 }
lucasfontenla 17:0b8e489fac36 22
lucasfontenla 17:0b8e489fac36 23 void move(int x_axis, int y_axis, int z_axis, float pct_speed){
lucasfontenla 17:0b8e489fac36 24 buffer = "";
lucasfontenla 17:0b8e489fac36 25
lucasfontenla 17:0b8e489fac36 26 buffer.append("f");
lucasfontenla 17:0b8e489fac36 27
lucasfontenla 17:0b8e489fac36 28 //buffer.append("X");
lucasfontenla 17:0b8e489fac36 29 n = sprintf(buffer_char, "%d", x_axis);
lucasfontenla 17:0b8e489fac36 30 buffer.append(buffer_char);
lucasfontenla 17:0b8e489fac36 31
lucasfontenla 17:0b8e489fac36 32 //buffer.append("Y");
lucasfontenla 17:0b8e489fac36 33 n = sprintf(buffer_char, "%d", y_axis);
lucasfontenla 17:0b8e489fac36 34 buffer.append(buffer_char);
lucasfontenla 17:0b8e489fac36 35
lucasfontenla 17:0b8e489fac36 36 //buffer.append("Z");
lucasfontenla 17:0b8e489fac36 37 n = sprintf(buffer_char, "%d", z_axis);
lucasfontenla 17:0b8e489fac36 38 buffer.append(buffer_char);
lucasfontenla 17:0b8e489fac36 39
lucasfontenla 17:0b8e489fac36 40 buffer.append("F");
lucasfontenla 17:0b8e489fac36 41 n = sprintf(buffer_char, "%.2f", pct_speed);
lucasfontenla 17:0b8e489fac36 42 buffer.append(buffer_char);
lucasfontenla 17:0b8e489fac36 43
lucasfontenla 17:0b8e489fac36 44 send(buffer);
lucasfontenla 17:0b8e489fac36 45 }
lucasfontenla 17:0b8e489fac36 46
lucasfontenla 17:0b8e489fac36 47 void save_point(int mode, float pct_speed){
lucasfontenla 17:0b8e489fac36 48 buffer = "";
lucasfontenla 17:0b8e489fac36 49
lucasfontenla 17:0b8e489fac36 50 buffer.append("s");
lucasfontenla 17:0b8e489fac36 51
lucasfontenla 17:0b8e489fac36 52 n = sprintf(buffer_char, "M%d", mode);
lucasfontenla 17:0b8e489fac36 53 buffer.append(buffer_char);
lucasfontenla 17:0b8e489fac36 54
lucasfontenla 17:0b8e489fac36 55 n = sprintf(buffer_char, "F%.2f", pct_speed);
lucasfontenla 17:0b8e489fac36 56 buffer.append(buffer_char);
lucasfontenla 17:0b8e489fac36 57
lucasfontenla 17:0b8e489fac36 58 send(buffer);
lucasfontenla 17:0b8e489fac36 59 }
lucasfontenla 17:0b8e489fac36 60
lucasfontenla 17:0b8e489fac36 61 void start_program(void){
claraluques 20:ccbd80b668ce 62 send("b");
claraluques 20:ccbd80b668ce 63 printf("b\n\r");
lucasfontenla 17:0b8e489fac36 64 }
lucasfontenla 17:0b8e489fac36 65
lucasfontenla 17:0b8e489fac36 66 void cancel_program(void){
lucasfontenla 17:0b8e489fac36 67 send("c");
lucasfontenla 17:0b8e489fac36 68 }
lucasfontenla 17:0b8e489fac36 69
lucasfontenla 17:0b8e489fac36 70 void get_status(void){
lucasfontenla 17:0b8e489fac36 71 send("s");
lucasfontenla 17:0b8e489fac36 72 }
lucasfontenla 17:0b8e489fac36 73
lucasfontenla 17:0b8e489fac36 74 void machine_zero(void){
claraluques 26:59081efdce79 75 send("zm");
lucasfontenla 17:0b8e489fac36 76 }
lucasfontenla 17:0b8e489fac36 77
lucasfontenla 17:0b8e489fac36 78 void set_zero(string axis){
claraluques 27:83d2a710cc2f 79 buffer = "";
lucasfontenla 17:0b8e489fac36 80 buffer.append("z");
lucasfontenla 17:0b8e489fac36 81 buffer+=axis;
lucasfontenla 17:0b8e489fac36 82 send(buffer);
lucasfontenla 17:0b8e489fac36 83 }
lucasfontenla 17:0b8e489fac36 84
claraluques 19:2c890ae2d187 85 void jog(void){
claraluques 19:2c890ae2d187 86 send("j");
claraluques 20:ccbd80b668ce 87 printf("j\n\r");
claraluques 19:2c890ae2d187 88 }
claraluques 19:2c890ae2d187 89
claraluques 20:ccbd80b668ce 90 void kill_jog(void){
claraluques 20:ccbd80b668ce 91 send("jk");
claraluques 20:ccbd80b668ce 92 printf("jk\n\r");
claraluques 20:ccbd80b668ce 93 }
claraluques 20:ccbd80b668ce 94
claraluques 26:59081efdce79 95 void reset (void){
claraluques 26:59081efdce79 96 send("r");
claraluques 26:59081efdce79 97 }
claraluques 26:59081efdce79 98
lucasfontenla 28:b3c51076ebe8 99 void upload_gcode(string gcode){
lucasfontenla 28:b3c51076ebe8 100 buffer = "";
lucasfontenla 28:b3c51076ebe8 101 buffer.append("u");
lucasfontenla 28:b3c51076ebe8 102 buffer.append(gcode);
lucasfontenla 28:b3c51076ebe8 103
lucasfontenla 28:b3c51076ebe8 104 send(buffer);
lucasfontenla 28:b3c51076ebe8 105 }
claraluques 20:ccbd80b668ce 106
lucasfontenla 29:558eccdfc079 107 void get_saved_points(void){
lucasfontenla 29:558eccdfc079 108 send("l");
lucasfontenla 29:558eccdfc079 109 }
lucasfontenla 29:558eccdfc079 110
lucasfontenla 17:0b8e489fac36 111 private:
lucasfontenla 17:0b8e489fac36 112
lucasfontenla 17:0b8e489fac36 113 // PRIVATE FUNCTIONS ----------------------------------------------------------------------------------------------------------------------------------------
lucasfontenla 17:0b8e489fac36 114 void send(string msg){
lucasfontenla 17:0b8e489fac36 115 msg.append("x");
lucasfontenla 17:0b8e489fac36 116
lucasfontenla 17:0b8e489fac36 117 for(int i = 0; i < msg.length(); i++){
lucasfontenla 17:0b8e489fac36 118 Mach.putc(msg[i]);
claraluques 20:ccbd80b668ce 119 wait_ms(20);
lucasfontenla 17:0b8e489fac36 120 }
lucasfontenla 17:0b8e489fac36 121 }
claraluques 18:5338b83b4de9 122 };
claraluques 18:5338b83b4de9 123
claraluques 18:5338b83b4de9 124
lucasfontenla 28:b3c51076ebe8 125 Machine machine;
lucasfontenla 28:b3c51076ebe8 126
lucasfontenla 28:b3c51076ebe8 127 SDFileSystem sd(PB_15, PB_14, PB_13, PB_1, "sd"); //MOSI - D4, MISO - D5, SCLK - D3, CS - D7
lucasfontenla 28:b3c51076ebe8 128 DIR *dp;
lucasfontenla 28:b3c51076ebe8 129
lucasfontenla 29:558eccdfc079 130 string folderString = "Programas";
lucasfontenla 28:b3c51076ebe8 131
lucasfontenla 28:b3c51076ebe8 132 class SDCard{
lucasfontenla 28:b3c51076ebe8 133 public:
lucasfontenla 28:b3c51076ebe8 134 int save_GCODE(string name, string gcode){
lucasfontenla 29:558eccdfc079 135 string file_path = "/sd/" + folderString + "/" + name;
lucasfontenla 28:b3c51076ebe8 136 char * path = str_to_char(file_path);
lucasfontenla 28:b3c51076ebe8 137
lucasfontenla 28:b3c51076ebe8 138 printf(path);
lucasfontenla 28:b3c51076ebe8 139
lucasfontenla 28:b3c51076ebe8 140 printf("going...\n\r");
lucasfontenla 28:b3c51076ebe8 141
lucasfontenla 28:b3c51076ebe8 142 FILE *fp = fopen(path, "w");
lucasfontenla 28:b3c51076ebe8 143
lucasfontenla 28:b3c51076ebe8 144 if(fp == NULL) {
lucasfontenla 28:b3c51076ebe8 145 error("Could not open file for write\n\r");
lucasfontenla 28:b3c51076ebe8 146 return 0;
lucasfontenla 28:b3c51076ebe8 147 }
lucasfontenla 28:b3c51076ebe8 148
lucasfontenla 28:b3c51076ebe8 149 char * write_file = str_to_char(gcode);
lucasfontenla 28:b3c51076ebe8 150
lucasfontenla 28:b3c51076ebe8 151 fprintf(fp, write_file);
lucasfontenla 28:b3c51076ebe8 152 fclose(fp);
lucasfontenla 28:b3c51076ebe8 153
lucasfontenla 28:b3c51076ebe8 154 printf("Cool\n\r");
lucasfontenla 28:b3c51076ebe8 155
lucasfontenla 28:b3c51076ebe8 156 return 1;
lucasfontenla 28:b3c51076ebe8 157 }
lucasfontenla 28:b3c51076ebe8 158
lucasfontenla 28:b3c51076ebe8 159 int send_gcode(string name){
lucasfontenla 29:558eccdfc079 160 string file_path = "/sd/" + folderString + "/" + name;
lucasfontenla 28:b3c51076ebe8 161 char * path = str_to_char(file_path);
lucasfontenla 28:b3c51076ebe8 162 unsigned char c;
lucasfontenla 28:b3c51076ebe8 163 string buffer;
lucasfontenla 28:b3c51076ebe8 164
lucasfontenla 28:b3c51076ebe8 165 printf(path);
lucasfontenla 28:b3c51076ebe8 166
lucasfontenla 28:b3c51076ebe8 167 printf("going...\n\r");
lucasfontenla 28:b3c51076ebe8 168
lucasfontenla 28:b3c51076ebe8 169 FILE *fp = fopen(path, "r");
lucasfontenla 28:b3c51076ebe8 170
lucasfontenla 28:b3c51076ebe8 171 if(fp == NULL) {
lucasfontenla 28:b3c51076ebe8 172 error("Could not open file for write\n\r");
lucasfontenla 28:b3c51076ebe8 173 return 0;
lucasfontenla 28:b3c51076ebe8 174 }
lucasfontenla 28:b3c51076ebe8 175
lucasfontenla 28:b3c51076ebe8 176 t.start();
lucasfontenla 28:b3c51076ebe8 177
lucasfontenla 28:b3c51076ebe8 178 while(1){
lucasfontenla 29:558eccdfc079 179 if(t.read() > 4.0){
lucasfontenla 28:b3c51076ebe8 180 fclose(fp);
lucasfontenla 28:b3c51076ebe8 181 return 0;
lucasfontenla 28:b3c51076ebe8 182 }
lucasfontenla 28:b3c51076ebe8 183 c = fgetc(fp);
lucasfontenla 28:b3c51076ebe8 184 printf("%c\n\r", c);
lucasfontenla 28:b3c51076ebe8 185 buffer.push_back(c);
lucasfontenla 28:b3c51076ebe8 186
lucasfontenla 28:b3c51076ebe8 187 if(c == ';'){
lucasfontenla 28:b3c51076ebe8 188 fclose(fp);
lucasfontenla 28:b3c51076ebe8 189 break;
lucasfontenla 28:b3c51076ebe8 190 }
lucasfontenla 28:b3c51076ebe8 191 }
lucasfontenla 28:b3c51076ebe8 192 fclose(fp);
lucasfontenla 28:b3c51076ebe8 193
lucasfontenla 28:b3c51076ebe8 194 printf("%s\n\r", buffer);
lucasfontenla 28:b3c51076ebe8 195
lucasfontenla 28:b3c51076ebe8 196 machine.upload_gcode(buffer);
lucasfontenla 28:b3c51076ebe8 197 return 1;
lucasfontenla 28:b3c51076ebe8 198 }
lucasfontenla 28:b3c51076ebe8 199
lucasfontenla 28:b3c51076ebe8 200 int check_name_available(string name){
lucasfontenla 29:558eccdfc079 201 string file_path = "/sd/" + folderString;
lucasfontenla 28:b3c51076ebe8 202 char * dir = str_to_char(file_path);
lucasfontenla 28:b3c51076ebe8 203 struct dirent *dirp;
lucasfontenla 28:b3c51076ebe8 204 string filename;
lucasfontenla 28:b3c51076ebe8 205
lucasfontenla 28:b3c51076ebe8 206 printf(dir);
lucasfontenla 28:b3c51076ebe8 207
lucasfontenla 28:b3c51076ebe8 208 dp = opendir(dir);
lucasfontenla 28:b3c51076ebe8 209
lucasfontenla 29:558eccdfc079 210 t.start();
lucasfontenla 29:558eccdfc079 211
lucasfontenla 28:b3c51076ebe8 212 while((dirp = readdir(dp)) != NULL) {
lucasfontenla 29:558eccdfc079 213 if(t.read() > 2.0){
lucasfontenla 29:558eccdfc079 214 t.stop();
lucasfontenla 29:558eccdfc079 215 closedir(dp);
lucasfontenla 29:558eccdfc079 216 return 0;
lucasfontenla 29:558eccdfc079 217 }
lucasfontenla 28:b3c51076ebe8 218 filename = (dirp->d_name);
lucasfontenla 28:b3c51076ebe8 219 printf("%s\n\r", filename);
lucasfontenla 28:b3c51076ebe8 220 if(filename == name){
lucasfontenla 28:b3c51076ebe8 221 closedir(dp);
lucasfontenla 28:b3c51076ebe8 222 return 0;
lucasfontenla 28:b3c51076ebe8 223 }
lucasfontenla 28:b3c51076ebe8 224 }
lucasfontenla 28:b3c51076ebe8 225 closedir(dp);
lucasfontenla 28:b3c51076ebe8 226 return 1;
lucasfontenla 28:b3c51076ebe8 227 }
lucasfontenla 28:b3c51076ebe8 228
lucasfontenla 29:558eccdfc079 229 int get_file_names(void){
lucasfontenla 29:558eccdfc079 230 string file_path = "/sd/" + folderString;
lucasfontenla 29:558eccdfc079 231 char * dir = str_to_char(file_path);
lucasfontenla 29:558eccdfc079 232 struct dirent *dirp;
lucasfontenla 29:558eccdfc079 233 string filename;
lucasfontenla 29:558eccdfc079 234
lucasfontenla 29:558eccdfc079 235 filenames.empty();
lucasfontenla 29:558eccdfc079 236
lucasfontenla 29:558eccdfc079 237 printf(dir);
lucasfontenla 29:558eccdfc079 238
lucasfontenla 29:558eccdfc079 239 dp = opendir(dir);
lucasfontenla 29:558eccdfc079 240
lucasfontenla 29:558eccdfc079 241 while((dirp = readdir(dp)) != NULL) {
lucasfontenla 29:558eccdfc079 242 filename = (dirp->d_name);
lucasfontenla 29:558eccdfc079 243 printf("%s\n\r", filename);
lucasfontenla 29:558eccdfc079 244 filenames.push_back(filename);
lucasfontenla 29:558eccdfc079 245 }
lucasfontenla 29:558eccdfc079 246 return 1;
lucasfontenla 29:558eccdfc079 247 }
lucasfontenla 29:558eccdfc079 248
lucasfontenla 28:b3c51076ebe8 249 int create_folders(void){
lucasfontenla 29:558eccdfc079 250 int gotFolder = 0;
lucasfontenla 28:b3c51076ebe8 251 string filename;
lucasfontenla 28:b3c51076ebe8 252 struct dirent *dirp;
lucasfontenla 28:b3c51076ebe8 253
lucasfontenla 28:b3c51076ebe8 254 dp = opendir("/sd");
lucasfontenla 28:b3c51076ebe8 255
lucasfontenla 28:b3c51076ebe8 256 t.start();
lucasfontenla 28:b3c51076ebe8 257
lucasfontenla 28:b3c51076ebe8 258 while((dirp = readdir(dp)) != NULL) {
lucasfontenla 28:b3c51076ebe8 259 if(t.read() > 2){
lucasfontenla 28:b3c51076ebe8 260 t.stop();
lucasfontenla 28:b3c51076ebe8 261 return 0;
lucasfontenla 28:b3c51076ebe8 262 }
lucasfontenla 28:b3c51076ebe8 263 filename = (dirp->d_name);
lucasfontenla 28:b3c51076ebe8 264 printf("%s\n\r", filename);
lucasfontenla 29:558eccdfc079 265 if(filename == folderString){
lucasfontenla 29:558eccdfc079 266 gotFolder = 1;
lucasfontenla 29:558eccdfc079 267 }
lucasfontenla 28:b3c51076ebe8 268 }
lucasfontenla 28:b3c51076ebe8 269
lucasfontenla 29:558eccdfc079 270 if(!gotFolder){
lucasfontenla 29:558eccdfc079 271 char * path = str_to_char(("/sd/" + folderString));
lucasfontenla 28:b3c51076ebe8 272 mkdir(path, 0777);
lucasfontenla 28:b3c51076ebe8 273 }
lucasfontenla 28:b3c51076ebe8 274
lucasfontenla 28:b3c51076ebe8 275 closedir(dp);
lucasfontenla 28:b3c51076ebe8 276 return 1;
lucasfontenla 28:b3c51076ebe8 277 }
lucasfontenla 28:b3c51076ebe8 278
lucasfontenla 28:b3c51076ebe8 279 private:
lucasfontenla 28:b3c51076ebe8 280 char * str_to_char(string str){
lucasfontenla 28:b3c51076ebe8 281 char * path = new char[str.length() + 1];
lucasfontenla 28:b3c51076ebe8 282 std::strcpy(path, str.c_str());
lucasfontenla 28:b3c51076ebe8 283 return path;
lucasfontenla 28:b3c51076ebe8 284 }
lucasfontenla 28:b3c51076ebe8 285 };
lucasfontenla 28:b3c51076ebe8 286
lucasfontenla 28:b3c51076ebe8 287 SDCard sdcard;
lucasfontenla 28:b3c51076ebe8 288
claraluques 18:5338b83b4de9 289 //criar classe "menu" (funções para as telas)
claraluques 18:5338b83b4de9 290 class Menu{
claraluques 19:2c890ae2d187 291
claraluques 18:5338b83b4de9 292 public:
claraluques 18:5338b83b4de9 293 int linha;
claraluques 18:5338b83b4de9 294 int func;
claraluques 32:c293f89170b0 295 string nome;
claraluques 23:19c67758032d 296
claraluques 18:5338b83b4de9 297
claraluques 18:5338b83b4de9 298 void movercursor(int min, int max, int col){ //função para mover cursor de seleção
claraluques 18:5338b83b4de9 299 linha = min;
claraluques 18:5338b83b4de9 300 lcd.locate(col,min);
claraluques 18:5338b83b4de9 301 lcd.printf("%c", 0x3E);
claraluques 18:5338b83b4de9 302 while (bot_enter==penter){
claraluques 31:77eb51d4ee18 303 if (bot_cima==0){
claraluques 18:5338b83b4de9 304 if (linha==min){
claraluques 18:5338b83b4de9 305 lcd.locate(col,min);
claraluques 18:5338b83b4de9 306 lcd.printf(" ");
claraluques 18:5338b83b4de9 307 linha=max;
claraluques 18:5338b83b4de9 308 lcd.locate(col, linha);
claraluques 18:5338b83b4de9 309 lcd.printf("%c", 0x3E);
claraluques 18:5338b83b4de9 310 }
claraluques 18:5338b83b4de9 311 else {
claraluques 18:5338b83b4de9 312 lcd.locate(col,linha);
claraluques 18:5338b83b4de9 313 lcd.printf(" ");
claraluques 18:5338b83b4de9 314 linha--;
claraluques 18:5338b83b4de9 315 lcd.locate(col, linha);
claraluques 18:5338b83b4de9 316 lcd.printf("%c", 0x3E);
claraluques 18:5338b83b4de9 317 }
claraluques 31:77eb51d4ee18 318 bot_cima = 1;
claraluques 18:5338b83b4de9 319 }
claraluques 31:77eb51d4ee18 320 else if (bot_baixo==0){
claraluques 18:5338b83b4de9 321 if (linha==max){
claraluques 18:5338b83b4de9 322 lcd.locate(col,max);
claraluques 18:5338b83b4de9 323 lcd.printf(" ");
claraluques 18:5338b83b4de9 324 linha=min;
claraluques 18:5338b83b4de9 325 lcd.locate(col, linha);
claraluques 18:5338b83b4de9 326 lcd.printf("%c", 0x3E);
claraluques 18:5338b83b4de9 327 }
claraluques 18:5338b83b4de9 328 else {
claraluques 18:5338b83b4de9 329 lcd.locate(col,linha);
claraluques 18:5338b83b4de9 330 lcd.printf(" ");
claraluques 18:5338b83b4de9 331 linha++;
claraluques 18:5338b83b4de9 332 lcd.locate(col, linha);
claraluques 18:5338b83b4de9 333 lcd.printf("%c", 0x3E);
claraluques 18:5338b83b4de9 334 }
claraluques 31:77eb51d4ee18 335 bot_baixo = 1;
claraluques 18:5338b83b4de9 336 }
claraluques 26:59081efdce79 337 //função para printar as coordenadas nas telas 2 e 8
claraluques 31:77eb51d4ee18 338 /*else if (func==2 || func==8){
claraluques 26:59081efdce79 339 //x
claraluques 26:59081efdce79 340 if (cx<=-1 && cx>=-9){
claraluques 26:59081efdce79 341 lcd.locate(2,1);
claraluques 27:83d2a710cc2f 342 lcd.printf(" %.2f ", cx);
claraluques 26:59081efdce79 343 }
claraluques 26:59081efdce79 344 if (cx<=-10 && cx>=-99){
claraluques 26:59081efdce79 345 lcd.locate(2,1);
claraluques 27:83d2a710cc2f 346 lcd.printf(" %.2f ", cx);
claraluques 26:59081efdce79 347 }
claraluques 26:59081efdce79 348 if (cx<=-100){
claraluques 26:59081efdce79 349 lcd.locate(2,1);
claraluques 27:83d2a710cc2f 350 lcd.printf("%.2f ", cx);
claraluques 25:af1f99666ca9 351 }
claraluques 26:59081efdce79 352 if (cx<=9 && cx>=0){
claraluques 25:af1f99666ca9 353 lcd.locate(2,1);
claraluques 27:83d2a710cc2f 354 lcd.printf(" %.2f ", cx);
claraluques 25:af1f99666ca9 355 }
claraluques 25:af1f99666ca9 356 if (cx>=10 && cx<=99){
claraluques 25:af1f99666ca9 357 lcd.locate(2,1);
claraluques 27:83d2a710cc2f 358 lcd.printf(" %.2f ", cx);
claraluques 25:af1f99666ca9 359 }
claraluques 25:af1f99666ca9 360 if (cx>=100){
claraluques 25:af1f99666ca9 361 lcd.locate(2,1);
claraluques 27:83d2a710cc2f 362 lcd.printf(" %.2f ", cx);
claraluques 25:af1f99666ca9 363 }
claraluques 26:59081efdce79 364 //y
claraluques 26:59081efdce79 365 if (cy<=-1 && cy>=-9){
claraluques 26:59081efdce79 366 lcd.locate(2,2);
claraluques 27:83d2a710cc2f 367 lcd.printf(" %.2f ", cy);
claraluques 26:59081efdce79 368 }
claraluques 26:59081efdce79 369 if (cy<=-10 && cx>=-99){
claraluques 26:59081efdce79 370 lcd.locate(2,2);
claraluques 27:83d2a710cc2f 371 lcd.printf(" %.2f ", cy);
claraluques 26:59081efdce79 372 }
claraluques 26:59081efdce79 373 if (cy<=-100){
claraluques 26:59081efdce79 374 lcd.locate(2,2);
claraluques 27:83d2a710cc2f 375 lcd.printf("%.2f ", cy);
claraluques 25:af1f99666ca9 376 }
claraluques 26:59081efdce79 377 if (cy<=9 && cy>=0){
claraluques 25:af1f99666ca9 378 lcd.locate(2,2);
claraluques 27:83d2a710cc2f 379 lcd.printf(" %.2f ", cy);
claraluques 25:af1f99666ca9 380 }
claraluques 25:af1f99666ca9 381 if (cy>=10 && cx<=99){
claraluques 25:af1f99666ca9 382 lcd.locate(2,2);
claraluques 27:83d2a710cc2f 383 lcd.printf(" %.2f ", cy);
claraluques 25:af1f99666ca9 384 }
claraluques 25:af1f99666ca9 385 if (cy>=100){
claraluques 25:af1f99666ca9 386 lcd.locate(2,2);
claraluques 27:83d2a710cc2f 387 lcd.printf(" %.2f ", cy);
claraluques 25:af1f99666ca9 388 }
claraluques 26:59081efdce79 389 //z
claraluques 26:59081efdce79 390 if (cz<=-1 && cz>=-9){
claraluques 26:59081efdce79 391 lcd.locate(2,3);
claraluques 27:83d2a710cc2f 392 lcd.printf(" %.2f ", cz);
claraluques 26:59081efdce79 393 }
claraluques 26:59081efdce79 394 if (cz<=-10 && cx>=-99){
claraluques 26:59081efdce79 395 lcd.locate(2,3);
claraluques 27:83d2a710cc2f 396 lcd.printf(" %.2f ", cz);
claraluques 26:59081efdce79 397 }
claraluques 26:59081efdce79 398 if (cz<=-100){
claraluques 26:59081efdce79 399 lcd.locate(2,3);
claraluques 27:83d2a710cc2f 400 lcd.printf("%.2f ", cz);
claraluques 26:59081efdce79 401 }
claraluques 26:59081efdce79 402 if (cz<=9 && cz>=0){
claraluques 25:af1f99666ca9 403 lcd.locate(2,3);
claraluques 27:83d2a710cc2f 404 lcd.printf(" %.2f ", cz);
claraluques 25:af1f99666ca9 405 }
claraluques 25:af1f99666ca9 406 if (cz>=10 && cx<=99){
claraluques 25:af1f99666ca9 407 lcd.locate(2,3);
claraluques 27:83d2a710cc2f 408 lcd.printf(" %.2f ", cz);
claraluques 25:af1f99666ca9 409 }
claraluques 25:af1f99666ca9 410 if (cz>=100){
claraluques 25:af1f99666ca9 411 lcd.locate(2,3);
claraluques 27:83d2a710cc2f 412 lcd.printf(" %.2f ", cz);
claraluques 25:af1f99666ca9 413 }
claraluques 26:59081efdce79 414 } //até aqui, para alinhar os números
lucasfontenla 22:22ddb0b21d48 415 if (Mach.readable()){
claraluques 21:7603fe283ba4 416 readSerial();
claraluques 31:77eb51d4ee18 417 }*/
claraluques 18:5338b83b4de9 418 }
claraluques 26:59081efdce79 419
claraluques 18:5338b83b4de9 420 }
claraluques 32:c293f89170b0 421
claraluques 32:c293f89170b0 422 /*void inicializar(){
claraluques 32:c293f89170b0 423 while (1){
claraluques 32:c293f89170b0 424 printf("%d,%d\n\r", bot_enter, penter);
claraluques 32:c293f89170b0 425 wait(0.5);
claraluques 32:c293f89170b0 426 }
claraluques 32:c293f89170b0 427 }*/
claraluques 18:5338b83b4de9 428
claraluques 18:5338b83b4de9 429 //func 0
claraluques 18:5338b83b4de9 430 void inicializar(){ //função tela incial de boas-vindas
lucasfontenla 28:b3c51076ebe8 431 int status;
lucasfontenla 28:b3c51076ebe8 432
lucasfontenla 28:b3c51076ebe8 433 printf("Starting...\n\r");
lucasfontenla 28:b3c51076ebe8 434
claraluques 26:59081efdce79 435 machine.reset();
claraluques 18:5338b83b4de9 436 lcd.cls();
claraluques 18:5338b83b4de9 437 lcd.locate(4,0);
claraluques 18:5338b83b4de9 438 lcd.printf("Bem-vindo(a)");
claraluques 18:5338b83b4de9 439 lcd.locate(0,1);
claraluques 18:5338b83b4de9 440 lcd.printf("Utilize seu EPI para operar a maquina.");
claraluques 18:5338b83b4de9 441 wait(1);
lucasfontenla 28:b3c51076ebe8 442
claraluques 30:614dcbd74cdc 443 /*status = sdcard.get_file_names();
lucasfontenla 29:558eccdfc079 444 if(status){
lucasfontenla 29:558eccdfc079 445 printf("Filenames: \n\r");
lucasfontenla 29:558eccdfc079 446 for(int i = 0; i < filenames.size(); i++){
lucasfontenla 29:558eccdfc079 447 printf("%s\n\r", filenames[i]);
lucasfontenla 29:558eccdfc079 448 }
claraluques 30:614dcbd74cdc 449 }*/
claraluques 18:5338b83b4de9 450 func = 1;
claraluques 18:5338b83b4de9 451 }
claraluques 18:5338b83b4de9 452
claraluques 18:5338b83b4de9 453 //func 1
claraluques 18:5338b83b4de9 454 void menuprincipal(){ //função menu principal
claraluques 31:77eb51d4ee18 455 bot_enter = penter;
claraluques 18:5338b83b4de9 456 lcd.cls();
claraluques 18:5338b83b4de9 457 lcd.locate(1,0);
claraluques 18:5338b83b4de9 458 lcd.printf("Modo JOG");
claraluques 18:5338b83b4de9 459 lcd.locate(1,1);
claraluques 18:5338b83b4de9 460 lcd.printf("Modo Automatico");
claraluques 18:5338b83b4de9 461 lcd.locate(1,2);
claraluques 26:59081efdce79 462 lcd.printf("Zerar");
claraluques 18:5338b83b4de9 463 lcd.locate(1,3);
claraluques 26:59081efdce79 464 lcd.printf("Config");
claraluques 18:5338b83b4de9 465 movercursor(0,3,0);
claraluques 18:5338b83b4de9 466 if (bot_enter!=penter){
claraluques 18:5338b83b4de9 467 if (linha==0){
claraluques 18:5338b83b4de9 468 func = 2;
claraluques 18:5338b83b4de9 469 }
claraluques 18:5338b83b4de9 470 else if (linha==1) {
claraluques 18:5338b83b4de9 471 func = 3;
claraluques 18:5338b83b4de9 472 }
claraluques 18:5338b83b4de9 473 else if (linha==2) {
claraluques 26:59081efdce79 474 func = 8;
claraluques 18:5338b83b4de9 475 }
claraluques 18:5338b83b4de9 476 else if (linha==3) {
claraluques 26:59081efdce79 477 func = 4;
claraluques 18:5338b83b4de9 478 }
claraluques 18:5338b83b4de9 479 }
claraluques 18:5338b83b4de9 480 }
claraluques 18:5338b83b4de9 481
claraluques 18:5338b83b4de9 482 //func 2
claraluques 18:5338b83b4de9 483 void jog(){ //função tela jog
claraluques 31:77eb51d4ee18 484 lcd.cls();
claraluques 31:77eb51d4ee18 485 bot_enter = penter;
claraluques 20:ccbd80b668ce 486 machine.kill_jog();
claraluques 20:ccbd80b668ce 487 wait(0.1);
claraluques 19:2c890ae2d187 488 machine.jog();
claraluques 18:5338b83b4de9 489 lcd.locate(4,0);
claraluques 18:5338b83b4de9 490 lcd.printf("Coordenadas:");
claraluques 18:5338b83b4de9 491 lcd.locate(0,1);
claraluques 18:5338b83b4de9 492 lcd.printf("X:");
claraluques 18:5338b83b4de9 493 lcd.locate(0,2);
claraluques 18:5338b83b4de9 494 lcd.printf("Y:");
claraluques 18:5338b83b4de9 495 lcd.locate(0,3);
claraluques 18:5338b83b4de9 496 lcd.printf("Z:");
claraluques 18:5338b83b4de9 497 lcd.locate(11,1);
claraluques 18:5338b83b4de9 498 lcd.printf("Salvar");
claraluques 18:5338b83b4de9 499 lcd.locate(11,2);
claraluques 18:5338b83b4de9 500 lcd.printf("Concluir");
claraluques 18:5338b83b4de9 501 lcd.locate(11,3);
claraluques 18:5338b83b4de9 502 lcd.printf("Cancelar");
claraluques 19:2c890ae2d187 503 movercursor(1,3,10);
claraluques 18:5338b83b4de9 504 if (bot_enter!=penter){
claraluques 20:ccbd80b668ce 505 if (linha==1){
claraluques 31:77eb51d4ee18 506 /*if (pontos==0 && maxpontos>=1){
claraluques 26:59081efdce79 507 cx_salva = 0;
claraluques 26:59081efdce79 508 cy_salva = 0;
claraluques 26:59081efdce79 509 cz_salva = 0;
claraluques 26:59081efdce79 510 pontos++;
claraluques 26:59081efdce79 511 maxpontos--;
claraluques 26:59081efdce79 512 func = 5;
claraluques 26:59081efdce79 513 }
claraluques 26:59081efdce79 514 else if (pontos>=1 && maxpontos>=1){
claraluques 18:5338b83b4de9 515 cx_salva = cx;
claraluques 18:5338b83b4de9 516 cy_salva = cy;
claraluques 18:5338b83b4de9 517 cz_salva = cz;
claraluques 31:77eb51d4ee18 518 */pontos++;
claraluques 26:59081efdce79 519 maxpontos--;
claraluques 31:77eb51d4ee18 520 func = 5;/*
claraluques 18:5338b83b4de9 521 }
claraluques 26:59081efdce79 522 else if (maxpontos==0){
claraluques 18:5338b83b4de9 523 func = 16;
claraluques 31:77eb51d4ee18 524 }*/
claraluques 18:5338b83b4de9 525 }
claraluques 18:5338b83b4de9 526 else if (linha==2) {
claraluques 27:83d2a710cc2f 527 machine.kill_jog();
claraluques 26:59081efdce79 528 func = 17;
claraluques 18:5338b83b4de9 529 }
claraluques 18:5338b83b4de9 530 else if (linha==3) {
claraluques 20:ccbd80b668ce 531 machine.kill_jog();
claraluques 26:59081efdce79 532 wait(0.1);
claraluques 26:59081efdce79 533 machine.cancel_program();
claraluques 18:5338b83b4de9 534 func = 1;
claraluques 18:5338b83b4de9 535 pontos = 10;
claraluques 18:5338b83b4de9 536 }
claraluques 18:5338b83b4de9 537 }
claraluques 18:5338b83b4de9 538 }
claraluques 18:5338b83b4de9 539
claraluques 18:5338b83b4de9 540 //func 3
claraluques 18:5338b83b4de9 541 void automatico(){ //tela modo automatico
claraluques 18:5338b83b4de9 542 lcd.cls();
claraluques 31:77eb51d4ee18 543 bot_enter = penter;
claraluques 18:5338b83b4de9 544 lcd.printf("Modo automatico");
claraluques 18:5338b83b4de9 545 lcd.locate(7,2);
claraluques 18:5338b83b4de9 546 lcd.printf("OK");
claraluques 18:5338b83b4de9 547 lcd.locate(7,3);
claraluques 18:5338b83b4de9 548 lcd.printf("Voltar");
claraluques 18:5338b83b4de9 549 movercursor(2,3,6);
claraluques 18:5338b83b4de9 550 if (bot_enter!=penter) {
claraluques 18:5338b83b4de9 551 if (linha==2){
claraluques 18:5338b83b4de9 552 func = 12;
claraluques 18:5338b83b4de9 553 }
claraluques 18:5338b83b4de9 554 else if (linha==3){
claraluques 18:5338b83b4de9 555 func = 1;
claraluques 18:5338b83b4de9 556 }
claraluques 18:5338b83b4de9 557 }
claraluques 18:5338b83b4de9 558 }
claraluques 18:5338b83b4de9 559
claraluques 18:5338b83b4de9 560 //func 4
claraluques 18:5338b83b4de9 561 void config() {
claraluques 18:5338b83b4de9 562 lcd.cls();
claraluques 31:77eb51d4ee18 563 bot_enter = penter;
claraluques 27:83d2a710cc2f 564 //printf("%d,tela\n\r", penter);
claraluques 18:5338b83b4de9 565 lcd.locate(1,0);
claraluques 18:5338b83b4de9 566 lcd.printf("Definir velocidade");
claraluques 18:5338b83b4de9 567 lcd.locate(1,1);
claraluques 18:5338b83b4de9 568 lcd.printf("Limpar seringa cola");
claraluques 18:5338b83b4de9 569 lcd.locate(1,2);
claraluques 26:59081efdce79 570 lcd.printf("Origem maquina");
claraluques 18:5338b83b4de9 571 lcd.locate(1,3);
claraluques 18:5338b83b4de9 572 lcd.printf("Voltar");
claraluques 18:5338b83b4de9 573 movercursor(0,3,0);
claraluques 18:5338b83b4de9 574 if (bot_enter!=penter){
claraluques 18:5338b83b4de9 575 if (linha==0) {
claraluques 18:5338b83b4de9 576 func = 13;
claraluques 18:5338b83b4de9 577 }
claraluques 18:5338b83b4de9 578 else if (linha==1) {
claraluques 18:5338b83b4de9 579 func = 14;
claraluques 18:5338b83b4de9 580 }
claraluques 18:5338b83b4de9 581 else if (linha==2) {
claraluques 27:83d2a710cc2f 582 home = 1;
claraluques 27:83d2a710cc2f 583 func = 18;
claraluques 18:5338b83b4de9 584 }
claraluques 18:5338b83b4de9 585 else if (linha==3) {
claraluques 18:5338b83b4de9 586 func = 1;
claraluques 18:5338b83b4de9 587 }
claraluques 18:5338b83b4de9 588 }
claraluques 18:5338b83b4de9 589 }
claraluques 18:5338b83b4de9 590
claraluques 18:5338b83b4de9 591 //func 5
claraluques 18:5338b83b4de9 592 void telasalvamento(){ //função para quando salvar um ponto
claraluques 18:5338b83b4de9 593 lcd.cls();
claraluques 18:5338b83b4de9 594 lcd.locate(0,0);
claraluques 18:5338b83b4de9 595 lcd.printf("Voce salvou");
claraluques 18:5338b83b4de9 596 lcd.locate(1,1);
claraluques 25:af1f99666ca9 597 lcd.printf("X:%.2f ", cx_salva);
claraluques 18:5338b83b4de9 598 lcd.locate(1,2);
claraluques 25:af1f99666ca9 599 lcd.printf("Y:%.2f ", cy_salva);
claraluques 18:5338b83b4de9 600 lcd.locate(1,3);
claraluques 25:af1f99666ca9 601 lcd.printf("Z:%.2f ", cz_salva);
claraluques 18:5338b83b4de9 602 lcd.locate(13,1);
claraluques 18:5338b83b4de9 603 lcd.printf("Pontos");
claraluques 18:5338b83b4de9 604 lcd.locate(13,2);
claraluques 18:5338b83b4de9 605 lcd.printf("livres");
claraluques 18:5338b83b4de9 606 lcd.locate(16,3);
claraluques 26:59081efdce79 607 lcd.printf("%d", maxpontos);
claraluques 18:5338b83b4de9 608 wait(1);
claraluques 18:5338b83b4de9 609 if (pontos>0){
claraluques 18:5338b83b4de9 610 func = 6;
claraluques 18:5338b83b4de9 611 }
claraluques 18:5338b83b4de9 612 else if (pontos==0){
claraluques 18:5338b83b4de9 613 func = 2;
claraluques 18:5338b83b4de9 614 }
claraluques 18:5338b83b4de9 615 }
claraluques 18:5338b83b4de9 616
claraluques 18:5338b83b4de9 617 //func 6
claraluques 18:5338b83b4de9 618 void telacola(){ //tela para escolher o tipo de sequencia da cola
claraluques 18:5338b83b4de9 619 lcd.cls();
claraluques 31:77eb51d4ee18 620 bot_enter = penter;
claraluques 18:5338b83b4de9 621 lcd.printf("P/ o proximo ponto:");
claraluques 18:5338b83b4de9 622 lcd.locate(3,1);
claraluques 18:5338b83b4de9 623 lcd.printf("Sem cola");
claraluques 18:5338b83b4de9 624 lcd.locate(3,2);
claraluques 18:5338b83b4de9 625 lcd.printf("Cola no ponto");
claraluques 18:5338b83b4de9 626 lcd.locate(3,3);
claraluques 18:5338b83b4de9 627 lcd.printf("Cola continua");
claraluques 18:5338b83b4de9 628 movercursor(1,3,2);
claraluques 18:5338b83b4de9 629 if (bot_enter!=penter){
claraluques 18:5338b83b4de9 630 if (linha==1){
claraluques 18:5338b83b4de9 631 cola = 0;
claraluques 18:5338b83b4de9 632 func = 2;
claraluques 18:5338b83b4de9 633 }
claraluques 18:5338b83b4de9 634 else if (linha==2) {
claraluques 18:5338b83b4de9 635 cola = 1;
claraluques 18:5338b83b4de9 636 func = 2;
claraluques 18:5338b83b4de9 637 }
claraluques 18:5338b83b4de9 638 else if (linha==3) {
claraluques 18:5338b83b4de9 639 cola = 2;
claraluques 18:5338b83b4de9 640 func = 2;
claraluques 18:5338b83b4de9 641 }
claraluques 20:ccbd80b668ce 642 machine.save_point(cola,2);
claraluques 18:5338b83b4de9 643 }
claraluques 18:5338b83b4de9 644 }
claraluques 18:5338b83b4de9 645
claraluques 18:5338b83b4de9 646 //func 7
claraluques 18:5338b83b4de9 647 void executarprograma() { //tela para selecionar se deseja executar o programa
claraluques 18:5338b83b4de9 648 lcd.cls();
claraluques 31:77eb51d4ee18 649 bot_enter = penter;
claraluques 18:5338b83b4de9 650 lcd.locate(2,0);
claraluques 18:5338b83b4de9 651 lcd.printf("VOCE CONCLUIU SEU");
claraluques 18:5338b83b4de9 652 lcd.locate(5,1);
claraluques 18:5338b83b4de9 653 lcd.printf("PROGRAMA.");
claraluques 18:5338b83b4de9 654 lcd.locate(0,2);
claraluques 18:5338b83b4de9 655 lcd.printf("Deseja");
claraluques 18:5338b83b4de9 656 lcd.locate(0,3);
claraluques 18:5338b83b4de9 657 lcd.printf("executa-lo?");
claraluques 18:5338b83b4de9 658 lcd.locate(14,2);
claraluques 18:5338b83b4de9 659 lcd.printf("Sim");
claraluques 18:5338b83b4de9 660 lcd.locate(14,3);
claraluques 18:5338b83b4de9 661 lcd.printf("Voltar");
claraluques 18:5338b83b4de9 662 movercursor(2,3,13);
claraluques 18:5338b83b4de9 663 if (bot_enter!=penter) {
claraluques 18:5338b83b4de9 664 if (linha==2){
claraluques 21:7603fe283ba4 665 machine.kill_jog();
claraluques 21:7603fe283ba4 666 wait(0.1);
claraluques 27:83d2a710cc2f 667 //machine.start_program();
claraluques 18:5338b83b4de9 668 exec = 1;
claraluques 18:5338b83b4de9 669 func = 9;
claraluques 18:5338b83b4de9 670 }
claraluques 18:5338b83b4de9 671 else if (linha==3){
claraluques 18:5338b83b4de9 672 exec = 0;
claraluques 18:5338b83b4de9 673 func = 2;
claraluques 18:5338b83b4de9 674 }
claraluques 18:5338b83b4de9 675 }
claraluques 18:5338b83b4de9 676 }
claraluques 18:5338b83b4de9 677
claraluques 18:5338b83b4de9 678 //func 8
claraluques 18:5338b83b4de9 679 void telazerar(){ //tela para zerar a máquina
claraluques 18:5338b83b4de9 680 lcd.cls();
claraluques 31:77eb51d4ee18 681 bot_enter = penter;
claraluques 26:59081efdce79 682 machine.kill_jog();
claraluques 26:59081efdce79 683 machine.jog();
claraluques 18:5338b83b4de9 684 lcd.locate(2,0);
claraluques 19:2c890ae2d187 685 lcd.printf("Zerar:");
claraluques 19:2c890ae2d187 686 lcd.locate(0,1);
claraluques 19:2c890ae2d187 687 lcd.printf("X:");
claraluques 19:2c890ae2d187 688 lcd.locate(0,2);
claraluques 19:2c890ae2d187 689 lcd.printf("Y:");
claraluques 19:2c890ae2d187 690 lcd.locate(0,3);
claraluques 19:2c890ae2d187 691 lcd.printf("Z:");
claraluques 19:2c890ae2d187 692 lcd.locate(13,0);
claraluques 19:2c890ae2d187 693 lcd.printf("X");
claraluques 19:2c890ae2d187 694 lcd.locate(13,1);
claraluques 19:2c890ae2d187 695 lcd.printf("Y");
claraluques 19:2c890ae2d187 696 lcd.locate(13,2);
claraluques 19:2c890ae2d187 697 lcd.printf("Z");
claraluques 19:2c890ae2d187 698 lcd.locate(13,3);
claraluques 19:2c890ae2d187 699 lcd.printf("Voltar");
claraluques 19:2c890ae2d187 700 movercursor(0,3,12);
claraluques 18:5338b83b4de9 701 if (bot_enter!=penter) {
claraluques 19:2c890ae2d187 702 if (linha==0){
claraluques 18:5338b83b4de9 703 cx = 0;
claraluques 19:2c890ae2d187 704 func = 10;
claraluques 19:2c890ae2d187 705 machine.set_zero("X");
claraluques 19:2c890ae2d187 706 }
claraluques 19:2c890ae2d187 707 else if (linha==1){
claraluques 18:5338b83b4de9 708 cy = 0;
claraluques 19:2c890ae2d187 709 func = 10;
claraluques 19:2c890ae2d187 710 machine.set_zero("Y");
claraluques 19:2c890ae2d187 711 }
claraluques 19:2c890ae2d187 712 else if (linha==2){
claraluques 18:5338b83b4de9 713 cz = 0;
claraluques 18:5338b83b4de9 714 func = 10;
claraluques 19:2c890ae2d187 715 machine.set_zero("Z");
claraluques 18:5338b83b4de9 716 }
claraluques 18:5338b83b4de9 717 else if (linha==3){
claraluques 18:5338b83b4de9 718 func = 1;
claraluques 26:59081efdce79 719 machine.kill_jog();
claraluques 18:5338b83b4de9 720 }
claraluques 18:5338b83b4de9 721 }
claraluques 18:5338b83b4de9 722 }
claraluques 18:5338b83b4de9 723
claraluques 18:5338b83b4de9 724 //func 9
claraluques 18:5338b83b4de9 725 void executando(){ //tela de executando
claraluques 18:5338b83b4de9 726 lcd.cls();
claraluques 27:83d2a710cc2f 727 machine.start_program();
claraluques 18:5338b83b4de9 728 lcd.locate(4,1);
claraluques 18:5338b83b4de9 729 lcd.printf("Executando");
claraluques 27:83d2a710cc2f 730 while (exec == 1){
claraluques 27:83d2a710cc2f 731 if (Mach.readable()){
claraluques 27:83d2a710cc2f 732 readSerial();
claraluques 27:83d2a710cc2f 733 }/*
claraluques 18:5338b83b4de9 734 lcd.locate(14,1);
claraluques 18:5338b83b4de9 735 lcd.printf(". ");
claraluques 18:5338b83b4de9 736 wait(0.5);
claraluques 18:5338b83b4de9 737 lcd.locate(14,1);
claraluques 18:5338b83b4de9 738 lcd.printf(".. ");
claraluques 18:5338b83b4de9 739 wait(0.5);
claraluques 18:5338b83b4de9 740 lcd.locate(14,1);
claraluques 18:5338b83b4de9 741 lcd.printf("...");
claraluques 18:5338b83b4de9 742 wait(0.5);
claraluques 18:5338b83b4de9 743 lcd.locate(14,1);
claraluques 18:5338b83b4de9 744 lcd.printf(" ");
claraluques 27:83d2a710cc2f 745 wait(0.5);*/
claraluques 18:5338b83b4de9 746 }
claraluques 27:83d2a710cc2f 747 printf("saiu\n\r");
claraluques 27:83d2a710cc2f 748 func = 11;
claraluques 18:5338b83b4de9 749 }
claraluques 18:5338b83b4de9 750
claraluques 18:5338b83b4de9 751 //func 10
claraluques 18:5338b83b4de9 752 void zerado() { //tela avisando que a máquina foi zerada
claraluques 18:5338b83b4de9 753 lcd.cls();
claraluques 18:5338b83b4de9 754 lcd.locate(5,1);
claraluques 18:5338b83b4de9 755 lcd.printf("Voce zerou");
claraluques 19:2c890ae2d187 756 lcd.locate(6,2);
claraluques 19:2c890ae2d187 757 lcd.printf("o eixo!");
claraluques 18:5338b83b4de9 758 wait(1);
claraluques 18:5338b83b4de9 759 func = 8;
claraluques 18:5338b83b4de9 760 }
claraluques 18:5338b83b4de9 761
claraluques 18:5338b83b4de9 762 //func 11
claraluques 18:5338b83b4de9 763 void finalizado() { //tela aviso programa finalizado
claraluques 18:5338b83b4de9 764 lcd.cls();
claraluques 18:5338b83b4de9 765 lcd.locate(6,1);
claraluques 18:5338b83b4de9 766 lcd.printf("PROGRAMA");
claraluques 18:5338b83b4de9 767 lcd.locate(5,2);
claraluques 18:5338b83b4de9 768 lcd.printf("FINALIZADO");
claraluques 18:5338b83b4de9 769 wait(1);
claraluques 18:5338b83b4de9 770 func = 1;
claraluques 18:5338b83b4de9 771 }
claraluques 18:5338b83b4de9 772
claraluques 18:5338b83b4de9 773 //func 12
claraluques 18:5338b83b4de9 774
claraluques 18:5338b83b4de9 775 //func 13
claraluques 18:5338b83b4de9 776
claraluques 18:5338b83b4de9 777 //func 14
claraluques 18:5338b83b4de9 778
claraluques 18:5338b83b4de9 779 //func 15
claraluques 27:83d2a710cc2f 780 void gohome(){
claraluques 27:83d2a710cc2f 781 lcd.cls();
claraluques 27:83d2a710cc2f 782 machine.machine_zero();
claraluques 27:83d2a710cc2f 783 while (home == 1){
claraluques 27:83d2a710cc2f 784 if (Mach.readable()){
claraluques 27:83d2a710cc2f 785 readSerial();
claraluques 27:83d2a710cc2f 786 }
claraluques 27:83d2a710cc2f 787 }
claraluques 27:83d2a710cc2f 788 func = 19;
claraluques 27:83d2a710cc2f 789 }
claraluques 18:5338b83b4de9 790
claraluques 18:5338b83b4de9 791 //func 16
claraluques 18:5338b83b4de9 792 void limitepontos(){ //tela para quando acabam os pontos
claraluques 18:5338b83b4de9 793 lcd.cls();
claraluques 26:59081efdce79 794 lcd.printf(" Voce atingiu o n%c maximo de pontos", 0xDF);
claraluques 26:59081efdce79 795 lcd.locate(9,2);
claraluques 26:59081efdce79 796 lcd.printf("(%d)", pontos);
claraluques 18:5338b83b4de9 797 lcd.locate(0,3);
claraluques 18:5338b83b4de9 798 lcd.printf("Conclua seu programa");
claraluques 18:5338b83b4de9 799 wait(1);
claraluques 18:5338b83b4de9 800 func = 2;
claraluques 21:7603fe283ba4 801 }
claraluques 26:59081efdce79 802
claraluques 26:59081efdce79 803 //func 17
claraluques 26:59081efdce79 804 void salvarprog(){
claraluques 26:59081efdce79 805 lcd.cls();
claraluques 31:77eb51d4ee18 806 bot_enter = penter;
claraluques 30:614dcbd74cdc 807 lcd.printf("Voce deseja salvar este programa?");
claraluques 26:59081efdce79 808 lcd.locate(5,2);
claraluques 26:59081efdce79 809 lcd.printf("Sim");
claraluques 26:59081efdce79 810 lcd.locate(5,3);
claraluques 26:59081efdce79 811 lcd.printf("Nao");
claraluques 26:59081efdce79 812 movercursor(2,3,4);
claraluques 26:59081efdce79 813 if (bot_enter!=penter){
claraluques 26:59081efdce79 814 if (linha==2){
claraluques 26:59081efdce79 815 salvar = 1;
claraluques 32:c293f89170b0 816 //printf("salvar\n\r");
claraluques 31:77eb51d4ee18 817 func = 20;
claraluques 26:59081efdce79 818 }
claraluques 26:59081efdce79 819 if (linha==3){
claraluques 26:59081efdce79 820 salvar = 0;
claraluques 31:77eb51d4ee18 821 func = 7;
claraluques 26:59081efdce79 822 }
claraluques 26:59081efdce79 823 }
claraluques 26:59081efdce79 824 }
claraluques 27:83d2a710cc2f 825
claraluques 27:83d2a710cc2f 826 //func 18
claraluques 27:83d2a710cc2f 827 void ctzhome(){
claraluques 27:83d2a710cc2f 828 lcd.cls();
claraluques 31:77eb51d4ee18 829 bot_enter = penter;
claraluques 27:83d2a710cc2f 830 lcd.printf("Certifique-se de que a maquina pode se");
claraluques 27:83d2a710cc2f 831 lcd.locate(5,2);
claraluques 27:83d2a710cc2f 832 lcd.printf("movimentar");
claraluques 27:83d2a710cc2f 833 lcd.locate(9,3);
claraluques 27:83d2a710cc2f 834 lcd.printf("OK");
claraluques 27:83d2a710cc2f 835 movercursor(3,3,8);
claraluques 27:83d2a710cc2f 836 if (bot_enter!=penter){
claraluques 27:83d2a710cc2f 837 if (linha==3){
claraluques 27:83d2a710cc2f 838 func = 15;
claraluques 27:83d2a710cc2f 839 }
claraluques 27:83d2a710cc2f 840 }
claraluques 27:83d2a710cc2f 841 }
claraluques 27:83d2a710cc2f 842
claraluques 27:83d2a710cc2f 843 //func 19
claraluques 27:83d2a710cc2f 844 void origem(){
claraluques 27:83d2a710cc2f 845 lcd.cls();
claraluques 27:83d2a710cc2f 846 lcd.locate(5,1);
claraluques 27:83d2a710cc2f 847 lcd.printf("A MAQUINA");
claraluques 27:83d2a710cc2f 848 lcd.locate(2,2);
claraluques 27:83d2a710cc2f 849 lcd.printf("ESTA NA ORIGEM");
claraluques 27:83d2a710cc2f 850 wait(1);
claraluques 27:83d2a710cc2f 851 func = 4;
claraluques 27:83d2a710cc2f 852 }
claraluques 26:59081efdce79 853
claraluques 30:614dcbd74cdc 854 //func 20
claraluques 30:614dcbd74cdc 855 void nomeprog(){
claraluques 32:c293f89170b0 856 nome = "";
claraluques 32:c293f89170b0 857 sair = 0;
claraluques 32:c293f89170b0 858 lcd.cls();
claraluques 31:77eb51d4ee18 859 bot_enter = penter;
claraluques 32:c293f89170b0 860 escrever();
claraluques 32:c293f89170b0 861 if (sair==1){
claraluques 32:c293f89170b0 862 printf("hey\n\r");
claraluques 32:c293f89170b0 863 nome.append(".txt");
claraluques 32:c293f89170b0 864 printf("%s\n\r", nome);
claraluques 32:c293f89170b0 865 int verificar = sdcard.check_name_available(nome);
claraluques 32:c293f89170b0 866 printf("%d", verificar);
claraluques 32:c293f89170b0 867 if (verificar==1){
claraluques 32:c293f89170b0 868 file_name = nome;
claraluques 32:c293f89170b0 869 machine.get_saved_points();
claraluques 32:c293f89170b0 870 printf("ok\n\r");
claraluques 32:c293f89170b0 871 func = 1;
claraluques 32:c293f89170b0 872 }
claraluques 32:c293f89170b0 873 else if (verificar==0){
claraluques 32:c293f89170b0 874 func = 21;
claraluques 32:c293f89170b0 875 printf("nok\n\r");
claraluques 32:c293f89170b0 876 }
claraluques 30:614dcbd74cdc 877 }
claraluques 30:614dcbd74cdc 878 }
claraluques 30:614dcbd74cdc 879
claraluques 32:c293f89170b0 880 //func 21
claraluques 32:c293f89170b0 881 void mudar_nome(){
claraluques 32:c293f89170b0 882 lcd.cls();
claraluques 32:c293f89170b0 883 wait(1);
claraluques 32:c293f89170b0 884 func = 20;
claraluques 32:c293f89170b0 885 }
claraluques 32:c293f89170b0 886
claraluques 30:614dcbd74cdc 887 //função para escrever nome arquivo
claraluques 32:c293f89170b0 888 void escrever(){
claraluques 32:c293f89170b0 889 char alfabeto[38] = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
claraluques 30:614dcbd74cdc 890 '0','1','2','3','4','5','6','7','8','9','-','_'};
claraluques 30:614dcbd74cdc 891 int imax = 37;
claraluques 30:614dcbd74cdc 892 int imin = 0;
claraluques 32:c293f89170b0 893 lcd.locate(1,1);
claraluques 32:c293f89170b0 894 while (sair==0){
claraluques 32:c293f89170b0 895 int i = 0;
claraluques 32:c293f89170b0 896 lcd.locate(1,1);
claraluques 32:c293f89170b0 897 lcd.printf("%s", nome);
claraluques 32:c293f89170b0 898 while (bot_enter==penter){
claraluques 32:c293f89170b0 899 if (bot_cima == 0){
claraluques 32:c293f89170b0 900 if (i==imin){
claraluques 32:c293f89170b0 901 i = imax;
claraluques 32:c293f89170b0 902 }
claraluques 32:c293f89170b0 903 else if (i>imin && i<=imax){
claraluques 32:c293f89170b0 904 i--;
claraluques 32:c293f89170b0 905 }
claraluques 32:c293f89170b0 906 bot_cima = 1;
claraluques 31:77eb51d4ee18 907 }
claraluques 32:c293f89170b0 908 else if (bot_baixo == 0){
claraluques 32:c293f89170b0 909 if (i==imax){
claraluques 32:c293f89170b0 910 i = imin;
claraluques 32:c293f89170b0 911 }
claraluques 32:c293f89170b0 912 else if (i<imax && i>=imin){
claraluques 32:c293f89170b0 913 i++;
claraluques 32:c293f89170b0 914 }
claraluques 32:c293f89170b0 915 bot_baixo = 1;
claraluques 32:c293f89170b0 916 }
claraluques 32:c293f89170b0 917 lcd.locate(coluna, 1);
claraluques 32:c293f89170b0 918 lcd.printf("%c", alfabeto[i]);
claraluques 31:77eb51d4ee18 919 }
claraluques 32:c293f89170b0 920 if (coluna<=18){
claraluques 32:c293f89170b0 921 if (coluna<18){
claraluques 32:c293f89170b0 922 coluna++;
claraluques 31:77eb51d4ee18 923 }
claraluques 32:c293f89170b0 924 char carac = alfabeto[i];
claraluques 32:c293f89170b0 925 nome.push_back(carac);
claraluques 32:c293f89170b0 926 printf("%s\n\r", nome);
claraluques 32:c293f89170b0 927 bot_enter = penter;
claraluques 32:c293f89170b0 928 }
claraluques 30:614dcbd74cdc 929 }
claraluques 30:614dcbd74cdc 930 }
claraluques 30:614dcbd74cdc 931
claraluques 26:59081efdce79 932 //função para ler os pontos
claraluques 21:7603fe283ba4 933 void readSerial(){
claraluques 21:7603fe283ba4 934 char recv;
lucasfontenla 24:46c3be0e8273 935 int points = 0;
lucasfontenla 24:46c3be0e8273 936 int pointx = 0;
lucasfontenla 24:46c3be0e8273 937 int pointy = 0;
lucasfontenla 24:46c3be0e8273 938 int pointz = 0;
claraluques 27:83d2a710cc2f 939 int action = 0;
lucasfontenla 29:558eccdfc079 940 int uploading_saved = 0;
lucasfontenla 24:46c3be0e8273 941 string coordx = "";
lucasfontenla 24:46c3be0e8273 942 string coordy = "";
lucasfontenla 24:46c3be0e8273 943 string coordz = "";
lucasfontenla 29:558eccdfc079 944 string recv_buffer;
claraluques 26:59081efdce79 945
claraluques 32:c293f89170b0 946
claraluques 21:7603fe283ba4 947 while(1){
claraluques 21:7603fe283ba4 948 recv = Mach.getc();
claraluques 27:83d2a710cc2f 949 printf("%c\n\r", recv);
claraluques 32:c293f89170b0 950 if (recv == 'a'){
claraluques 27:83d2a710cc2f 951 home = 0;
claraluques 27:83d2a710cc2f 952 exec = 0;
claraluques 26:59081efdce79 953 printf("oi\n\r");
claraluques 27:83d2a710cc2f 954 action = 1;
claraluques 26:59081efdce79 955 }
lucasfontenla 24:46c3be0e8273 956 if (recv == 'p'){
claraluques 21:7603fe283ba4 957 points = 1;
claraluques 23:19c67758032d 958 }
lucasfontenla 29:558eccdfc079 959 if(recv == 'u'){
lucasfontenla 29:558eccdfc079 960 uploading_saved = 1;
lucasfontenla 29:558eccdfc079 961 }
claraluques 23:19c67758032d 962 if (points){
lucasfontenla 24:46c3be0e8273 963 if (recv == 'X'){
claraluques 21:7603fe283ba4 964 pointx = 1;
lucasfontenla 24:46c3be0e8273 965 pointy = 0;
lucasfontenla 24:46c3be0e8273 966 pointz = 0;
claraluques 21:7603fe283ba4 967 }
lucasfontenla 24:46c3be0e8273 968 else if (recv == 'Y'){
claraluques 21:7603fe283ba4 969 pointy = 1;
lucasfontenla 24:46c3be0e8273 970 pointx = 0;
lucasfontenla 24:46c3be0e8273 971 pointz = 0;
claraluques 21:7603fe283ba4 972 }
lucasfontenla 24:46c3be0e8273 973 else if (recv == 'Z'){
claraluques 21:7603fe283ba4 974 pointz = 1;
lucasfontenla 24:46c3be0e8273 975 pointx = 0;
lucasfontenla 24:46c3be0e8273 976 pointy = 0;
claraluques 23:19c67758032d 977 }
lucasfontenla 24:46c3be0e8273 978 else if (recv == 'x'){
claraluques 23:19c67758032d 979 cx = atof(coordx.c_str());
claraluques 23:19c67758032d 980 cy = atof(coordy.c_str());
claraluques 23:19c67758032d 981 cz = atof(coordz.c_str());
claraluques 23:19c67758032d 982 printf("%s,%s,%s\n\r", coordx, coordy, coordz);
claraluques 21:7603fe283ba4 983 break;
claraluques 21:7603fe283ba4 984 }
claraluques 23:19c67758032d 985 }
claraluques 23:19c67758032d 986 if (pointx){
lucasfontenla 24:46c3be0e8273 987 if (recv!='X'){
claraluques 23:19c67758032d 988 coordx.push_back(recv);
claraluques 23:19c67758032d 989 }
claraluques 23:19c67758032d 990 }
claraluques 23:19c67758032d 991 if (pointy){
lucasfontenla 24:46c3be0e8273 992 if (recv!='Y'){
claraluques 23:19c67758032d 993 coordy.push_back(recv);
claraluques 23:19c67758032d 994 }
claraluques 23:19c67758032d 995 }
claraluques 23:19c67758032d 996 if (pointz){
lucasfontenla 24:46c3be0e8273 997 if (recv!='Z'){
claraluques 23:19c67758032d 998 coordz.push_back(recv);
claraluques 23:19c67758032d 999 }
claraluques 23:19c67758032d 1000 }
claraluques 27:83d2a710cc2f 1001 if (action){
claraluques 27:83d2a710cc2f 1002 if (recv=='x'){
claraluques 27:83d2a710cc2f 1003 break;
claraluques 27:83d2a710cc2f 1004 }
claraluques 27:83d2a710cc2f 1005 }
lucasfontenla 29:558eccdfc079 1006 if(recv == 'x' && uploading_saved){
lucasfontenla 29:558eccdfc079 1007 sdcard.save_GCODE(file_name, recv_buffer);
lucasfontenla 29:558eccdfc079 1008 break;
lucasfontenla 29:558eccdfc079 1009 } else if(uploading_saved && recv != 'u'){
lucasfontenla 29:558eccdfc079 1010 recv_buffer.push_back(recv);
claraluques 23:19c67758032d 1011 }
claraluques 21:7603fe283ba4 1012 }
lucasfontenla 29:558eccdfc079 1013 }
claraluques 23:19c67758032d 1014
claraluques 26:59081efdce79 1015
lucasfontenla 22:22ddb0b21d48 1016
claraluques 21:7603fe283ba4 1017 Menu(); //não apagar
lucasfontenla 17:0b8e489fac36 1018 };