DrinkDream Lab

Máquina dispensadora de bebidas combinadas – G04

Grupo formado por: Delian Ionut Salagean, Natalia García Álvarez y Noemí Gallego Cañeque.

INTRODUCCIÓN PROYECTO

En el mundo de la electrónica, los sistemas empotrados se refieren a dispositivos que están diseñados para realizar tareas específicas y que están integrados en un sistema más grande. Estos sistemas pueden ser controlados por microcontroladores, que son dispositivos electrónicos capaces de procesar información y controlar otros dispositivos en un sistema.

En este proyecto, vamos a crear una máquina dispensadora de cubatas utilizando un microcontrolador Arduino. El objetivo de este proyecto es crear una solución práctica y divertida que demuestre las capacidades de los sistemas empotrados y de tiempo real.

La máquina dispensadora funcionará de la siguiente manera: al pulsar un botón específico, se dispensará una mezcla de bebida alcohólica y refresco en una cantidad determinada, dependiendo de la selección del usuario. Los botones disponibles son «chupito», «copa corta», «copa media» y «copa larga».

Para lograr este objetivo, utilizaremos una serie de componentes electrónicos, incluyendo resistores, transistores, diodos flyback, un buzzer y dos bombas de agua de 5V. Los resistores se utilizarán para limitar la corriente que fluye a través de los LED y los transistores se utilizarán para controlar el flujo de corriente a través de las bombas de agua.

Los diodos flyback se utilizan para proteger los transistores y otros componentes de los picos de tensión que se producen cuando se detiene el flujo de corriente a través de las bobinas de las bombas de agua. El buzzer se utilizará para emitir un sonido cuando se realice una selección, y la fuente de alimentación externa de 5V se utilizará para garantizar una alimentación adecuada de los componentes.

El microcontrolador Arduino se encargará de procesar la información y controlar los componentes electrónicos. Para programar el microcontrolador, utilizaremos el entorno de programación de Arduino y el lenguaje de programación C/C++. Programaremos el microcontrolador para que reconozca los botones pulsados, seleccione la cantidad adecuada de líquido y active las bombas de agua para dispensar la mezcla.

Además, para garantizar que el sistema funcione en tiempo real, debemos asegurarnos de que los tiempos de dispensación sean precisos y estén sincronizados con las selecciones del usuario. Para lograr esto, utilizaremos temporizadores y relojes internos del microcontrolador, lo que nos permitirá ajustar y sincronizar los tiempos de dispensación para cada selección.

En conclusión, este proyecto combina el uso de sistemas empotrados, programación y mecánica para crear una solución práctica y divertida para dispensar cubatas. Además, nos permitirá aprender y experimentar con el uso de Arduino y sus diferentes capacidades y componentes, así como también nos brindará la oportunidad de desarrollar habilidades en el manejo de sistemas en tiempo real.

Para la realización de este proyecto hemos hecho uso de las siguientes herramientas:

  1. Google Drive

Con el fin de tener la memoria compartida y para poder acceder a ella los tres con el fin de realizar dicha recopilación de información de la manera más completa posible. 

  1. Canva

Para la realización de las imágenes de una manera creativa. Cuando hablamos de imágenes nos referimos a: etiquetas de los botones, logo de nuestra marca…

  1. Arduino IDE

El  entorno de desarrollo integrado que hemos utilizado para programar el microcontrolador de Arduino.

  1. Fritzing

Con el fin de esclarecer la unión de componentes a la placa protoboard, hemos utilizado este programa para realizar el esquema hardware de nuestro proyecto.

MATERIALES

  1. Un buzzer

Un  buzzer es un dispositivo electromecánico utilizado en sistemas electrónicos para producir un sonido o una señal de alarma audible. Es un tipo de altavoz pequeño y económico que se utiliza comúnmente en aplicaciones de sistemas embebidos. Los buzzers pueden ser activados mediante una señal eléctrica y pueden producir un sonido constante o una serie de tonos para indicar diferentes situaciones. Los buzzers pueden ser de diferentes tipos, como los piezoeléctricos, que utilizan cristales piezoeléctricos para producir sonido, o los magnéticos, que utilizan un electroimán para generar vibraciones en una membrana para producir el sonido

  1. Una fuente de alimentación de 5V externa 

Es un dispositivo que se utiliza para suministrar energía eléctrica a un circuito o dispositivo electrónico desde una fuente de energía externa, en este caso, una toma de corriente. La salida de voltaje de esta fuente de alimentación es de 5V, lo que la hace adecuada para alimentar dispositivos electrónicos que requieren una fuente de alimentación de 5V. Estas fuentes de alimentación suelen estar diseñadas como adaptadores de corriente que se conectan a una toma de corriente y tienen un cable con un conector que se enchufa en el dispositivo electrónico. Estos adaptadores suelen ser pequeños y portátiles.

Aunque lo ideal sería hacer con una fuente de alimentación externa propiamente dicho, en nuestro caso usaremos la propia alimentación del ordenador que son 5V.

  1. Dos bombas de agua de 5V 

dispositivos que se utilizan para bombear agua o líquidos. Cada una de estas bombas de agua tiene un motor que funciona con una fuente de alimentación de 5V, lo que las hace adecuadas para su uso en aplicaciones que requieren una fuente de energía de bajo voltaje. La energía eléctrica suministrada a las bombas de agua hace que el motor de la bomba gire, creando una succión que mueve el agua a través de la bomba y la hace salir por la salida de la misma. Suelen ser compactas y tienen un diseño que les permite funcionar con un bajo nivel de ruido. Además, a menudo se diseñan para que sean sumergibles.

  1. Un arduino

Arduino es una plataforma de hardware y software de código abierto que se utiliza para crear proyectos interactivos basados en microcontroladores. La plataforma Arduino consiste en una placa con un microcontrolador, un conjunto de pines de entrada/salida y una interfaz para programación, que permite a los usuarios escribir y cargar programas en el microcontrolador para controlar el comportamiento de los dispositivos conectados a los pines de entrada/salida. La programación en Arduino se realiza en un lenguaje de programación basado en C/C++, utilizando un entorno de desarrollo integrado (IDE) que proporciona una interfaz gráfica para la edición, compilación y carga del programa en la placa. El software y los esquemas de diseño de las placas están disponibles como código abierto, lo que permite a los usuarios personalizar y adaptar la plataforma según sus necesidades.

  1. Resistores de 330 ohm

Componentes electrónicos pasivos que se utilizan para limitar la cantidad de corriente que fluye a través de un circuito o para dividir el voltaje en un circuito. Están diseñados para tener una resistencia de 330 ohmios, lo que significa que su valor de resistencia es constante y no varía con la corriente o el voltaje que fluye a través de ellos. Son comúnmente utilizados en circuitos de LED para limitar la corriente que fluye a través del LED y también se utilizan en otros tipos de circuitos, como en la alimentación de un transistor o para establecer un punto de polarización en un amplificador operacional.

  1. Dos transistores PN2222A 

El transistor PN2222A es un transistor de propósito general de tipo NPN. Es un componente electrónico de tres terminales utilizado en circuitos eléctricos para amplificar o conmutar señales eléctricas. Se utiliza en una amplia variedad de aplicaciones, desde circuitos de audio hasta control de motores, pasando por el control de LED y la conmutación de señales.

El PN2222A consta de tres regiones de semiconductor: una región de material tipo P (positivo) en el centro, flanqueada por dos regiones de material tipo N (negativo). Las terminales del transistor son el emisor (E), la base (B) y el colector (C). La corriente fluye desde el emisor hacia el colector, controlada por la corriente de la base.

Cuando una corriente se aplica a la base del transistor PN2222A, la corriente de colector-emisor se amplifica proporcionalmente, lo que permite al transistor actuar como amplificador. Si la corriente de la base se controla cuidadosamente, el transistor también puede actuar como un interruptor, permitiendo que la corriente fluya a través del colector y el emisor cuando la base está activada.

  1. Dos flyback diode

Un flyback diode es un diodo que se utiliza para proteger un circuito electrónico de los picos de voltaje que pueden producirse cuando se interrumpe la corriente que circula a través de un inductor o bobina, como por ejemplo un solenoide o un motor. Cuando se interrumpe la corriente que circula a través de un inductor, el campo magnético generado por el inductor comienza a colapsar, lo que puede generar un pico de voltaje inverso en la dirección opuesta a la corriente original. Este pico de voltaje puede dañar otros componentes electrónicos del circuito, como transistores o microcontroladores. Al conectar el diodo en paralelo con el inductor, proporciona un camino para que la corriente fluya de vuelta a través del inductor cuando se interrumpe la corriente, evitando así que se produzcan picos de voltaje dañinos.

  1. 4 botones

