Archivo de la etiqueta: contador de pulsos

Prácticas: Ejemplos Sencillos Programación Arduino

Hacer unos ejemplos sencillos de programación para evaluar el conocimiento de cada alumno con el montaje de prácticas.

Todos los ejercicios se subirán al repositorio llamado “Curso Programacion Arduino 2019” de cada alumno haciendo un commit y un Pull.

Luego todos los alumnos podrán ver las soluciones propuestas por cada uno y comprobaremos que para un mismo problema hay muchas soluciones diferentes. También el profesor pondrá su solución (no tiene porque ser la mejor) y hacer correcciones a los códigos propuestos por los alumnos.

Montaje Arduino UNO:

Montaje Wemos:

Ejercicio03 – Leer LDR y mostrar Gráfica

Ejercicio03. Leer el valor del LDR cada 500ms y mostrarlo por el Serial Monitor y Serial Plotter. Usar delay para grabar cada 500ms.

También calcular el máximo y mínimo, mostrándolo por la pantalla LCD. Usar las funciones:

Esto nos puede servir para calibrar un elemento y conocer su máximo y mínimo para luego en función de esos valores regular otro elemento como la intensidad de un LED.

Solución: https://codeshare.io/5zeYvb

Hacer commit y pull del código en el repositorio de cada alumno “Curso Programacion Arduino 2019” que esté en una carpeta llamada Ejercicio03-LDR

Ejercicio04 – Contar pulsos

Ejercicio04. Contar las veces que se pulsa (flanco ascendente) del botón A y B y mostrar por el monitor serie el total de pulsaciones de ambos botones cada vez que cambia el valor de alguno de los contadores.

Mostrar también los datos por la pantalla LCD.

Solución: https://codeshare.io/ad9x4Z

Hacer commit y pull del código en el repositorio “Curso Programacion Arduino 2019” que esté en una carpeta llamada Ejercicio04-Cuenta_Pulsos

Ejercicio05 – Mover Servo

Ejercicio05. Mover el servo entre las posiciones de 10º a 170º en función del valor leído en el potenciómetro.

Imprimir por la pantalla LCD la posición del servo.

Solución: https://codeshare.io/G86LVD

Hacer commit y pull del código en el repositorio “Curso Programacion Arduino 2019” que esté en una carpeta llamada Ejercicio05-Servo

Ejercicio06 – Contar Pulsos Wemos D1 Mini

Ejercicio06. Contar las veces que se pulsa el pulsador y mostrar por la pantalla oled el número de pulsaciones y el tiempo entre pulsaciones.

También crear un servidor web que muestre los datos de pulsaciones. 

Solución: https://codeshare.io/axwpzN

Hacer commit y pull del código en el repositorio “Curso Programacion Arduino 2019” que esté en una carpeta llamada Ejercicio06-Cuenta_Pulsos_Wifi

Anuncios

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