Archivo de la etiqueta: Práctica

Efectos con LEDs

Ya sabemos como hacer parpadear un led, podemos hacer efectos con leds, encendiendose y apagandose en una secuencia concreta para hacer efectos y comprender la programación de Arduino.

Coche Fantástico Simple

Hacer el efecto de las luces del coche fantástico con 5 leds conectados a los pines 2, 3, 4, 5 y 6.

Esquema de conexión:

Recordar poner la resistencia adecuada a cada led. Ley de ohm: V = I * R, si el voltaje es de 5 V y queremos que al LED sólo le lleguen entre 5 mA (0.005 A) y 20 mA (0.02 A), entonces usar una resistencia entre 250 y 1000 ohms.

Código de colores de las resistencias.

Como primera aproximación se puede ejecutar en cada loop el encendido y apagado de cada led esperando un tiempo entre cada encendido y apagado. Para hacer debug, sacar por puerto serie el estado de cada led. Es una extensión del programa blink pero para varios leds.

Solución Visualino:

Solución: Ejercicio06-CocheFantasticoSimple: https://github.com/jecrespo/aprendiendoarduino-Curso_Arduino_2017/tree/master/Ejercicio06-CocheFantasticoSimple

Control Velocidad del Efecto de Leds

Con el mismo montaje anterior, añadir un potenciómetro para controlar la velocidad del efecto de los leds.

Añadir en el código al inicio del loop() la línea “timer = analogRead(A0);” para que la velocidad de los leds sea la leida de la entrada analógica de un potenciómetro. Descomentar la línea del código usado en el paso anterior.

Conexión del potenciómetro:

Diagrama:

Solución Visualino:

Solución: Ejercicio06-CocheFantasticoSimple: https://github.com/jecrespo/aprendiendoarduino-Curso_Arduino_2017/tree/master/Ejercicio06-CocheFantasticoSimple descomentando la línea: “timer = analogRead(A0);”

Esta solución no es perfecta, puesto que la velocidad se actualiza solo cuando acaba el loop (un ciclo) y no es inmediato. Veremos una solución mejor utilizado el bucle for.

Leer este tutorial y ver solo la primera solución: http://www.arduino.cc/en/Tutorial/KnightRider, las otras soluciones la veremos justo después de ver arrays y nos servirá para entender mejor su uso.

Otros Efectos

Probar a cambiar el código para hacer otros efectos cambiando el código.

Probar este efecto: https://github.com/jecrespo/Aprendiendo-Arduino/blob/master/Ejercicio48-Efectos_Led/Ejercicio48-Efectos_Led.ino

Usando este esquema:

Anuncios

Primer Proyecto: “Blink”

En lugar del clásico “hola mundo” que es el primer programa que se hace cuando se aprende un lenguaje de programación, en Arduino el equivalente es el proyecto blink.

El primer programa o sketch será hacer parpadear el led integrado que lleva Arduino u otro led conectado a un pin digital a través de una resistencia.

NOTA: en caso de usar un led, no olvidar poner una resistencia con un valor entre 220 ohms y 1K ohms

Este es el esquema a usar:

Conexiones internas de la protoboard son así:

Cómo usar una protoboard o breadboard:

Esquema usando la protoboard:

Pasos a seguir:

  • Abrir la aplicación Arduino
  • Abrir el ejemplo blink

  • Leer el programar y entender lo que está haciendo
  • Seleccionar la placa y el puerto adecuado

  • Cargar el programa pulsando el botón “subir”. El programa se compila y luego se verá parpadeando los leds Tx y Rx de Arduino, indicando que se está cargando el fichero binario (.hex) en la flash del Arduino. Cuando aparezca el mensaje “subido” habremos acabado.
  • Unos segundos después veremos el LED parpadeando.

Cuando cargamos un programa en Arduino, estamos usando el bootloader de Arduino, que es un pequeño programa cargado en el microcontrolador que permite subir el código sin usar hardware adicional. El bootloader está activo unos segundos cuando se resetea la placa, después comienza el programa que tenga cargado el Arduino en su memoria Flash. El led integrado en la placa (pin 13) parpadea cuando el bootloader se ejecuta.

Una explicación completa del proyecto y enlaces a las funciones usadas está en: http://arduino.cc/en/Tutorial/Blink

Práctica: Probar a cambiar el valor de delay para hacer parpadear el led más rápido o más lento.

Solución: Ejercicio01-Blink https://github.com/jecrespo/aprendiendoarduino-Curso_Arduino_2017/blob/master/Ejercicio01-Blink/Ejercicio01-Blink.ino

Mejora blink con impresión por consola

Modificar el programa para que cada vez que encienda y apague imprima por el puerto serie la cadena “encendido”, “apagado” cuando corresponda. Luego guardarlo en nuestro entorno de trabajo.

Será necesario usar la librería Serial: http://arduino.cc/en/Reference/Serial

NOTA: Cuando programamos en cualquier lenguaje sobre un ordenador, para interaccionar con el programa usamos el standard input que generalmente es el teclado y el programa muestra los resultados por el standard output que en general es la pantalla. En Arduino esto no es así, sino que para interaccionar con el programa creado se hace a través de la comunicación del puerto serie entre arduino y el ordenador mediante el cable USB que hemos conectado. En este caso la salida del programa manda una cadena de texto por el puerto serie que podemos leer gracias al monitor serie.

Solución:  Ejercicio02-Blink_Mejorado https://github.com/jecrespo/aprendiendoarduino-Curso_Arduino_2017/blob/master/Ejercicio02-Blink_Mejorado/Ejercicio02-Blink_Mejorado.ino

Si queremos poner el led en otro de los pines como el 2, debemos cambiar digitalWrite(13, HIGH); por digitalWrite(2, HIGH); y digitalWrite(13, LOW); por digitalWrite(2, LOW);

Esquema:

Arduino Serial Plotter

Desde la versión 1.6.6 del IDE de Arduino disponemos de la herramienta Arduino Serial Plotter que hace la gráfica de los datos mandados por puerto serie.

Hacer la gráfica con Arduino Serial Plotter de la función y=x*x y otra con la función y=5*x+1 y ver la gráfica en el Serial Plotter. Siendo los valores de x entre -20 y 20.

Sacar También por pantalla con el serial plotter el valor que me devuelve un potenciómetro, girando para ver cómo cambia el valor.

Montaje:

Solución:  Ejercicio03-Serial_Plotter https://github.com/jecrespo/aprendiendoarduino-Curso_Arduino_2017/blob/master/Ejercicio03-Serial_Plotter/Ejercicio03-Serial_Plotter.ino

Usar el Serial Plotter con Blink

Serial plotter imprime 500 puntos en la pantalla, por lo tanto cuanto más lento mandemos los datos más lento se imprime. Si queremos sacar por el serial plotter el blink tenemos estas dos opciones:

Más prácticas

El IDE de Arduino trae muchos ejemplos que podemos ver y probar: https://www.arduino.cc/en/Tutorial/BuiltInExamples

Las 10 primeras cosas que debes hacer con tu arduino: http://antipastohw.blogspot.com.es/2009/12/first-10-things-everyone-does-with.html

Kit de Prácticas

Las prácticas de este curso están diseñadas para usar con los elementos disponibles en el kit de prácticas. Todo el material entregado es en préstamo y debe cuidarse al máximo, a la hora del montaje de las prácticas se seguirán las instrucciones para evitar dañar los componentes.

Todos los Kits, Arduinos y Shields en préstamo tienen un número de serie entre el 1 y el 21. A cada alumno se le asignará uno de ellos y es el que usará durante todo el curso.

Se entregará una hoja de préstamo de material que deberá estar rellenada con el número de kit entregado y firmada. Al final del curso se entregará otra hoja de devolución de material comprobando que todo el material está correcto.

Cada alumno tiene su propio kit con el número de kit. Recordad este número porque se usará durante las prácticas.

Conozcamos a fondo cada uno de los elementos del kit de prácticas.

Arduino UNO

El Arduino que usaremos durante el curso es el Arduino UNO. Es el Arduino más conocido y usado.

Arduino UNO: https://www.arduino.cc/en/Main/ArduinoBoardUno

Arduino Ethernet Shield

Un shield es una placa de circuito modular que se montan unas encima de otras para dar funcionalidad extra a un Arduino. Esta Shields son apilables.

Durante el curso usaremos el Ethernet Shield para conectar Arduino a una red interna o a Internet.

Ethernet Shield V1: https://www.arduino.cc/en/Main/ArduinoEthernetShieldV1

Se trata de la versión antigua del Ethernet Shield, ahora está la versión 2 https://store.arduino.cc/arduino-ethernet-shield-2 que usa el chip W5500 en lugar del chip W5100 que usa la placa que vamos a usar en el curso.

Arduino Starter Kit

Los elementos de los que disponemos como sensores, actuadores, motores y periféricos son los correspondientes al Arduino Starter Kit. Documentación Arduino Starter Kit: http://arduino.cc/en/Main/ArduinoStarterKit

Documentación Arduino Starter Kit: http://arduino.cc/en/Main/ArduinoStarterKit

20x Arduino Starter Kit (https://www.arduino.cc/en/Main/ArduinoStarterKit) que contiene un Arduino Uno, una serie de sensores y actuadores y diversos elementos electrónicos necesarios para realizar las prácticas y proyectos. Componentes:

El Arduino Starter Kit viene con un libro de ejercicios, es posible ver este libro en castellano en la url: http://www.slideshare.net/TinoFernndez/libro-de-proyectos-del-kit-oficial-de-arduino-en-castellano-completo-arduino-starter-kit-arduino-projects-book

Con este kit hay 15 proyectos muy interesantes propuestos:

  • GET TO KNOW YOUR TOOLS an introduction to the basics
  • SPACESHIP INTERFACE design the control panel for your starship
  • LOVE-O-METER measure how hot-blooded you are
  • COLOR MIXING LAMP produce any color with a lamp that uses light as an input
  • MOOD CUE clue people in to how you’re doing
  • LIGHT THEREMIN create a musical instrument you play by waving your hands
  • KEYBOARD INSTRUMENT play music and make some noise with this keyboard
  • DIGITAL HOURGLASS a light-up hourglass that can stop you from working too much
  • MOTORIZED PINWHEEL a colored wheel that will make your head spin
  • ZOETROPE create a mechanical animation you can play forward or reverse
  • CRYSTAL BALL a mystical tour to answer all your tough questions
  • KNOCK LOCK tap out the secret code to open the door
  • TOUCHY-FEEL LAMP a lamp that responds to your touch
  • TWEAK THE ARDUINO LOGO control your personal computer from your Arduino
  • HACKING BUTTONS create a master control for all your devices!

En esta lista de youtube hay varios video tutoriales de los proyecto propuestos por el Arduino Starter Kit: https://www.youtube.com/playlist?list=PLT6rF_I5kknPf2qlVFlvH47qHvqvzkknd

Video tutoriales con ejemplos de uso del Arduino Starter Kit: https://www.youtube.com/playlist?list=PLT6rF_I5kknPf2qlVFlvH47qHvqvzkknd

Arduino Leonardo

También disponemos de 10 unidades de Arduino Leonardo incluidos en el Kit XBee: http://www.digikey.es/product-detail/en/digi-international/XKB2-AT-WWG/602-1550-ND/5271212

Arduino Leonardo es otro de los Arduinos más usados y tiene como principal característica que el propio microcontrolador ya integra el interfaz USB.

Se usa un microcontrolador ATmega32u4 en lugar del ATmega328p del Arduino Uno.

Diferencias en entre Arduino UNO y Arduino Leonardo: http://www.tresdprinttech.com/cual-es-la-diferencia-entre-arduino-uno-y-arduino-leonardo/

Kit XBee

10x Kit XBee( http://www.digikey.es/product-detail/en/digi-international/XKB2-AT-WWG/602-1550-ND/5271212) para desarrollo de aplicaciones con XBee.

Datasheet: https://media.digikey.com/pdf/Data%20Sheets/Digi%20International%20PDFs/XBee_Arduino_Compatible_Coding_Platform.pdf.

Compuesto por:

  • Arduino Leonardo-compatible
  • XBee shield XBee 802.15.4 modules
  • XBee breadboard adapters
  • XBee USB adapter
  • One 2-axis joysticks
  • Six pushbuttons
  • Solderless breadboards
  • Breadboard power supplies
  • 18 LEDs
  • 10kΩ potentiometers
  • Package of 330Ω resistors
  • 9 V batteries and battery clips
  • Micro USB cable
  • Mini USB cable
  • Bundle – jumper wires

Kit Raspberry Pi

20x Kits Raspberry Pi compuestos por:

Kit Wemos D1 Mini

Kit Wemos D1 mini

Kit Comunicaciones

Módulos de comunicación:

Otros Elementos Disponibles

Disponemos de otros módulos para prácticas:

LDR con Arduino

Una fotorresistencia o LDR (por sus siglas en inglés “light-dependent resistor”) es un componente electrónico cuya resistencia varía en función de la luz.

Se trata de un sensor que actúa como una resistencia variable en función de la luz que capta. A mayor intensidad de luz, menor resistencia: el sensor ofrece una resistencia de 1M ohm en la oscuridad, alrededor de 10k ohm en exposición de luz ambiente, hasta menos de 1k ohm expuesto a la luz del sol. Aunque estos valores pueden depender del modelo de LDR.

El LDR actúa como una resistencia variable. Para conocer la cantidad de luz que el sensor capta en cierto ambiente, necesitamos medir la tensión de salida del mismo. Para ello utilizaremos un divisor de tensión, colocando el punto de lectura para Vout entre ambas resistencias. De esta forma:

Dónde Vout es el voltaje leído por el PIN analógico del Arduino y será convertido a un valor digital, Vin es el voltaje de entrada (5v), R2 será el valor de la resistencia fija colocada (10k ohm generalmente) y R1 es el valor resistivo del sensor LDR. A medida que el valor del sensor LDR varía, obtendremos una fracción mayor o menor del voltaje de entrada Vin.

El LDR que usamos: Photoresistor [VT90N2 LDR]

El valor de resistencia eléctrica de un LDR es bajo cuando hay luz incidiendo en él (puede descender hasta 50 ohms) y muy alto cuando está a oscuras (varios megaohmios).

Más información http://diwo.bq.com/descubre-el-ldr/

Ejemplos de uso:

Esquema de conexión:

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

Opcionalmente calcular el máximo y mínimo, mostrándolo por pantalla. 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://github.com/jecrespo/aprendiendoarduino-Curso_Programacion_Arduino/tree/master/Ejercicio02-LDR

Sonda DS18B20 con Arduino

Un sonda de temperatura muy usada con Arduino es la DS18B20, esta usa un bus de comunicación multipunto llamado one wire, lo que nos permite leer muchas sondas con una sola i/o digital.

Sonda: http://www.seeedstudio.com/depot/One-Wire-Temperature-Sensor-p-1235.html

Datasheet sensor: http://datasheets.maximintegrated.com/en/ds/DS18B20.pdf

Librería: http://playground.arduino.cc/Learning/OneWire

Última versión de la librería OneWire:

Existen librerías para la sonda DS18B20 que facilita el trabajo:

Protocolo one-wire:

Esquema de montaje. El bus 1-Wire necesita una resistencia de pull-up de 4K7, y que podemos alimentar el sensor directamente a través del pin Vdd o usar el modo “parásito” y alimentarlo con la propia línea de datos.

Para poder usar las sonda DS18B20 necesitaremos las librerías OneWire y DallasTemperature. Solo hay que buscar e instalar la librería a través del Gestor de Librerías.

Leer la sonda conectada al pin 2:

Código: https://github.com/jecrespo/Arduino-Kit-China-Guide/blob/master/12-DS18B20/12-DS18B20.ino

Más información: