Ejemplos Entradas y Salidas Digitales

Input Pullup

Usar la resistencia interna de pull up de Arduino para detectar la pulsación de un botón (leer estado de una entrada digital) y encender el led 13 (integrado en placa) cuando tenga pulsado el botón y apagarlo cuando lo libere. Adicionalmente sacar por el monitor serie el estado de pulsación del botón con un 1 o un 0, de esta forma abriendo el Serial Plotter es posible ver la señal que recibe Arduino.

Imprimir por pantalla el tiempo de loop, que nos servirá para analizar la importancia de este tiempo en el comportamiento del programa.

NOTA: Al contrario que en anteriores prácticas, usamos un botón conectado al pin digital 2 configurado como INPUT_PULLUP. En este caso al leer el pin 2 con digitalRead() me devuelve 1 cuando no está pulsado el botón (abierto) y me devuelve 0 cuando está pulsado el botón (cerrado)

Esquema de conexión:

Diagrama eléctrico:

Resultado:

Tutorial: http://arduino.cc/en/Tutorial/InputPullupSerial

Solución: https://github.com/jecrespo/aprendiendoarduino-Curso_Arduino_2017/tree/master/Ejercicio16-pullup

NOTA: Ver efecto de la diferencia del tiempo de loop cuando pulso o no pulso el botón debido a el Serial.println que se ejecuta al pulsar el botón.

NOTA: Si el tiempo de loop es muy largo podemos perder pulsaciones rápidas. Probar a poner un delay.

Interruptor

Con la base del ejemplo anterior pero en lugar de mantener pulsado el botón para encender el led, con una pulsación enciende y con otra apaga el led. Ahora el led ponerlo en el pin 10 en lugar del 13. Para hacer esto debemos detectar flancos para encender y apagar.

Más información sobre como detectar flancos: http://rufianenlared.com/flancos/

Esquema de conexión:

Resultado:

Solución: https://github.com/jecrespo/aprendiendoarduino-Curso_Arduino_2017/tree/master/Ejercicio17-pullup_interruptor

Función Detecta Flanco

Hacer tres funciones para detectar que hagan las siguientes funciones y que se le pase como parámetro el pin donde detectar el flanco:

  • Detectar flanco ascendente
  • Detectar flanco descendente
  • Detectar flanco. Devuelve 1 para un flanco ascendente y un -1 para un flanco descendente.

Para usar estas funciones, deben llamarse en cada loop y para no perder un flanco, deben llamarse como máximo cada 300 ms.

Usarla en el ejemplo anterior del interruptor.

Solución:

Comprobar que si quiere detectar flanco en dos pines con una misma función no es posible. Para solucionarlo es necesario usar clases.

Solución:

Contador de pulsos

Usar Arduino para contar pulsaciones de un pulsador. Modificar el ejemplo anterior para contar el número de veces que se pulsa un botón detectando flancos ascendentes o descendentes y sacarlo por el monitor serie. Adicionalmente encender o apagar el led cada vez que haya 4 pulsaciones del botón.

NOTA: comprobar los rebotes y pensar cómo eliminarlos.

Solución: https://github.com/jecrespo/aprendiendoarduino-Curso_Arduino_2017/tree/master/Ejercicio18-cuentapulsos

4 comentarios en “Ejemplos Entradas y Salidas Digitales

  1. Pingback: Saber Más Iniciación Arduino 2018 | Aprendiendo Arduino

  2. Pingback: Saber Más Iniciación Arduino 2019 | Aprendiendo Arduino

  3. Pingback: Saber Más Gestión de Proyectos con Arduino | Aprendiendo Arduino

  4. Pingback: Conexiones digitales – Arduino Peru | Comunidad Maker del Perú

Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.