domingo, 9 de octubre de 2022

Máquina de refrescos con LabVIEW

 Este programa consiste en una máquina de refrescos donde a partir del dinero ingresado en el numeric_control llamado Dinero un comparador decidirá si es suficiente para comprar cualquiera de los tres refrescos disponible al momento de presionar el botón correspondiente a cada refresco. Si la cantidad es suficiente comenzará a llenarse el tank llamado Barra de llenado  y en el string_indicator llamado Mensajes aparecerá un mensaje que dice "Gracias, se está sirviendo " mas el nombre del refresco seleccionado, si el dinero es insuficiente mostrará un mensaje que indica "Dinero insuficiente". Si la cantidad ingresada es mayor al costo del refresco en el numeric_indicator llamdo Cambio mostrará el dinero restante de la operación. Una vez que se llena la barra de carga se detiene el programa pues se cumple una condición de paro de un ciclo while.


Como se puede ver en la imagen anterior, se usa un ciclo while que anida 3 estructuras case, que a su vez, anidan otro case cada una, y éste, un ciclo for.



Dentro del while, se utilizó unbundle by name para poder usar los botones del cluster individualmente. Estos tres botones se conectaron a una estructura case cada uno.

El mensaje de bienvenida no debe estar dentro de ningún case, ya que este se debe mostrar al momento de ejecutar el programa. Se usa un Select conectado a cualquiera de los tres botones, en este caso, el primero, si el botón se activa, no se muestra el mensaje, si no se activa, se muestra el mensaje de bienvenida. Esto es algo lógico, ya que se sabe que no se puede presionar ningún botón antes de correr el programa, entonces, obviamente se mostrará el mensaje antes que nada.

Todos los Case de los tres botones tienen lo mismo, solo cambia el costo de la bebida. En el primer case, estando en true, se evalúa si el dinero ingresado es igual o mayor que 15 (costo de la bebida). Si esto es verdadero, en un case anidado se hace la operación para mostrar el cambio.



También se muestra un mensaje que dice que ya se está preparando su bebida y se usa una variable local del indicador de texto.

Con un ciclo for se hace la simulación del llenado del vaso. Como se vio anteriormente, se usa un shift register como contador para ir llenando el vaso, empezando de cero y llenándose de 5 en 5 cada 200 milisegundos.

Después, si el valor del tanque es igual a 100, se manda la instrucción de detener el programa.

Si el valor del dinero ingresado es menor que 15, entonces el programa muestra un mensaje emergente que le indica al usuario que no le alcanza para esa compra.

Los siguientes dos case indican lo mismo, sólo cambia el valor del dinero y que se usan variable locales de los controles e indicadores.


Se utiliza un compound OR de tres casillas para detener el programa cuando el tanque de cualquiera de los tres botones llegue a 100.

Los case externos en su caso false no llevan nada,  hay que dar clic derecho al tunel del ciclo FOR, y en " Tunnel Mode" ---> Cambiarlo de "Indexing" (que es el valor por default) a "Last Value". Se repite el proceso  otras 2 veces (por los otros 2 ciclos FOR que hay). Los elementos cambio y barra de llenado se usan en el primer case directamente y en los otros dos como variable local.

Se agregan algunas imágenes del proceso de elaboración:




Este programa está basado en un ejemplo presentado en el video Simulador de Despachador de refrescos en LabVIEW - YouTube de la página Máquina de llenado de refrescos con LabVIEW - Masterhacks Blog

Se agrega el VI en el siguiente enlace:

https://drive.google.com/file/d/1Fwzkf5qjwchtmQBB9cxqmITGVHdIIpmE/view?usp=sharing