Sie sind auf Seite 1von 33

GUA BSICA ARDUINO

Eliuth Cruz Camarillo

Contenido:
INTRODUCCION .................................................................................................................................. 2
DESCRIPCIN BASICA DE LA TARJETA ARDUINO UNO ...................................................................... 3
HOLA MUNDO..................................................................................................................................... 4
DISPLAY DE 7 SEGMENTOS (HIGH/LOW) ........................................................................................... 6
FUNCIONES ....................................................................................................................................... 10
ENTRADAS DIGITALES ....................................................................................................................... 13
CONTADOR ....................................................................................................................................... 15
FUNCIONES QUE UTILIZAN PARMETROS (SERVOMOTORES) ....................................................... 17
SENSOR ULTRASNICO..................................................................................................................... 21
SENSOR ANALGICO POTENCIOMETRO .......................................................................................... 23
SENSOR ANALGICO FOTORESISTENCIA ......................................................................................... 26
BREVE GLOSARIO DE FUNCIONES ARDUINO ................................................................................... 30
BIBLIOGRAFIA: .................................................................................................................................. 31

INTRODUCCION
Arduino es una plataforma para prototipos de cdigo abierto basado en un
hardware1 y software2 de uso fcil, las tarjetas Arduino son capaces de leer
entradas digitales3 desde un sensor, un botn presionado por un dedo o un
mensaje de twitter y convertirlo en una salida (digital), para accionar un motor,
encender un LED, publicar algo online, tu puedes decir a tu tarjeta que hacer
al enviar una serie de instrucciones al microcontrolador4 situado en la tarjeta,
para hacer esto debes emplear el lenguaje de programacin de Arduino
(basado en wiring), y el software de Arduino (IDE5), basado en processing.

Ilustracin 1 Existen muchas versiones de tarjetas Arduino para adecuarse a diferentes proyectos dependiendo del
tamao, cantidad y tipos de entradas y salidas, velocidad, etc.

Ilustracin 2 Por tratarse de un sistema de desarrollo abierto cualquier persona interesada puede tener acceso a
informacin sobre cmo construir una tarjeta Arduino

DESCRIPCIN BASICA DE LA TARJETA ARDUINO UNO


Este tutorial est dirigido para ser empleado con el modelo Arduino UNO,
aunque la mayora del cdigo que se presentar funcionara con pequeas
adecuaciones con cualquier otro modelo.

Ilustracin 3 Descripcin de algunos componentes montados en la placa Arduino UNO

Con el propsito de ser una gua breve y enfocada a mostrar ejemplos ms que
detalles y caractersticas de los microntroladores, se puede reducir a que un
microcontrolador (en Arduino UNO se trata de un ATmega328p) puede recibir
o leer datos digitales (1/0), y puede emitir salidas del mismo tipo.

Ilustracin 4 Para este ejemplo de un microcontrolador de 8 puertos genricos de entrada y salida (GPIO6) el pin 0 deber
ser configurado como un pin de salida (LED) mientras que los pines 1 y 2 como entradas (botones)

Arduino puede interactuar con una gran cantidad de sensores y dispositivos


de salida.

Ilustracin 5 Algunos ejemplos de sensores digitales son push button, limit switch, ultrasnico, infrarojo, etc. Entre
algunos dispositivos digitales de salida se encuentran los Leds, motores de corriente directa, bocinas, motores a pasos,
LDC, entre otros.

HOLA MUNDO
El primer ejemplo consistir en hacer parpadear un LED (pgina 5 para ms
informacin), se llevar a cabo llamando las funciones principales void
setup() y void loop(), creando variables, configurando puertos y escribiendo
en puertos.

Una variable es un nombre simblico (o de referencia) a cierta informacin, el


nombre de la variable representa la informacin que la variable contiene, se
llama variable por que la informacin que contiene puede cambiar. Por
ejemplo:
X=5
X+1=6
En este ejemplo a la variable X se le asigna el valor numrico 5. En la Lnea 2
del anterior ejemplo se cre una variable llamada led a la cual se le asign el
valor 13, ahora podemos referirnos al pin 13 de la tarjeta Arduino como led.
Como notaste antepuesto a la asignacin de nombre se encuentra la palabra
int, en la mayora de los lenguajes de programacin es imperativo declarar
el tipo de dato, es decir no es lo mismo asignar a una variable un tipo de dato
int (integrador) a uno de tipo float (flotante), o bien de tipo char (carcter).
(vase tabla 1)

