anda bastante

Dependencies:   mbed sMotor TextLCD Keypad

Revision:
0:b2e776fa7da9
diff -r 000000000000 -r b2e776fa7da9 main.cpp
--- /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