1,2,3... Pajarito Ingles-Proyecto Arduino (6 / 6 paso)

Paso 6: Ultimas conexiones y programa

En las siguientes lineas, explicare un poco el funcionamiento del programa y de algunas instrucciones. Admito es largo y puedo parecer un pesado, pero me parece super interesante saber y aprender estas pequeñas cosas, pueden ser muy utiles. Si aun asi no quereis, podeis bajar a la parte de resumen y consejos y saltaros todo esto para saber las ultimas conexiones del proyecto y algun pequeño consejo. Aun asi repito que me parece algo muy interesante de saber, pero es vuestra eleccion jaja.

Explicacion del programa

Ya hemos conectado y sabemos como funcionan casi todos los elementos de nuestro proyecto. Solo nos falta ver el programa, entenderlo, y acabar de conectar unas pocas cosas mas para ejecutarlo.

El programa funciona de la siguiente manera:

Primero, como siempre, le decimos un arduino las librerias vamos una colección, en este caso la de la pantalla LCD y la librería time.h, para controlar el tiempo (luego veréis por que). Wire.h es una pequeña librería dentro de la librería time.h, por lo solamente descargaremos las de time.h, pues la de la pantalla LCD viene ya con el IDE y la reconoce pecado descargar nada, os la dejo aquí arriba.

Después, al conectar arduino a la corriente, el programa entero se queda en espera hasta pulsemos el botón nos permitirá empezar. Esta espera se hace con la ya conocida instrucción de "While();". Pero si os fijáis bien, este "While()" tiene un pequeña diferencia, pues no tiene corchetes y tiene un "punto y coma". Después de si un "Mientras" ponemos punto y coma pecado corchetes, significa el mientras no hará nada mientras la condición de dentro sea verdad, esta simplemente esperando. En este caso. una se pulso el botón. ¿Como haremos para detecte el botón pulsado? Conectaremos el boton en modo "Pull-Down" que ya usamos at de proyecto anterior mi "alarma/despertador con arduino". Estaremos todo el rato leyendo el estado del pin 11 de arduino, hasta sea alto, pues mientra sea baja, estaremos dentro de el "while();" esperando.

Cuando pulsemos el botón, escribiremos en la pantalla LCD comenzamos, y le pediremos al jugador se coloque un una mínima distancia, ya variable de la elegida en "mínimo", en mi caso 130 cm. En la pantalla nos aparecerá todo el rato la distancia mínima, y la distancia a la nos quedaron, hasta nos posicionemos suficientemente alejados. Hará con la instrucción de esto se «Hacer {ordenes} While(condicion);». Las Naciones Unidas "hacer-mientras" funciona igual que las Naciones Unidas al mismo tiempo, pero la condición se evalúa al final, por lo como mínimo las ordenes se ejecutan una vez. En de valido es este caso, así, mínimo una vez nos aparece en la pantalla la distancia a la nos quedaron. Si nos quedaron una distancia de la mínima de mas, lo escribirá una vez en la pantalla, y el programa seguirá. La distancia, sera medida con la función "medirDistancia", explicada anteriormente.

Al colocarnos a la distancia "requerida" en la pantalla veremos un aviso de nos movamos, y la cuenta de "1,2,3... Pajarito inglés". En este tiempo sera cuando podamos movernos, porque al acabarse este tiempo, tendremos quedarnos DESINDUSTRALIZACION. Después, viene la parte complicada del programa.

Ahora, mediante un "While()" leeremos el sensor para ver si hay movimiento. Si hay movimiento, el jugador perderá, y tendremos salir del tiempo. Pero no solo si hay movimiento, también podremos salir si el jugador ha pasado un tiempo mínimo quieto, y arduino deba empezar de nuevo a contar para que este se mueva de nuevo. Aparte, si se ha pulsado el botón, significara el jugador ha llegado, y ha ganado. Como hacemos esto?

Bueno, idea de mi ha sido, crear 2 variables booleanas, a y b, sean las condiciones de el movimiento y de el certamen. Si alguien se mueve mientras debe estar parado, 'a' se pondrá alto, y como podemos ver en la condicion del while(), saldremos, y el jugador habrá perdido. Si en cambio, el botón ha sido pulsado de anteriormente (mientras arduino contaba), 'b' se pone alta y no entramos en el while(). ¿Y la parte difícil ha sido esta: como creamos un cronómetro en arduino para contar si el tiempo mínimo ya ha pasado a la vez seguimos ejecutando el programa? Arduino tiene varias funciones para contar el tiempo, delay() y millis() por ejemplo. Delay() para cualquier otra cosa que este haciendo el micro controlador y no se ejecuta nada mas mientras este activo. Millis() es un contador empieza a contar desde arduino ha sido conectado a la corriente. Esto no nos vale pues nosotros queremos mientras contemos el tiempo leamos por el sensor si alguien se mueve. Para ello, se me ocurrió esta idea (puede haya mas soluciones, y mas banknotes, pero solo se me ocurrió esta, me parece bastante buena, y me posiciones saber si alguien sabe de otra manera). Con la librería time.h (acompañada de wire.h), podemos llevar la cuenta de la la horay fecha en nuestro arduino mientras este esté conectado a la corriente. Lo echo, ha sido fijarle una fecha cualquiera una variable de arduino en la con t (setTime(...)), pues la fecha y la hora nos dan igual, solo nos interes los segundos sean 00. Cada segundo leeremos con "segundos=second(t)" los segundos que han pasado desde "seteamos" el tiempo (justo cuando el jugador debe empezar a estar quieto), así sabremos todo el rato cuanto tiempo ha pasado desde entonces, y podremos seguir ejecutando el programa de mientras. Cuando ese tiempo sea mas el tiempo mínimo impuesto para estar parado (Variable "Parado", 8 seg en mi caso), saldremos de el while(); y el programa se seguirá ejecutando.

De aquí en adelante hay 3 opciones. Si el jugador se ha movido, mediante la función "teHasMovido();" le indicaremos se ha movido y se encenderá la luz roja del RGB. Para empezar de nuevo habra pulsar el botón. Si no se ha movido, arduino empezara de nuevo a contar "1, 2, 3... Pajarito inglés". Y si por ultimo estaba pulsando el botón, se encenderá la luz verde del RGB y le indicaremos que ha ganado con la función "hasGanado();"

Resumen y consejos

Para acabar por tanto, nos falta conectar el botón en modo "Pull-Down" (o pull-up, pero habría cambiar el programa en la parte de lectura del botón) y conectar el pin 11 para leerlo.

El sensor PIR, esta leyendo si no hay movimiento o cuando arduino esta contando "1,2,3,... pajarito inglés". Esto es inevitable porque el sensor da pulsos y no hace falta que este conectado a arduino, como hemos dicho, por lo si cuando esta contando 3, nos movemos, a la hora de leamos con el pin 12 si alguien se ha movido, nos dara alta, debido al tiempo el sensor esta en alto y puede empezar de nuevo a leer , y perderemos. Por lo tanto, recomiendo dejar de moverse ya en de en 2 o incluso 1. Aun así, podemos arreglar esto poniendo un pequeño delay() despues de "1,2,3... Pajarito inglés", así mientras esta ese delay() (no sera muy largo), el sensor superficie volver a leer de nuevo, aunque yo lo prefiero así.

Si llegamos pecado nos vea movernos hasta arduino mientras esta contando "1, 2, 3..., Pajarito inglés", tenemos pulsar el botón para ganar. Es recomendable dejarlo pulsado un rato para lea bien el botón ha sido pulsado.

Cuando estas cerca, el sensor PIR puede llegar a ser muy sensible, por lo hay estar muy DESINDUSTRALIZACION.


Finalmente espero os haya gustado este proyecto, aun siendo largo es muy muy interesante y la verdad muy muy divertido. Gracias y Buena suerte contra Arduino, buen jugador de "1,2,3,... de pues es un muy Pajarito inglés".

Es difícil, pero no es invencible! ;)

Artículos Relacionados

Proyecto Arduino: Giroscopio/acelerómetro MPU-6050 y Adafruit Motor Driver escudo

Proyecto Arduino: Giroscopio/acelerómetro MPU-6050 y Adafruit Motor Driver escudo

Hola chicos, si usted está planeando usar el módulo del MPU 6050 giroscopio/acelerómetro o L329D adafruit moter conductor protector con Arduino para su próximo proyecto luego te están en el lugar correcto, porque en el artículo estoy compartiendo un
Cuadro de proyecto Arduino

Cuadro de proyecto Arduino

Constantemente estoy jugando en tierra de Arduino con sensores, pantallas y nuevos brotes de acné. Recientemente, tuve la llamada a construir un registrador de temperatura para registrar temperaturas de 16 diferentes lugares dentro de un gran montaje
IMPRESO del CNC el eje de Z para los proyectos ARDUINO o pequeño router, impresora.

IMPRESO del CNC el eje de Z para los proyectos ARDUINO o pequeño router, impresora.

Un pequeño deslizador de eje de Z para pequeñas sus pequeños proyectos.Utilice un nema 14 paso a paso y componentes simples.Usted puede comprar el kit de mecánico aquí: http://www.cnc4newbie.comO usted puede comprar en su ferretería local.Descargar l
Proyecto Arduino: Gama de prueba LoRa módulo RF1276 para la solución de rastreo GPS

Proyecto Arduino: Gama de prueba LoRa módulo RF1276 para la solución de rastreo GPS

Conexión: USB - serieNecesidad: Navegador ChromeNecesidad de: 1 X Arduino MegaNecesidad de: 1 X GPSNecesidad de: 1 tarjeta de X SDNecesidad: 2 X LoRa módem RF1276Función: Enviar Arduino GPS valor a base principal - principal base almacene datos en Da
Proyecto Arduino en 5 minutos

Proyecto Arduino en 5 minutos

En el Instructable siguiente, le mostraremos cómo puede hacer su próximo proyecto de Arduino en 5 minutos.Es simple, fácil y divertido.¡ Disfrute! :)Paso 1: Lo planeamos!1. ir a Circuito.io2. Seleccione los componentes en la captura de pantalla, añad
Proyecto Arduino #2

Proyecto Arduino #2

Este es el segundo proyecto que he realizado con Arduino.Este proyecto funciona como un termostato, donde puedes ver la temperatura actual (en grados Fahrenheit o en centígrados), puede fijar la temperatura deseada y se puede cambiar entre ° f y ° Ce
Proyecto Arduino DIY-reloj

Proyecto Arduino DIY-reloj

Este instructable es en la construcción de mi Arduino-reloj. Este instructable reúne a un par de mis anteriores subproyectos que se han publicado en yo he progresado a la terminación de la palabra reloj.Entonces, ¿qué es un reloj de palabra? Es un re
ATTiny impulsado proyectos Arduino - hice en TechShop

ATTiny impulsado proyectos Arduino - hice en TechShop

Arduino es una plataforma grande. No hay duda. Pero qué pasaría si te dijera que podría tomar la placa entera y compacta en paquete pequeño. Y quiero decir realmente pequeño. El chip en la imagen es un ATTiny84, y es la versión grande. Así que si tu
Uno mismo-equilibrio monopatín/segw * y proyecto Arduino Shield

Uno mismo-equilibrio monopatín/segw * y proyecto Arduino Shield

Gescudo de Arduino de propósito general para autoequilibrarse máquinas.¿Por qué hacen?Previamente hice un Instructable en 2010 sobre cómo construir un monopatín uno mismo-equilibrio.Hay > 500 comentarios en este y muchos expresan creación de confusió
Rango de alerta proyecto Arduino

Rango de alerta proyecto Arduino

Una gama de ultrasonido Arduino proyecto de alerta, alerta al usuario de la proximidad de obstáculos mediante ultrasonido HC-SR04 módulo ultrasónico. La distancia se mide utilizando el código y basado en la proximidad que se ilumina el LED apropiado.
Xtreme Buzzwire-4-2 (proyecto Arduino mermelada)

Xtreme Buzzwire-4-2 (proyecto Arduino mermelada)

este proyecto es parte de la Arduino Jam 2012.En primer lugar que nos gustaría agradecer a la organización y sobre todo el principal patrocinador, Capgemini, que hizo todo esto posible.En el Arduino Jam, durante la brainstormsession, llegamos con la
Añadir bluetooth a su proyecto Arduino - Arduino + HC-06

Añadir bluetooth a su proyecto Arduino - Arduino + HC-06

¿No te gusta encender y apagar las luces de tu casa sin tener que levantar un dedo? (bueno, técnicamente tienes que levantar un dedo o dos, pero Obtén el Resumen de la historia). La buena noticia es que puedes. Todo lo que usted necesita es un arduin
Proyecto Arduino - E-dados! (Principiante)

Proyecto Arduino - E-dados! (Principiante)

Bien, acabo de recibir mi kit de Arduino en el correo ayer, y estaba muy contento de empezar! Después de una hora o dos, decidí empezar a hacer algo divertido:Un dado electrónico. Tuve que hacer yo, porque no había instructables que pude encontrar co
Proyecto Arduino hecho mediante Matlab-Simulink.

Proyecto Arduino hecho mediante Matlab-Simulink.

En este proyecto voy a hacer una entretela con Matlab-Simulink usando Arduino para construir un sistema de control, en lugar de utilizar la identificación convencional de Arduino, y esto puede hacerse a través de una biblioteca especial MathWorks con