Dispositivos de entrada que permiten al usuario enviar una señal o comando a un sistema o dispositivo electrónico. Se trata de interruptores momentáneos que, al ser presionados, cierran momentáneamente un circuito eléctrico y envían una señal al dispositivo al que están conectados. Existen diferentes tipos de botones, que varían en tamaño, forma y disposición de sus terminales, y se utilizan en una amplia variedad de dispositivos electrónicos.

  1. Resistor de 10K en conjunto con un transistor para crear un circuito de pull-up o pull-down para un botón

Un circuito de pull-up es cuando se coloca una resistencia entre la entrada del botón y el voltaje de alimentación del circuito, mientras que un circuito de pull-down es cuando se coloca una resistencia entre la entrada del botón y el punto de tierra del circuito.

Cuando se presiona el botón en un circuito de pull-up, la entrada del botón se conecta al punto de tierra del circuito, y la corriente fluye a través del resistor de 10K y el transistor, haciendo que la entrada del circuito se lea como un valor bajo o «0». En un circuito de pull-down, la entrada del botón se conecta al voltaje de alimentación a través del resistor de 10K y el transistor, haciendo que la entrada del circuito se lea como un valor alto o «1».

  1. Dos LED

Los LED (diodos emisores de luz) son dispositivos electrónicos que emiten luz cuando se aplica una corriente eléctrica. Los LED se componen de materiales semiconductores que, al ser polarizados en sentido directo, emiten fotones de luz. Son eficientes, duraderos y versátiles, y se utilizan en una amplia variedad de aplicaciones, desde dispositivos electrónicos y pantallas hasta iluminación de interiores y exteriores.

  1. COSTE DE LOS MATERIALES

PASOS DADOS

Paso 1.

En primer lugar, tras crear una lista con todos los componentes que creíamos que íbamos a necesitar para llevar a cabo este proyecto, tuvimos que comprar los materiales que nos faltaban: principalmente las bombas de agua y las tuberías.

Tras contar con los materiales necesarios, comenzamos con la incorporación de los motores a las botellas. Incorporar los motores a las botellas fue un proceso complicado, ya que era necesario asegurarse de que los motores estaban bien sujetos y conectados correctamente. 

Una vez incorporados los motores a las botellas, tuvimos que cerrar los agujeros que se hicieron anteriormente para sacar las tuberías de agua. Esto se hizo con pegamento PVC y termofusible. 

Paso 2.

En este segundo paso, nos enfocamos en realizar las conexiones con los cables y componentes correspondientes al mismo tiempo que íbamos programando el código necesario para probar si todo funcionaba correctamente. Una vez que hemos incorporado los motores a las botellas y hemos cerrado los agujeros realizados para insertar la tubería de agua, es hora de empezar a conectar los cables y otros componentes a los motores uniendo los mediante la placa base. 

Al mismo tiempo que estamos haciendo estas conexiones, estamos programando el código necesario para probar si todo funciona correctamente.

Al trabajar simultáneamente en las conexiones y en el código, pudimos ahorrar tiempo y asegurarnos de que todo estaba funcionando correctamente antes de pasar al siguiente paso. Cuando encontrábamos problemas, pudimos solucionarlos inmediatamente.

Paso 3.

Una vez realizadas las conexiones y teniendo el código programado para controlar los motores, era hora de hacer pruebas de funcionamiento para asegurarnos de que todo estaba trabajando correctamente. En este paso, nos enfocamos en comprobar que no hay fugas de agua en las botellas y que los botones funcionan correctamente.

Para comprobar que no se salga el agua de las botellas, llenamos las botellas con agua y las colocamos en su posición adecuada. Entonces, encendemos los motores y los ponemos a funcionar. Observamos cuidadosamente si hay alguna fuga de agua en las conexiones o en las botellas. 

Además de comprobar las fugas de agua, también debemos asegurarnos de que los botones funcionan correctamente. Esto implica verificar que los botones responden a los comandos que se les han dado y que estén configurados correctamente. 

En general, en este paso estamos buscando cualquier problema que pueda impedir que el sistema funcione correctamente. Teniendo este paso superado, considerábamos que la práctica estaba encarrilada porque era el paso primordial. 

Paso 4.

En este siguiente paso, nos enfocamos en preparar la caja donde colocaremos las botellas con los motores. Para lograr una buena estética, debemos asegurarnos de tener todos los agujeros y aberturas correspondientes.

Primero, revisamos cuidadosamente la caja para identificar los agujeros y aberturas que necesitamos. Hacemos referencia a los agujeros para los cables de conexión y los soportes para las botellas, así como las aperturas para un fácil acceso a ellas. 

Importante destacar que en todo momento vigilamos que la caja se mantenía en perfectas condiciones, porque no debíamos olvidar en ningún momento que estábamos trabajando con componentes electrónicos que al mojarse podrían estropearse, riesgo que bajo ningún concepto queríamos correr.

Paso 5.

En el quinto paso, nos enfocamos en incorporar las botellas con los motores, los cables y las placas a la caja que hemos preparado previamente. Para hacerlo, necesitamos pegar todos los componentes necesarios y asegurarnos de que las botellas estén estables dentro de la caja.

Primero, colocamos las botellas con los motores dentro de la caja, asegurándonos de que estén en la posición adecuada y procedimos a sacar las tuberías de agua por los agujeros correspondientes. Es importante asegurarnos de que los componentes estén fijados firmemente y que no se muevan durante el funcionamiento del sistema, por lo que los elementos que habíamos comprado los hemos pegado a la caja y los prestados por la universidad, para evitar el deterioro de los materiales, los hemos fijado mediante celo, material que se puede eliminar rápida y fácilmente.

Es importante verificar que todo esté correctamente fijado y asegurado antes de proceder al siguiente paso. Una vez que estamos seguros de que todo está bien fijado y asegurado, pudimos avanzar al siguiente y último paso.

Paso 6.

Finalmente, pintamos y decoramos la caja para mejorar su aspecto. Utilizamos pintura en spray de color plateado e imprimimos el logo de nuestro equipo así como las pegatinas para los botones. 

En todo momento tuvimos en cuenta que el diseño final de la caja debía ser seguro y no interferir con el funcionamiento del proyecto. Debíamos asegurar que los componentes estuviesen protegidos y que la caja no causara ningún daño o interferencia en el funcionamiento de los motores o la placa.

Una vez terminado el diseño de la caja, podemos disfrutar de nuestro proyecto completamente terminado y funcional.

  1. Interacción del usuario con el Hardware

En este proyecto de una máquina dispensadora de bebidas, la interacción del usuario con el hardware se realiza a través de los 4 botones disponibles. Cada botón se utiliza para seleccionar la bebida que se desea preparar: chupito, cubata corto, cubata largo y cubata medio.

Cuando el usuario presiona un botón, el hardware realiza las operaciones necesarias para preparar la bebida seleccionada. Dependiendo de la cantidad de cada bebida requerida, la máquina dispensadora puede activar diferentes motores o solenoides para dispensar las cantidades correctas de cada liquido.

Una vez que se ha preparado la bebida, se activan los LEDs y se emite un sonido para indicar al usuario que la bebida está lista. El usuario puede retirar la bebida y disfrutarla.

En este caso, la interacción del usuario con el hardware es bastante sencilla y se basa en la selección de una bebida a través de un botón. La respuesta del hardware a la selección del usuario se realiza mediante la activación de motores, solenoides y señales visuales y auditivas. 

Por último destacar que en caso de que las bebidas se agoten, se pueden rellenar desde la parte superior de la caja abriendo una ventana donde hay unas etiquetas de “mezcla” y “alcohol” que te facilita el acceso a las bebidas para poder rellenarlas con facilidad cada vez que se acaben. 

ESQUEMA DEL HARDWARE

CASOS DE USO

La máquina dispensadora de cubatas es un sistema empotrado diseñado para preparar y dispensar bebidas alcohólicas más o menos cargadas, dependiendo del botón que se presione. A continuación, se presentan varios casos de uso que pueden beneficiarse de esta tecnología:

  1. En fiestas y eventos sociales: utilizada para ofrecer bebidas personalizadas a los invitados, lo que aumentará la diversión y la satisfacción del cliente.
    1. Actores: organizadores de eventos, anfitriones, invitados
    2. Modelo de negocio: alquiler de la máquina dispensadora de cubatas para eventos o venta de la máquina a los organizadores de eventos o anfitriones.
  2. Los bares y restaurantes pueden utilizar la máquina dispensadora de cubatas para ofrecer a los clientes una experiencia única y personalizada al servir bebidas alcohólicas en el momento y la cantidad deseada.
    1. Actores: dueños de bares y restaurantes, camareros, clientes
    2. Modelo de negocio: venta o alquiler de la máquina a bares y restaurantes, con la posibilidad de ofrecer servicios de mantenimiento y reparación.
  3. En el hogar, la máquina puede ser un accesorio divertido y útil para cualquier reunión o celebración.
    1. Actores: propietarios de hogares, familiares y amigos
    2. Modelo de negocio: venta para uso en el hogar.
  4. En exhibiciones y ferias, la máquina dispensadora puede demostrar las capacidades de los sistemas empotrados y de tiempo real, así como la capacidad de personalización de la máquina y las bebidas.
    1. Actores: organizadores de exhibiciones y ferias, visitantes
  5. Los eventos corporativos se podrían utilizar para ofrecer una experiencia personalizada a los asistentes, lo que puede aumentar la satisfacción del cliente y mejorar la percepción de la marca.
    1. Actores: organizadores de eventos corporativos, asistentes
    2. Modelo de negocio: alquiler de la máquina para eventos corporativos, con la posibilidad de ofrecer servicios de personalización de la máquina y bebidas.

Cada caso de uso implica diferentes actores y modelos de negocio, pero todos comparten el objetivo de ofrecer una experiencia personalizada y única a los clientes y usuarios. En general, el uso de la máquina dispensadora de cubatas puede ser creativo debido a la posibilidad de personalización, experimentación, entretenimiento e innovación que ofrece.

CÓDIGO

/*Requiere la libreria "pitches"*/
// Define los pines a los que estan conectados los componentes
const int bomba1 = 9;
const int bomba2 = 10;
const int boton1 = 2;
const int boton2 = 3;
const int boton3 = 4;
const int boton4 = 5;
const int led1 = 6;
const int led2 = 7;
const int buzzer = 11; //zumbador
// Variables para el control de tiempo
unsigned long tiempoInicioBomba1 = 0;
unsigned long tiempoInicioBomba2 = 0;
// la bomba1 es la de la mezcla, la bomba2 es la del alcohol (tiempo en milisegundos)
const unsigned long tiempoEncendidoBomba1 = 15000; // 15 segundos 
const unsigned long tiempoEncendidoBomba2 = 9200; // 9,2 segundos
const unsigned long tiempoEncendidoBomba1_1 = 0; // 0 segundos
const unsigned long tiempoEncendidoBomba2_1 = 3300; // 3,3 segundos
const unsigned long tiempoEncendidoBomba1_2 = 20000; // 20 segundos
const unsigned long tiempoEncendidoBomba2_2 = 6500; // 6,5 segundos
const unsigned long tiempoEncendidoBomba1_3 = 19000; // 19 segundos
const unsigned long tiempoEncendidoBomba2_3 = 7600; // 7,6 segundos

#include "pitches.h"

# define PRESSED  HIGH   // HIGH para pull-down! 
# define buzzer 11

void setup() {
  // Configura los pines como entradas o salidas
  pinMode(bomba1, OUTPUT);
  pinMode(bomba2, OUTPUT);

  pinMode(boton1, INPUT);
  pinMode(boton2, INPUT);
  pinMode(boton3, INPUT);
  pinMode(boton4, INPUT);

  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(buzzer, OUTPUT);
  Serial.begin(9600);

}
void loop() {
  // Comprueba si se ha pulsado algun boton
  delay(100);
  if (digitalRead(boton1) == PRESSED) {
    // Enciende la bomba 1 durante sus respectivos segundos
    Serial.print("Botón 1 pulsado \n");
    digitalWrite(bomba1, HIGH);
    tiempoInicioBomba1 = millis();
    while (millis() - tiempoInicioBomba1 < tiempoEncendidoBomba1) {
      // Espera hasta que haya pasado el tiempo de encendido de la bomba 1
    }
    digitalWrite(bomba1, LOW);

    // Enciende la bomba 2 durante sus respectivos segundos
    digitalWrite(bomba2, HIGH);
    tiempoInicioBomba2 = millis();
    while (millis() - tiempoInicioBomba2 < tiempoEncendidoBomba2) {
      // Espera hasta que haya pasado el tiempo de encendido de la bomba 2
    }    digitalWrite(bomba2, LOW);
    delay(250);

    // Activa el buzzer durante 3 segundos
    for (int i = 0; i < 1; i++) {
      tone(buzzer, 4000, 300);
 
       // Se espera un segundo
       delay(1000);
 
      // Se repite el tono
        tone(buzzer, 4000, 300);
 
       // Se espera otro segundo
        delay(1000);
}
    // Parpadea los leds durante 5 segundos
    for (int i = 0; i < 10; i++) {
      digitalWrite(led1, HIGH);
      digitalWrite(led2, LOW);
      delay(250);
      digitalWrite(led1, LOW);
      digitalWrite(led2, HIGH);
      delay(250);
      //Asesgura que los LED´s se queden apagados una vez terminado el proceso, 
      digitalWrite(led1, LOW);
      digitalWrite(led2, LOW);
    }
  

    
  } else if (digitalRead(boton2) == PRESSED) {
// Enciende la bomba 1 durante sus respectivos segundos
    Serial.print("Botón 2 pulsado \n");
    digitalWrite(bomba1, HIGH);
    tiempoInicioBomba1 = millis();
    while (millis() - tiempoInicioBomba1 < tiempoEncendidoBomba1_1) {
      // Espera hasta que haya pasado el tiempo de encendido de la bomba 1
    }
    digitalWrite(bomba1, LOW);

    // Enciende la bomba 2 durante sus respectivos segundos
    digitalWrite(bomba2, HIGH);
    tiempoInicioBomba2 = millis();
    while (millis() - tiempoInicioBomba2 < tiempoEncendidoBomba2_1) {
      // Espera hasta que haya pasado el tiempo de encendido de la bomba 2
    }
    digitalWrite(bomba2, LOW);
    delay(250);

    // Activa el buzzer durante 3 segundos
    for (int i = 0; i < 1; i++) {
      tone(buzzer, 4000, 300);
 
       // Se espera un segundo
       delay(1000);
 
      // Se repite el tono
        tone(buzzer, 4000, 300);
 
       // Se espera otro segundo
        delay(1000);
}
    // Parpadea los leds durante 5 segundos
    for (int i = 0; i < 10; i++) {
      digitalWrite(led1, HIGH);
      digitalWrite(led2, LOW);
      delay(250);
      digitalWrite(led1, LOW);
      digitalWrite(led2, HIGH);
      delay(250);
            //Asesgura que los LED´s se queden apagados una vez terminado el proceso, 
      digitalWrite(led1, LOW);
      digitalWrite(led2, LOW);
    }
  } else if (digitalRead(boton3) == PRESSED) {
// Enciende la bomba 1 durante sus respectivos segundos
    Serial.print("Botón 3 pulsado \n");
    digitalWrite(bomba1, HIGH);
    tiempoInicioBomba1 = millis();
    while (millis() - tiempoInicioBomba1 < tiempoEncendidoBomba1_2) {
      // Espera hasta que haya pasado el tiempo de encendido de la bomba 1
    }
    digitalWrite(bomba1, LOW);

    // Enciende la bomba 2 durante sus respectivos segundos
    digitalWrite(bomba2, HIGH);
    tiempoInicioBomba2 = millis();
    while (millis() - tiempoInicioBomba2 < tiempoEncendidoBomba2_2) {
      // Espera hasta que haya pasado el tiempo de encendido de la bomba 2
    }
    digitalWrite(bomba2, LOW);
    delay(250);

    // Activa el buzzer durante 3 segundos
    for (int i = 0; i < 1; i++) {
      tone(buzzer, 4000, 300);
 
       // Se espera un segundo
       delay(1000);
 
      // Se repite el tono
        tone(buzzer, 4000, 300);
 
       // Se espera otro segundo
        delay(1000);
    }
        // Parpadea los leds durante 5 segundos
    for (int i = 0; i < 10; i++) {
      digitalWrite(led1, HIGH);
      digitalWrite(led2, LOW);
      delay(250);
      digitalWrite(led1, LOW);
      digitalWrite(led2, HIGH);
      delay(250);
            //Asesgura que los LED´s se queden apagados una vez terminado el proceso, 
      digitalWrite(led1, LOW);
      digitalWrite(led2, LOW);
      }
  } else if (digitalRead(boton4) == PRESSED) {
// Enciende la bomba 1 durante sus respectivos segundos
    Serial.print("Botón 4 pulsado \n");
    digitalWrite(bomba1, HIGH);
    tiempoInicioBomba1 = millis();
    while (millis() - tiempoInicioBomba1 < tiempoEncendidoBomba1_3) {
      // Espera hasta que haya pasado el tiempo de encendido de la bomba 1
    }
    digitalWrite(bomba1, LOW);

    // Enciende la bomba 2 durante sus respectivos segundos
    digitalWrite(bomba2, HIGH);
    tiempoInicioBomba2 = millis();
    while (millis() - tiempoInicioBomba2 < tiempoEncendidoBomba2_3) {
      // Espera hasta que haya pasado el tiempo de encendido de la bomba 2
    }
    digitalWrite(bomba2, LOW);
    delay(250);

    // Activa el buzzer durante 3 segundos
    for (int i = 0; i < 1; i++) {
      tone(buzzer, 4000, 300);
 
       // Se espera un segundo
       delay(1000);
 
      // Se repite el tono
        tone(buzzer, 4000, 300);
 
       // Se espera otro segundo
        delay(1000);
                // Parpadea los leds durante 5 segundos
    for (int i = 0; i < 10; i++) {
      digitalWrite(led1, HIGH);
      digitalWrite(led2, LOW);
      delay(250);
      digitalWrite(led1, LOW);
      digitalWrite(led2, HIGH);
      delay(250);
            //Asesgura que los LED´s se queden apagados una vez terminado el proceso, 
      digitalWrite(led1, LOW);
      digitalWrite(led2, LOW);
      }
    }
  }
}

PROBLEMAS Y SOLUCIONES ENCONTRADAS

  1. Falta de componentes en la caja

Cuando comenzamos con la práctica obligatoria, nos encontramos que nuestra caja no tenía el cable USB para conectar la placa al ordenador. Este hecho tuvo fácil solución pues contamos con un cable en casa que pudimos utilizar. 

Posteriormente, a pesar de que en la caja estaba marcado que teníamos ciertos componentes (transistor PN2222A) carecíamos de ellos. Fueron nuestras compañeras quienes nos dejaron este componente debido a que no lo usaron en su práctica. 

  1. Falta de cabLes hembra

Nuestra idea inicial era conectar los botones a la protoboard pequeña para que pudiéramos dar a los botones desde la caja, y no desde la placa. Sin embargo, debido a la insuficiencia de cables, tuvimos que dejar los botones conectados a la placa ya que no teníamos suficientes cables hembras para realizar dichas conexiones. 

  1. Mal funcionamiento de los botones

Debido a la sensibilidad de los botones, en cuanto la placa sufre de algún movimiento, se detecta que el botón ha sido pulsado aunque no sea así. Además, al principio, no se nos detectaban los botones, el fallo fue la conexión con los cables: problemas de hardware. Esto lo solucionamos mediante la introducción de comentarios en el código para saber en qué momento se pulsaban los botones y en cual no.

  1. Introducción de las bombas y la tubería de agua de pvc a las botellas de plástico

Cuando introducimos la bomba en la botella y conseguimos extraer el cable del motor para conectarlo a la placa, tuvimos que sellar el agujero de la botella para que no se saliera el agua. El problema vino cuando llenamos la botella de agua para realizar las pruebas pertinentes y había una pequeña fuga en la botella, teniendo que repetir el proceso de sellado. Tras este contratiempo, al conectar el motor a la placa, nos dimos cuenta que el motor no funcionaba y tuvimos que repetir todo el proceso otra vez para cambiar el motor defectuoso por uno nuevo. Finalmente, el último contratiempo con respecto a las botellas, fue la conexión del motor a la placa base por los cables (problema que será detallado a continuación). 

  1. Conexión de los cables de las bombas a los cables hembra

Cuando conectamos los cables a la placa base, volvimos a tener problemas de hardware debido a que la conexión de los cables no se realizaba correctamente. Tuvimos que pelar los cables de los motores e hicimos un ‘apaño’, consiguiendo unir los cables del motor a los cables hembras y haciendo así una lectura correcta. 

  1. Diferenciación de ambas botellas en el código con sus respectivos tiempos de espera y de funcionamiento

Fue la parte del software que más nos costó, debido a la complejidad para marcar los tiempos en cada una de las dos botellas, teniendo en cuenta que teníamos 4 funcionalidades y dependiendo del botón que se pulsase, una botella tendrá que verter más líquido que otra. Esto fue solucionado, primeramente mediante prueba y error, y en segundo a base de depuración de código con la utilización de comentarios.

VIDEO DEMOSTRATIVO

También te podría gustar...

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *