anda bastante
Dependencies: mbed sMotor TextLCD Keypad
Revision 0:b2e776fa7da9, committed 2018-12-11
- Comitter:
- chacolla
- Date:
- Tue Dec 11 15:43:32 2018 +0000
- Commit message:
- anda un poco
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Keypad.lib Tue Dec 11 15:43:32 2018 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/grantphillips/code/Keypad/#4bbd88022a6f
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TextLCD.lib Tue Dec 11 15:43:32 2018 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/simon/code/TextLCD/#308d188a2d3a
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Tue Dec 11 15:43:32 2018 +0000 @@ -0,0 +1,638 @@ +#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 + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Tue Dec 11 15:43:32 2018 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/mbed_official/code/mbed/builds/e95d10626187 \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sMotor.lib Tue Dec 11 15:43:32 2018 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/XtaticO/code/sMotor/#4b3b9e047ce3