anda bastante

Dependencies:   mbed sMotor TextLCD Keypad

Files at this revision

API Documentation at this revision

Comitter:
chacolla
Date:
Tue Dec 11 15:43:32 2018 +0000
Commit message:
anda un poco

Changed in this revision

Keypad.lib Show annotated file Show diff for this revision Revisions of this file
TextLCD.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
sMotor.lib Show annotated file Show diff for this revision Revisions of this file
--- /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