domingo, 28 de mayo de 2017

Proyecto Final: Maquina Expendedora Arduino



"Aprendices de Fibonacci"

  • Betanzos Quevedo Israel
  • Labastida Vazquez Edgar Alejandro
  • Nava Rodriguez Guillermo
  • Martínez Luna Víctor Alan 
  • Gonzales Sanchez Antonio Rafael

CBtis #7
28.05.2017
Ing. Oscar Sánchez Ureño - contacto: ureoscar@gmail.com

Enlace de nuestra tesina: Tesina.pdf

________________________________________________________________________________

¿Máquina Expendedora?


¿Te haz preguntado cual es el origen de las maquinas expendedoras?

Bueno, primeramente, ¿de donde viene el termino?

El termino "Vending" es por el cual son popularmente conocidas las maquinas expendedoras.

"Latín vendere que significa vender."


Sin enredarnos en historia prehistórica, vamos al grano:




La más cercana referencia hacia el inventor de los principios mecánicos, neumáticos, hidráulicos y robóticos de estas máquinas, es Herón de Alejandría, un ingeniero del siglo I DC llegó a inventar como resultado, un dispensador de agua bendita.

Y no fue que hasta el siglo XVIII que las máquinas expendedoras se desarrollan para innovarse de acuerdo la tecnología de la época en la que se llevaba a cabo la Revolución Industrial, en este caso se repartía en ellas goma de mascar y tabaco.



Ahora bien, si ya hablamos de lo que se refiere a antecedentes históricos, la máquina de la izquierda es conocida como la "primera máquina expendedora comercial" que fue inventada por Percival Everitt en 1833 y repartía estampas postales y su funcionamiento era puramente mecánico y no fue hasta varios años más tarde que obtuvo los "derechos americanos de la patente".



A continuación, un poco de lo que el vending tiene para ofrecer al mundo:












               


En la actualidad se intentan de innovar cada vez más, llegando al punto de pasar de ser algo automatizado, a algo con inteligencia artificial.
________________________________________________________________________________

¿Que máquina haremos?


Nosotros como equipo en un principio teníamos que elegir el que sería nuestro proyecto final y después de divagar durante varias horas, elegimos hacer...*redoble de tambores* 

UNA MAQUINA PARA PINTAR HUEVOS
EN BASE A LEGOS


Así que nos pusimos a checar lo que costaban
las partes/piezas, los motores, entre otras cosas. 
Pero...


No estaba dentro de nuestro presupuesto.

Al final nos decidimos por hacer una maquina expendedora, obviamente, no creo que hayas querido leer toda una introducción acerca de antecedentes históricos de las mismas porque si. 

Fue una idea "diferente", ya que como llevamos materias de Mecatrónica, por lo general nos piden desarrollar cosas como brazos robóticos, impresoras 3D, Carritos seguidores de línea, Mini-tornos, etc. Así que esta ocasión nos dieron libertad de escoger nuestro último proyecto, puedo decir con toda seguridad, que este fue el más divertido que nos ha tocado hacer hasta ahora.

Dicho esto, sigamos con lo que han estado esperando, los materiales y el proceso.
________________________________________________________________________________

Descripción del proyecto


Materiales (links incluidos)














Material extra (Los consigues en cualquier ferretera y tienda de electrónica): 
  • LED 5mm
  • Convertidor DC 5v 700mA
  • 4 PushButtons de 16mm
  • 14 tornillos y tuercas #6

Elaboración

Cronograma de trabajo:
PD: La parte de "exposición" fue de una presentación en PowerPoint acerca de los Discos Duros, la pueden encontrar en nuestro blog o clickeando en este enlace.

Circuito pictórico:



Resumen de conexión, alias "Donde va que". Esto puede ser cambiado en el código, sin embargo las conexiones de los Servos requieren pines PWM dedicados.


Programación:
   
  Código de Arduino

















  
Visual Studio:

  Código de la interfaz 







Evidencia del proceso:



                           



                                            




________________________________________________________________________________

Conclusión

EN CONCLUSIÓN, ESTE EN UN PROYECTO EN EL QUE INVERTIMOS MUCHO
TIEMPO Y ESFUERZO, NOS DECANTAMOS POR EL, POR QUÉ ES UN MODELO
BIEN ESTRUCTURADO, CON DIVERSOS SISTEMAS FUNCIONALES, LO QUE LE 
DA EL TÍTULO DE SISTEMA MECATRÓNICO.

  • https://arduinobot.pbworks.com/f/Manual+Programacion+Arduino.pdf
  • https://www.youtube.com/watch?v=TNLp5UV0dMI
  • https://www.youtube.com/watch?v=aDwrMeu4k9Y
  • http://archive.protonbasic.co.uk/document/35723-Serial%20Port%20VB.pdf
  • http://www.ehu.eus/mrodriguez/archivos/Articulos_alumnos/Puerto%20serie%20con%20CSharp.pdf
  • https://www.introtoarduino.com/downloads/IntroArduinoBook.pdf
  • http://www.oyarzunsl.com/blog/2011/11/vending-el-origen-e-historia-de-las-maquinas-expendedoras/
  • http://vendingmachine.umwblogs.org/antecedents/



jueves, 27 de abril de 2017

[CÓDIGO DOCUMENTADO] Animacion en Visual C#

El día de hoy les traemos nuestro primer programa explicado en esta sección titulada "[CÓDIGO DOCUMENTADO]" de una Animacion en Visual Studio en nuestro lenguaje favorito: C#

Resultado Final

Empecemos:


Ahora mostrado en texto en caso de que no sean legible las imágenes:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Animacion
{
    public partial class Form1 : Form
    {
        int c = 0;  //ESTA ES LA VARIABLE DONDE SE ALMACENARÁ CADA FOTOGRAMA

        public Form1()
        {
            InitializeComponent();
        }

        // AQUÍ SE PROGRAMA LO QUE OCURRIRÁ AL PRESIONAR EL BOTÓN 1 (INICIO)
        private void button1_Click(object sender, EventArgs e)
        {
            timer1.Start();  // EL TIMER COMENZARÁ A DAR SUS PULSOS
        }

       
        
        // AQUÍ SE PROGRAMA LO QUE OCURRIRÁ AL PRESIONAR EL BOTÓN 2 (PARAR)
        private void button2_Click(object sender, EventArgs e)
        {
            timer1.Stop();  // EL TIMER SE DETENDRÁ
        }

       
        
        // TIMER
        private void timer1_Tick(object sender, EventArgs e)
        {
            c++; // AUMENTARÁ EN 1 EL VALOR DE NUESTRA VARIABLE CADA QUE COMIENCE UN PULSO

            /* A CONTINUACIÓN ASIGNAMOS LA RUTA DE DONDE EL PROGRAMA COLOCARÁ LAS IMÁGENES EN EL PICTUREBOX
             * COMO PODEMOS OBSERVAR, EN MEDIO DE LA RUTA SE ENCUENTRA NUESTRA VARIABLE "C", AL MOMENTO DE 
             * AUMENTAR DE 1 EN 1, INDICAMOS EL CORRIMIENTO DE FOTOGRAMAS DENTRO DE NUESTRA ANIMACIÓN*/
            pictureBox1.ImageLocation = "C:/Users/Coraza de Tortuga/Pictures/Photoshop/Fotogramas/Zelda/ezgif-2-9dd5697ddc-gif-im/frame_"+c+"_delay-0.03s.gif";

            if (c == 14) // COLOCAMOS UN IF PARA INDICAR LA ACCIÓN QUE REALIZARÁ DESPUÉS DE PRESENTAR EL ÚLTIMO FOTOGRAMA
            {
                c = 0; // CUANDO LLEGUE A 14, VA A VOLVER A EMPEZAR LA ANIMACIÓN DESDE EL INICIO FORMANDO UN BUCLE
            }
        }


        
        // AQUÍ SE PROGRAMA LO QUE OCURRIRÁ AL PRESIONAR EL BOTÓN 3 (AVANZAR)
        private void button3_Click(object sender, EventArgs e)
        {
            c++; // AVANZARÁ DE 1 EN 1 CADA FOTOGRAMA MANUALMENTE

            // PRESENTARÁ EL FOTOGRAMA SIGUIENTE EN EL PICTUREBOX
            pictureBox1.ImageLocation = "C:/Users/Coraza de Tortuga/Pictures/Photoshop/Fotogramas/Zelda/ezgif-2-9dd5697ddc-gif-im/frame_" + c + "_delay-0.03s.gif";

            if (c == 14) // COLOCAMOS UN IF PARA INDICAR LA ACCIÓN QUE REALIZARÁ EN CASO DE PASAR DEL ÚLTIMO FOTOGRAMA
            {
                c = 0; // CUANDO LLEGUE A 14, SE REGRESARÁ AL PRIMER FOTOGRAMA
            }
        }

        
       
        // AQUÍ SE PROGRAMA LO QUE OCURRIRÁ AL PRESIONAR EL BOTÓN 4 (RETROCEDER)
        private void button4_Click(object sender, EventArgs e)
        {
            c--;// RETROCEDERÁ DE 1 EN 1 CADA FOTOGRAMA MANUALMENTE

            // PRESENTARÁ EL FOTOGRAMA ANTERIOR EN EL PICTUREBOX
            pictureBox1.ImageLocation = "C:/Users/Coraza de Tortuga/Pictures/Photoshop/Fotogramas/Zelda/ezgif-2-9dd5697ddc-gif-im/frame_" + c + "_delay-0.03s.gif";

            if (c == 0)// COLOCAMOS UN IF PARA INDICAR LA ACCIÓN QUE REALIZARÁ DESPUÉS DE REGRESAR EN EL PRIMER FOTOGRAMA
            {
                c = 14;// CUANDO LLEGUE A 0, AVANZARÁ HASTA EL ÚLTIMO FOTOGRAMA
            }
        }
    }

}