anda bastante
Dependencies: mbed sMotor TextLCD Keypad
main.cpp
- Committer:
- chacolla
- Date:
- 2018-12-11
- Revision:
- 0:b2e776fa7da9
File content as of revision 0:b2e776fa7da9:
#include "mbed.h" #include "TextLCD.h" #include "Keypad.h" #include "sMotor.h" enum{BIENVENIDA,hoola,hooola, SELECCIONAR,SELEC,PRESENTAR}; enum LCDtype{LCD16x2}; Serial blue(PTE0, PTE1); Serial pc(USBTX, USBRX); TextLCD lcd (PTC12,PTC13,PTC5,PTC6,PTC10,PTC11); Keypad teclado (PTB11, PTB10, PTB9, PTB8,PTE5,PTE4,PTE3,PTE2); sMotor motor(PTB0,PTB1,PTB2,PTB3); // crea un nuevo motor paso a paso: IN1, IN2, IN3, IN4 Timeout temp; Timeout tiempo; DigitalOut myled(LED1); DigitalIn sensor(PTD7); DigitalOut BOMBA1 (PTC7); DigitalOut BOMBA2 (PTC0); DigitalOut BOMBA3 (PTC3); DigitalOut BOMBA4 (PTC4); int step_speed = 1200 ; // establecer la velocidad del motor por defecto int numstep = 512 ; // define el giro completo de 360 ??grados int count = 0; char KEY; int estado= 0; int libre; int est =0; int seg = 0; int valor = 1; int posicion_actual= 3 ; int posicion_deseada; char serialA; char KEYS; int libres; int X=1; void teclado3(); void bebida1(); void bebida2(); void bebida3(); void bebida4(); void CHAU(); void menu(); void teclado2(); void porcentaje(); void opcion1(); void opcion2(); void opcion3(); void opcion4(); void precisar(); char rx[30]; int irx = 0; int cant1, cant2, cant3, cant4, posi; int bebidas; int combinaciones; int centenas; int decenas; int unidades; int final = 0; char auxi; int main() { BOMBA1 = 0; BOMBA2 = 0; BOMBA3 = 0; BOMBA4 = 0; blue.baud(9600); blue.printf("bluetooth\n"); pc.printf("pc\n"); // while(1) { //} menu(); while(1){ valor = sensor.read(); if(valor == 1){ blue.printf("Vaso detectado\r\n"); } if(valor == 0){ blue.printf("Vaso no detectado\r\n"); } while(1){ if (blue.readable()){ while(1){ rx[irx] = blue.getc(); if (rx[irx] == '+'){ if (irx > 3) { posi = (rx[1]); cant1 = (rx[2] - 0x30) * 10 + rx[3] - 0x30; cant2 = (rx[4] - 0x30) * 10 + rx[5] - 0x30; } else { posi = (rx[1]); cant1 = (rx[2] - 0x30) * 10 + rx[3] - 0x30; cant2 = 0; } for(int i = 0; i < 10;i++){ pc.printf("%02x ", rx[i]); } pc.printf("\n"); irx = 0; auxi = blue.getc(); break; } else { irx++; } } } teclado2(); pc.printf("---> %c %d %d \n", posi, cant1, cant2); switch(KEY ){ case '6': bebida1(); porcentaje(); X=1; bebida2(); porcentaje(); precisar(); X=1; break; case '7': bebida2(); porcentaje(); X=1; bebida3(); porcentaje(); precisar(); X=1; break; case '8': bebida4(); porcentaje(); X=1; bebida3(); porcentaje(); precisar(); X=1; break; case '9': bebida4(); porcentaje(); X=1; bebida1(); porcentaje(); precisar(); X=1; break; case '5': CHAU (); break; case '1': bebida1(); porcentaje(); precisar(); X=1; break; case '2': bebida2(); porcentaje(); precisar(); X=1; break; case '3': bebida3(); porcentaje(); precisar(); X=1; break; case '4': bebida4(); porcentaje(); precisar(); X=1; break; } switch(posi){ case '6': bebida1(); porcentaje(); bebida2(); porcentaje(); precisar(); break; case '7': bebida2(); porcentaje(); bebida3(); porcentaje(); precisar(); break; case '8': bebida4(); porcentaje(); bebida3(); porcentaje(); precisar(); break; case '9': bebida4(); porcentaje(); bebida1(); porcentaje(); precisar(); break; case '5': CHAU (); break; case '1': pc.printf("kllkkjkguyjh\n"); bebida1(); porcentaje(); precisar(); break; case '2': bebida2(); porcentaje(); precisar(); break; case '3': bebida3(); porcentaje(); precisar(); break; case '4': bebida4(); porcentaje(); precisar(); break; } posi = 0; } }} void menu(){ switch(estado){ case BIENVENIDA : lcd.printf("bienvenido a la mezcladora"); tiempo.attach(&menu, 4); estado= PRESENTAR; break; case PRESENTAR: lcd.cls(); lcd.locate(0,0); lcd.printf("Aca te presento mi menu"); tiempo.attach(&menu, 3); estado = SELECCIONAR; break; case SELECCIONAR: lcd.cls(); lcd.printf("COMB1 COMB2COMB3 COMB4"); tiempo.attach(&menu, 3); estado = SELEC; break; case SELEC: lcd.cls(); lcd.printf("NARANJA PERA MANGO MANZANA"); break; } } void porcentaje(){ if (cant1 == 0) { lcd.cls(); lcd.printf("selecciona su porcentaje"); wait(2); lcd.cls(); lcd.printf("10a24 25a45 46a65 66a80 "); while(X==1){ teclado3(); switch(KEYS){ case 'A': opcion1(); break; case 'B': opcion2(); break; case 'C': opcion3(); break; case 'D': opcion4(); break; } } } else { pc.printf("bt \n"); if (cant1 < 24) { opcion1(); } else if (cant1 < 46){ opcion2(); } else if (cant1 < 66){ opcion3(); } else { opcion4(); } } } void precisar(){ lcd.cls(); lcd.printf("precisas otra comb o bebida"); wait(2); lcd.cls(); lcd.printf("COMB1 COMB2COMB3 COMB4"); wait(2); lcd.printf("NARANJA PERA MANGO MANZANA"); } void opcion1(){ if(posicion_actual ==1){ lcd.cls(); lcd.printf("sirviendo naranja "); BOMBA2 = 1; wait(1); BOMBA2 =0; wait(2); } if(posicion_actual ==2){ lcd.cls(); lcd.printf("sirviendo pera"); BOMBA1= 1; wait(1); BOMBA1=0; wait(2); } if(posicion_actual ==3){ lcd.cls(); lcd.printf("sirviendo mango "); BOMBA3= 1; wait(1); BOMBA3 =0; wait(2); } if(posicion_actual ==4){ lcd.cls(); lcd.printf("sirviendo manzana "); BOMBA4 = 1; wait(1); BOMBA4 =0; wait(2); } X = 0; } void opcion2(){ if(posicion_actual ==1){ lcd.cls(); lcd.printf("sirviendo naranja "); BOMBA2 = 1; wait(1.5); BOMBA2 =0; wait(2); } if(posicion_actual ==2){ lcd.cls(); lcd.printf("sirviendo pera"); BOMBA1= 1; wait(1.5); BOMBA1=0; wait(2); } if(posicion_actual ==3){ lcd.cls(); lcd.printf("sirviendo mango "); BOMBA3= 1; wait(1.5); BOMBA3 =0; wait(2); } if(posicion_actual ==4){ lcd.cls(); lcd.printf("sirviendo manzana "); BOMBA4 = 1; wait(1.5); BOMBA4 =0; wait(2); } X=0; } void opcion3(){ if(posicion_actual ==1){ lcd.cls(); lcd.printf("sirviendo naranja "); BOMBA2 = 1; wait(2); BOMBA2 =0; wait(2); } if(posicion_actual ==2){ lcd.cls(); lcd.printf("sirviendo pera"); BOMBA1= 1; wait(2); BOMBA1=0; wait(2); } if(posicion_actual ==3){ lcd.cls(); lcd.printf("sirviendo mango "); BOMBA3= 1; wait(2); BOMBA3 =0; wait(2); } if(posicion_actual ==4){ lcd.cls(); lcd.printf("sirviendo manzana "); BOMBA4 = 1; wait(2); BOMBA4 =0; wait(2); } X=0; } void opcion4(){ if(posicion_actual ==1){ lcd.cls(); lcd.printf("sirviendo naranja "); BOMBA2 = 1; wait(2.5); BOMBA2 =0; wait(2); } if(posicion_actual ==2){ lcd.cls(); lcd.printf("sirviendo pera"); BOMBA1= 1; wait(2.5); BOMBA1=0; wait(2); } if(posicion_actual ==3){ lcd.cls(); lcd.printf("sirviendo mango "); BOMBA3= 1; wait(2.5); BOMBA3 =0; wait(2); } if(posicion_actual ==4){ lcd.cls(); lcd.printf("sirviendo manzana "); BOMBA4 = 1; wait(2.5); BOMBA4 =0; wait(2); } X=0; } void bebida1(){ pc.printf("uno\n"); lcd.cls(); posicion_deseada = 1; if(posicion_actual != posicion_deseada){ if(valor == 1){ while(posicion_deseada > posicion_actual){ motor.step(numstep/4,0,step_speed); posicion_actual++; lcd.printf(" girando el portavaso "); } while(posicion_deseada < posicion_actual){ motor.step(numstep/4,1,step_speed); posicion_actual--; lcd.printf(" girando el portavaso "); } if(posicion_deseada == posicion_actual){ lcd.cls(); lcd.printf("ya estoy en la posicion elegido"); wait(2); } } } } void bebida2(){ lcd.cls(); posicion_deseada = 2; if(posicion_actual != posicion_deseada) { if(valor == 1){ while(posicion_deseada > posicion_actual){ motor.step(numstep/4,0,step_speed); posicion_actual++; lcd.printf(" girando el portavaso "); } while(posicion_deseada < posicion_actual){ motor.step(numstep/4,1,step_speed); posicion_actual--; lcd.printf(" girando el portavaso "); } if(posicion_deseada == posicion_actual){ lcd.cls(); lcd.printf("ya estoy en la posicion elegido"); wait(2); } } } } void bebida3(){ lcd.cls(); posicion_deseada = 3; if(posicion_actual != posicion_deseada){ if(valor == 1){ while(posicion_deseada > posicion_actual){ motor.step(numstep/4,0,step_speed); posicion_actual++; lcd.printf(" girando el portavaso "); } while(posicion_deseada < posicion_actual){ motor.step(numstep/4,1,step_speed); posicion_actual--; lcd.printf(" girando el portavaso "); } if(posicion_deseada == posicion_actual){ lcd.cls(); lcd.printf("ya estoy en la posicion elegido"); wait(2); } } } } void bebida4(){ lcd.cls(); posicion_deseada = 4; if(posicion_actual != posicion_deseada) { if(valor == 1){ while(posicion_deseada > posicion_actual){ motor.step(numstep/4,0,step_speed); posicion_actual++; lcd.printf(" girando el portavaso "); } while(posicion_deseada < posicion_actual){ motor.step(numstep/4,1,step_speed); posicion_actual--; lcd.printf(" girando el portavaso "); } if(posicion_deseada == posicion_actual){ lcd.cls(); lcd.printf("ya estoy en la posicion elegido"); wait(2); } } } } void CHAU(){ posicion_deseada= 3; if(posicion_actual != posicion_deseada){ if(valor == 1){ while(posicion_deseada > posicion_actual){ motor.step(numstep/4,0,step_speed); posicion_actual++; lcd.printf(" girando el portavaso "); } while(posicion_deseada < posicion_actual){ motor.step(numstep/4,1,step_speed); posicion_actual--; lcd.printf(" girando el portavaso "); } if(posicion_deseada == posicion_actual){ lcd.cls(); lcd.printf("gracias por su visita :D"); wait(3); menu(); } } } } void teclado3(){ KEYS = teclado.ReadKey(); //empieza a leer cuando se presiona una tecla actual del teclado matricial en la cual se guarda en la variante KEY(clave) if(KEYS == '\0') libres = 1; //se establece el indicador cuando se liberan todas las teclas if((KEYS != '\0') && (libres == 1)){ //Si se pulsa una tecla de la matrix y se suelta la tecla anterior, se va cumplir la condicion lcd.printf("%c",KEYS); libres = 0; // es para salir del ciclo para volver al inicio de la funcion del teclado } } void teclado2(){ KEY = teclado.ReadKey(); //empieza a leer cuando se presiona una tecla actual del teclado matricial en la cual se guarda en la variante KEY(clave) if(KEY == '\0') libre = 1; //se establece el indicador cuando se liberan todas las teclas if((KEY != '\0') && (libre == 1)){ //Si se pulsa una tecla de la matrix y se suelta la tecla anterior, se va cumplir la condicion lcd.printf("%c",KEY); libre = 0; // es para salir del ciclo para volver al inicio de la funcion del teclado } }