Guion Practicas Arduino
Guion Practicas Arduino
DE
PRCTICAS
Arduino
San
Valero
Qu
es
Arduino?
Arduino es una plataforma electrnica de prototipos de cdigo
abierto (open-source) basada en hardware y software flexible y
fcil de usar. Est pensado para artistas, diseadores, como
hobby o para cualquier interesado en crear objetos o entornos
interactivos.
Arduino nos permite sentir el entorno mediante la recepcin de
datos desde una variedad de sensores y puede interactuar con su
alrededor mediante el control de luces, motores o casi cualquier
cosa que imaginemos.
ARDUINO frente a otros microcontroladores:
Barato.
Multiplataforma (Windows, Mac y Linux).
Entorno de programacin simple y claro.
Software libre y ampliable por cualquiera.
Hardware libre.
1
1
1
1
x
x
x
x
placa Arduino.
resistencia de 470. (Amarillo, morado, marrn)
diodo LED.
protoboard.
Las resistencias
Un resistor o resistencia, es un componente electrnico utilizado
para aadir una resistencia elctrica entre dos puntos de un
circuito de manera que nos permite distribuir adecuadamente
tensiones y corrientes a lo largo del mismo. La unidad de medida
de una resistencia es el Ohmio ().
Para identificar los valores de las resistencias (fijas) en
aquellas que por su tamao no es posible serigrafiarlo en su
encapsulado por su pequeo tamao, debemos interpretar una serie
de lneas de colores dispuestas a lo largo de la resistencia,
para esto disponemos de la siguiente tabla de colores:
El Diodo LED
0,048w
Es decir como mnimo debe ser de 48mW por lo que nos vale la ms
estndar de las resistencias, la de 1/4 de vatio.
3 Parte: Programando
Primero observemos la estructura bsica de un Sketch (Programa)
para Arduino y diferenciemos sus dos partes bsicas:
void setup() {
Aqu vendrn las configuraciones de nuestro pines
como entradas o salidas entre otras.
Como veis debe estar todo incluido entre llaves y
solo
se ejecutar una vez.
}
void loop() {
Aqu pondremos las instrucciones que ejecutar
nuestro programa nuestro programa una y otra vez.
}
Abrir
el
archivo
Proyecto_001.ino
proporcionado
en
la
documentacin del curso en vuestro ordenador y observmoslo al
completo:
/*
www.arduinoacademy.com
Proyecto 001
Blink
Enciende y apaga un Led en intervalos
de un segundo repetidamente.
Este cdigo de ejemplo es de uso pblico.
*/
//Configuracin de nuestra salida.
void setup()
{
pinMode(12, OUTPUT); // Pin 12 como Salida.
}
//Ahora le decimos que hacer con esa salida.
void loop()
{
digitalWrite(12, HIGH); // Pone la salida 12 a ON
delay(1000);
// Espera un segundo
digitalWrite(12, LOW); // Pone la salida 12 a OFF
delay(1000);
// Espera un segundo
}
1
6
6
1
x
x
x
x
placa Arduino.
resistencia de 470.
diodo LED.
protoboard.
3 Parte: Programando
Aqu es donde va a residir la complejidad de nuestro proyecto, lo
que tenemos que hacer es, mediante programacin, que se enciendan
los LED secuencialmente y al llegar a cada extremo, vuelva hacia
el otro lado y as sucesivamente, emulando el efecto de KIT,
adems veremos nuevas instrucciones como for que nos va a
permitir ahorrar muchas lneas de cdigo, as como el uso de
variables en nuestros Sketch.
Para ello, hemos hecho tres versiones
las instrucciones bsicas, observando
programa al tener que declarar una y
salida, la segunda con el ciclo for
un pequeo efecto de estela aadido.
para
ver
como
hemos
x
x
x
x
x
x
Arduino Uno
Diodo Led
Resistencia 470
Potencimetro 1K
Protoboard
Juego de cables
Pero.. Qu es el PWM?
A menudo necesitaremos algo ms que una seal de 0 o 1 en
nuestros proyectos, para variar la velocidad de giro de un motor,
para variar la intensidad con la que luce un diodo, para
transmitir los grados de giro de un servo, etc..
Para todo esto, y mucho ms, nos servir el PWM, que emula una
seal analgica a partir de una seal digital.
Las siglas PWM vienen de Pulse Width Modultation, o Modulacin de
Ancho de Pulso.
Lo que hace este tipo de seal es emitir, en lugar de una seal
continua en nuestra salida, emite una serie de pulsos que
podremos variar su duracin pero con una frecuencia constante de
aproximadamente 490Hz, de manera que la tensin promedio
resultante, es directamente proporcional a la duracin de estos
dentro del rango de nuestro periodo, es decir, cuanto ms juntos
estn esos pulsos de +5v, mayor ser la tensin promedio de
nuestra salida, y cuanto ms distantes sean estos, menor ser
dicha tensin:
Parte 3: Programando
El primer ejemplo que vamos a tratar es la adquisicin de datos
en la entrada analgica A0 para variar la frecuencia de parpadeo
de un diodo LED conectado a una salida digital cualquiera, para
ello abrir el proyecto Proyecto_003_1.ino de la documentacin del
curso.
Como novedad veremos la instruccin analogRead(entrada a leer)
Sin variar el circuito, vamos a introducir un nuevo cdigo para
realizar
un
ejemplo
diferente,
abrir
el
archivo
Proyecto_003_2.ino, en este proyecto, nuestro diodo LED variar
su intensidad lumnica en funcin del valor que est aportando el
potencimetro a nuestra entrada analgica, esto es el llamado
efecto fading (desvanecimiento), puede observarse que se ha
elegido la salida nmero 9, ya que esta s que es compatible con
la opcin PWW.
En este cdigo veremos el uso de la instruccin analagogWrite
(salida PWM, valor).
1
6
6
1
1
1
x
x
x
x
x
x
placa Arduino.
resistencia de 470.
diodo LED.
Pulsador.
Resistencia 10K (marrn, negro, naranja)
protoboard.
Esquema elctrico:
Distribucin en protoboard:
3 Parte: Programando
En este programa vamos a descubrir como leer una entrada digital,
adems de la instruccin condicional if con la que hacer
comparaciones, en nuestro caso, comprobaremos si la entrada
digital est activada, y si lo est (condicin) ejecutar las
instrucciones de su interior.
Para ello abrir el archivo Proyecto_004.ino
Parte 1: Que vamos a hacer?
En este proyecto, vamos a utilizar un LDR (Light Dependent
Resistor o resistencia dependiente de la luz) para simular una
hipottica compensacin lumnica de 5 niveles, es decir, a travs
de una resistencia que varia su valor dependiendo de la luz
recibida, aprovecharemos dicha variacin para hacer un programa
que nos encienda o apague una serie de LED dependiendo de si hay
ms luz o menos luz, esto podramos extrapolarlo a un sistema de
regulacin de luz de un jardn con cinco lneas de luz que se
vayan
encendiendo
segn
va
cayendo
la
noche
compensando
progresivamente la deficiencia de luz.
Adems le hemos implementado un potencimetro para ajustar el
nivel crtico mnimo de luz que queremos soportar, a partir del
cual se activar nuestro circuito y empezar a aumentar la luz
del lugar progresivamente.
Material necesario para este proyecto:
1
1
1
1
5
5
1
1
x
x
x
x
x
x
x
x
Arduino Uno
Protoboard
LDR
Potencimetro 1k
Diodos LED
Resistencias 470
Resistencia 1K
Juego de Cables
Donde:
Vin = Tensin que introducimos a Vref
Rinterna = Resistencia interna de Arduino de 32K
Rexterna = Resistencia mediante la cual alimentamos Vref
Vrefencia = La tensin sobre que tomar referencia nuestro
programa.
De manera que si por ejemplo, estamos introduciendo una tensin
de +3v a travs de una resistencia de 5K, la tensin real de
referencia en nuestro Arduino ser de:
(32000/(32000+5000)) x 3 = 2,59v
Porqu evita cambiar el programa continuamente?
Por que variando la seal de referencia, le estamos diciendo que
nos tome 1024 valores entre 0v una determinada tensin mxima, y
el reparto de esos valores ya los hemos fijado equitativamente en
nuestro programa para que haga una activacin progresiva de las
lneas de iluminacin, por tanto, aunque tengamos un rango muy
bajo de iluminacin con el que jugar, de 1v por ejemplo, nos va a
distribuir siempre proporcionalmente la activacin de las
salidas.
Esa tensin de referencia, ser el punto de iluminacin a partir
del cual, si decrece la luz ambiente, empezar a decrecer los
valores obtenidos en la seal analgica de entrada.
Si ponemos esa referencia muy baja, empezar a funcionar los led
con menos luz ambiente que si ponemos una seal muy alta,
recordemos:
Ms luz = Menos Resistencia = Mayor Vout
Menos luz = Mayor resistencia = Menor Vout
3 Parte: Programando
Abrir el proyecto Proyecto_005.ino de la documentacin y observar
el programa para empezar a entenderlo, es algo ms largo que los
anteriores, pero en realidad la nica instruccin nueva es
analogReference(EXTERNAL);
En cuanto a la sucesin de comparaciones os dejo este diagrama de
flujo que os har ms sencilla su comprensin:
3 Parte: Programando
Abrir
el
archivo
Proyecto_006.ino
proporcionada y observar el programa.
de
la
documentacin