Tabla 1 Descripcin de tipos de datos ocupados por la mayora de los lenguajes de programacin

Es importante mencionar que la funcin void setup() (lnea 3) una vez


cargado el programa en la tarjeta Arduino nicamente se ejecutar una nica
vez, hasta que el programa sea reiniciado. Por otra parte la funcin void
loop() se reiniciar una vez llegado al fin del programa y continuar
reiniciando hasta que se apague o reinicie Arduino.
Para una mejor comprensin de pinMode y otras palabras reservadas puedes
consultar el glosario al final de esta gua.

DISPLAY DE 7 SEGMENTOS (HIGH/LOW)


Ahora que se tiene el conocimiento sobre declaraciones de altos y bajos
realizaremos otro ejemplo sencillo, empleando un dispositivo llamado display
de 7 segmentos.
Primero analicemos el encendido de un led, muchos dispositivos electrnicos
son polarizados7, es decir requieren de una conexin especfica para funcionar,
en caso de un led es la siguiente:

Ilustracin 6 Polarizacin de un Diodo LED, para hacerlo funcionar debemos respetar la conexin requerida es decir una
conexin positiva en el nodo y una negativa en el ctodo

Ilustracin 7 Del lado izquierdo se muestra el circuito de conexin directa de un LED de manera grfica, mientras que del
lado derecho el mismo circuito empleando smbolos

Un display de 7 segmentos (algunos pueden tener un segmento adicional para


marcar un punto decimal) se compone de 7 leds los cuales pueden compartir
en comn los pines del nodo (+) o bien el ctodo (-):

Ilustracin 8 cuando el ctodo (-) es comn es necesario enviar altos (HIGH) a cada led para encenderlo al contrario de
cuando el nodo (+) es comun donde es necesario enviar bajos (LOW)

Ilustracin 9 Conexin internar de los leds correspondientes al tipo de display de 7 segmentos a emplear.

En los siguientes ejemplos se emplear un display de 7 segmentos de ctodo


comn, a continuacin, se muestra la plantilla de segmentos para referencia.

Ilustracin 10 Plantilla de descripcin de segmentos de un display de 7 segmentos ctodo comn

El siguiente cdigo mostrar en el display el numero 0 por un segundo,


despus mostrar el numero 1 por un segundo, y se repetir.

Para visualizar este cdigo es necesario la conexin fsica de la ilustracin 11,


o bien emplear algn sistema de simulacin online como adobe 123circuits, o
software especializado como Virtual Breadboard o Proteus.

Ilustracin 11 Conexin de un display de 7 segmentos ctodo comn a Arduino

FUNCIONES
Una funcin es un bloque de cdigo que tiene un nombre y un conjunto de
instrucciones que son ejecutadas cuando se llama a la funcin.
Las funciones de usuario pueden ser escritas para realizar tareas repetitivas y
para reducir el tamao de un programa. Las funciones se declaran asociadas a
un tipo de valor type. Este valor ser el que devolver la funcin, por ejemplo
'int' se utilizar cuando la funcin devuelve un dato numrico de tipo entero,
si la funcin no devuelve ningn valor entonces se colocar delante la palabra
void, que significa funcin vaca. Despus de declarar el tipo de dato que
devuelve la funcin se debe escribir el nombre de la funcin y entre parntesis
se escribirn, si es necesario, los parmetros que se deben pasar a la funcin
para que se ejecute.

type nombreFuncin(parmetros)
{
instruccin;
}

10

A continuacin, se mostrar un ejemplo donde por medio de funciones sern


impresos los nmeros del 0-3 en un display de 7 segmentos, El cdigo es similar
al ejemplo anterior solo que esta vez se declaran las funciones despus de la
funcin void loop() y se mandan llamar dentro de esta funcin.
El mismo principio deber ser usado para crear y llamar las funciones de los
nmeros faltantes.

11

Notars que el tipo de dato empleado en estas funciones es de tipo void esto
es como se mencion anteriormente por que no devuelven ningn tipo de
valor, tambin es notable que tampoco requirieron ningn parmetro
(parntesis vacos) para su funcionamiento, ms adelante (pgina 16) veremos
ejemplos de funciones que emplean parmetros. Qu tendras que agregar o
modificar para que las funciones requirieran un parmetro tiempo, y puedan
ser llamadas para que muestren cada nmero por un tiempo personalizado?

12

Por ejemplo:
void loop(){
cero(500);

//visualiza nmero 0 por 500 ms

uno(300);

//visualiza nmero 1 por 300 ms

dos(1500);

//visualiza nmero 2 por 1500 ms

ENTRADAS DIGITALES
Ya fueron mencionados ejemplos de sensores digitales, ahora veremos cmo
configurar los pines de Arduino para su uso.

Ilustracin 12 Conexin de un push button como entrada digital y un led como salida digital a una tarjeta Arduino

La funcin if es empleada cuando una condicin o ms necesitan ser


evaluadas, su sintaxis es la siguiente:
if (algunaVariable > 50)
{
// algo sucede aqui
}

13

Cuando se requiere alguna otra accin en caso que la condicin no se cumpla


se emplea else.

La funcin if emplea operadores de comparacin, los cuales se enlistan en la


siguiente tabla:

Tabla 2 Operadores de comparacin empleados en muchos lenguajes de programacin

14

CONTADOR
Empleando los dos ltimos ejemplos la siguiente muestra la manera de
aumentar un digito cada vez que se presiona un botn.

Ilustracin 13 Un ejemplo ms entradas y salidas digitales conectados una tarjeta Arduino

El ejemplo no incluye la declaracin de las funciones correspondientes a la


visualizacin de los nmeros del 0 al 3, pero son las mismas empleadas en el
ejemplo de funciones (pginas 10 y 11)
Notars que se emple una condicin anidada esto sucede cuando dentro de
una condicin if se introduce alguna otra condicin (lneas 18-26).
Tambin se emple la funcin else if, la cual es til cuando una variable
puede adoptar ms de dos valores (if-else), de este modo podemos agregar
cuantas opciones queramos evaluar (similar a switch/case que tambin
puede ser empleado en Arduino) slo hay que colocar las instrucciones dentro
de llaves como se muestra en ejemplo.
No olvides practicar nuevas cosas, los ejemplos anteriores estn limitados a la
visualizacin de nmeros del 0-3 pero t puedes simular la numeracin
completa del 0-9 utilizando el entorno online Adobe 123circuits. (en caso de
no poder simular el display de 7 segmentos puedes hacerlo colocando 7 leds
por separado).

15

16

FUNCIONES QUE UTILIZAN PARMETROS (SERVOMOTORES)


Para realizar este ejemplo haremos uso de otro dispositivo de salida digital
conocido como servomotores de rotaciones continuas.
Un servomotor convencional puede posicionar la flecha en una posicin
deseada de acuerdo al ancho de pulso (pwm8) que reciba, por ejemplo:

Ilustracin 14 Cuando un ancho de pulso de 1ms es enviado cada 20 ms, el servomotor se posicionar a 0, cuando el
ancho de pulso es de 1.5ms a 90 y cuando es de 2ms a 180

En el caso de los servomotores de rotaciones continuas existen nicamente 3


posiciones con respectivos niveles de velocidad, giro en sentido horario, anti
horario y alto.
La manera de detener un servomotor de rotaciones continuas cuando este
est bien calibrado es mediante el envo de posicin a 90 (un servo
convencional se posicionar a 90 uno de rotaciones continuas se detendr)

17

A continuacin, el ejemplo de cmo hacer que un servomotor convencional se


posicione a 90 empleando la libreria9 Servo.h.

Con este mismo cdigo lograramos que un servomotor bien calibrado de


rotaciones continuas se detenga.
Para hacer que el servomotor gire en sentido horario es necesario cambiar el
valor de servomotor.write(90) a un valor mayor a 90, y para hacerlo girar en
sentido anti horario a un valor menor a 90.
Existe poco control de velocidades en un servomotor de rotaciones continuas
y solo es perceptible en valores muy prximos a 90, por tanto, solo ser notoria
un aumento de velocidad en sus respectivas direcciones en los valores hallados
entre 85-90 y 90-95, cualquier valor menor de 85 o mayor de 95 devolver una
velocidad constante la cual ser la velocidad mxima del servomotor. (esto
puede variar dependiendo del modelo y tipo de servomotor)
A continuacin, un ejemplo de la declaracin y llamada de funciones para
movimiento de un robot si este tuviese dos servomotores con ruedas
acoplados a su chasis (ilustracin 15), es decir, tendremos un servomotor
derecho y otro izquierdo.
No es recomendable la conexin de elementos de potencia (motores AC/CD,
generadores, ventiladores, etc.) directamente a una placa Arduino, estos
deben llevar una etapa de potencia10, sin embargo, para este ejemplo se
omitir.

18

19

20

Ilustracin 15 Ejemplo de robot mvil que emplea servomotores de rotaciones continuas como elementos de
desplazamiento

Como se mencion en la pgina 11 este es un ejemplo de funciones que


emplean parmetros. Tambin podra obtenerse el mismo ejemplo sin usar
parmetros solo que la en la llamada de funciones tendramos que especificar
un tiempo de ejecucin, por ejemplo:
adelante();
delay(2000);

SENSOR ULTRASNICO
El sensor a emplear ser el sensor ultrasnico HC-SR04. Este sensor funciona
mediante la transmisin de una rfaga (trigger) de ultrasonido en una
frecuencia muy por encima del rango auditivo humano y provee un pulso de
salida, el cual corresponde con el tiempo requerido por el eco (echo) para
retornar hasta el sensor. Al medir la duracin de este pulso se puede calcular
fcilmente la distancia al objetivo.

Ilustracin 16 empleando la frmula de velocidad V=D/T podemos conocer la distancia que recorri un pulso de sonido
despus de rebotar y regresar.

21

En el siguiente ejemplo se emplear un sensor ultrasnico para medir


distancias y transmitir ese valor por medio de comunicacin serial
directamente a la computadora.
El monitor serial es usado para establecer comunicacin entre una tarjeta
Arduino y una computadora u algn otro dispositivo, la comunicacin se lleva
a cabo por medio de los pines 0 (RX) y 1 (TX), es por eso que si esta funcin es
empleada no podrs hacer uso de estos pines como entrada o salida.
Para visualizar el monitor serial basta con hacer clic en el icono en forma de
lupa ubicado en la parte superior derecha de IDE de Arduino.
La conexin del sensor ultrasnico a la tarjeta Arduino se muestra a
continuacin.

22

SENSOR ANALGICO POTENCIOMETRO


A diferencia de un valor digital que
puede tomar valores de 1 y 0, un valor
analgico puede tomar dependiendo de
la resolucin de la lectura una cantidad
infinita de valores, por ejemplo,
podemos contar del 1 al 5 de uno en uno
y lo lograremos con 5 valores, pero si
contamos cada 0.001 lo lograramos con
5000 valores, ahora conforme la
resolucin aumenta tambin lo harn los
valores necesarios.
Ilustracin 17Diferencia de seales analgicas y digitales

23

En la naturaleza, el conjunto de seales que percibimos son analgicas, as


la luz, el sonido, la energa etc., son seales que tienen una variacin continua.
Incluso la descomposicin de la luz en el arco iris vemos como se realiza de una
forma suave y contina.
Una onda sinusoidal es una seal analgica de una sola frecuencia. Los voltajes
de la voz y del video son seales analgicas que varan de acuerdo con
el sonido o variaciones de la luz que corresponden a la informacin que se est
transmitiendo.
A continuacin, un ejemplo de una lectura analgica con Arduino empleando
un potencimetro11 el cual tiene la caracterstica de a travs de un movimiento
mecnico hacer variar su resistividad.

Ilustracin 18 Smbolo, esquema y fotografa de un potencimetro

Ilustracin 19 Conexin de un potencimetro como resistencia variable con salida analgica a Arduino

24

Nota que el tipo de variable para lectura es de tipo flotante, y que no es


necesario declarar los puertos analgicos (A0-A5 en Arduino UNO) como
entradas, debido a que nicamente pueden ser entradas.
De manera fsica el resultado de este cdigo sera un valor entre 0-1023 (puede
variar dependiendo de la calidad del potencimetro), esto es debido a la
resolucin empleada de 10 bits. (el numero binario 1111111111 es igual a
1023, es decir el rango de valores de posibles valores ledos entre 0V y 5V sern
distribuidos entre los 10 bits o los 1023 posibles resultados).
Qu condiciones tendras que establecer para hacer variar los valores
numricos mostrados en un display empleando el valor analgico proveniente
de un potencimetro?
Podras por ejemplo crear condiciones similares a esta:

Void loop(){
If (lectura >=0 && lectura <102){ cero();}
else if (lectura >0 102 && lectura <204){uno();}

}
El doble smbolo & equivale al operador booleano AND es decir requiere que
sean cumplidas dos o ms condiciones para que la condicin se considere
verdadera, a continuacin, una tabla de otros operadores booleanos.

25

Tabla 3O Operadores booleanos en Arduino

SENSOR ANALGICO FOTORESISTENCIA

Ilustracin 20 Fotorresistencia

Una fotoresistencia (LRD12) es una


resistencia que vara su resistividad en
funcin de la luz que incide sobre su
superficie. Cuanto mayor sea la intensidad de
la luz que incide en la superficie del LDR
menor ser su resistencia y cuanta menos luz
incida mayor ser su resistencia.

26

La manera de conectar como resistencia variable es la siguiente:

Ilustracin 21 Conexin de una fotoresistencia para ser empleada como resistencia variable dependiente de la luz

Para el siguiente ejemplo utilizaremos nuevamente los servomotores, ahora


escribiremos un programa para que el robot avance en funcin a la cantidad
de luz que incida sobre 3 fotoresistencias que estarn montadas en la
protoboard del robot.

27

28

29

BREVE GLOSARIO DE FUNCIONES ARDUINO

pinMode(pin,modo)
Se emplea en la funcin setup() para configurarcomportamientode un pin a lo largo del
programa, un pin digital puede ser configurado como entrada (INPUT) o salida (OUTPUT).

digitalWrite(pin,value)
Establece el valor en un pin dado, este puede ser alto (HIGH) o bajo (LOW), lo cual es lo mismo
en binario a 1 o 0, o bien en cantidad de voltaje a 5V o 0V

DigitalRead(pin)
Lee el un valor digital desde un pin especifico, este puede ser HIGH o LOW el cual es igual a un
valor numrico 1 o 0.

AnalogRead(pin)
Lee un valor analgico desde un pin analgico (A0-A5)

delay(ms)
Realiza una pausa en el programa en milisegundos, el programa nicamente saltar a la
siguiente lnea una vez transcurrido el tiempo especificado.

Serial.Begin(rango)
Inicia un puerto paralelo y especifica la velocidad de transmisin en baudios

Serial.Print(dato)
Imprime datos a travs del puerto serie, una variacin es Serial.println con esta cinfuguracion
ser agregado un salto de lnea despus de su llamada.

Para ms informacin y ejemplos visita:


https://www.arduino.cc/en/Reference/HomePage

30

BIBLIOGRAFIA:
https://www.arduino.cc/en/Guide/Introduction#
http://comohacer.eu/analisis-comparativo-placas-arduino-oficialescompatibles/
http://blog.codebender.cc/2014/03/07/lesson-1-inputs-and-outputs/
https://www.arduino.cc/en/Main/ArduinoBoardUno
http://www.cs.utah.edu/~germain/PPS/Topics/variables.html
http://www.diegotecnology.es/led/
http://playground.arduino.cc/ArduinoNotebookTraduccion/Structure
http://tecbolivia.com/index.php/articulos-y-tutorialesmicrocontroladores/17-como-medir-distancias-con-el-sensor-ultrasonicoping
https://www.arduino.cc/en/Reference/Serial
https://es.wikipedia.org/wiki/Se%C3%B1al_anal%C3%B3gica
http://www.miki.96.lt/archivos/Arduino%20Manuales%20y%20Ejemplos/Ma
nual%20Arduino.pdf

31

eliuthcc@gmail.com

32

Das könnte Ihnen auch gefallen