Está en la página 1de 10

I.E.S.

ZOCO (Córdoba) Departamento de Tecnología

PRACTICAS CON ARDUINO: Nivel 1


1. INTRODUCCIÓN
Arduino es una plataforma de hardware libre, basada en una placa con un microcontrolador y un entorno de
desarrollo, diseñada para facilitar el uso de la electrónica.
Un microcontrolador es un circuito integrado programable, capaz de ejecutar las órdenes grabadas en su
memoria. Está compuesto de varios bloques funcionales, los cuales cumplen una tarea específica. Un
microcontrolador incluye en su interior las tres principales unidades funcionales de una computadora: unidad
central de procesamiento, memoria y periféricos de entrada/salida.
El hardware de Arduino consiste en una placa con un microcontrolador Atmel AVR y puertos de
entrada/salida. Consta de 13 “puertos” o conexiones digitales que pueden ser utilizados cono salidas o
entradas (aunque es aconsejable no utilizar la 0 y la 1). Cuando son utilizadas como salidas darán un 0 o un
1, y por tanto, 0 voltios o 5 voltios. Con esta tensión podemos controlar dispositivos electrónicos que
consuman poca energía, por ejemplo LED, un zumbador, o cualquier otro cuyo consumo sea inferior a 20
mA. Para controlar un motor, una lámpara, incluso un Relé, es necesario utilizar un transistor.
También consta de 5 entradas analógicas que pueden recibir tensiones de 7 a 12 v, procedentes de
cualquier sensor que proporcione información del exterior a nuestro Arduino: temperatura, luminosidad,
humedad, velocidad, posición,…
La plataforma Arduino se programa mediante el uso de un lenguaje propio basado en el popular lenguaje de
programación de alto nivel Processing. Sin embargo, es posible utilizar otros lenguajes de programación y
aplicaciones populares en Arduino. Algunos ejemplos son: Java, Flash (mediante ActionScript), Processing,
Pure Data, MaxMSP (entorno gráfico de programación para aplicaciones musicales, de audio y multimedia),
VVVV (síntesis de vídeo en tiempo real), Adobe Director, Pitón, Ruby, C, C++ (mediante libSerial o en
Windows), Cocoa/Objective-C (para Mac OS X), Linux TTY (terminales de Linux), 3DVIA Virtools
(aplicaciones interactivas y de tiempo real), SuperCollider (síntesis de audio en tiempo real), Instant Reality
(X3D), Visual Basic .NET, VBScript, Gambas, Php,…
Esto es posible debido a que Arduino se comunica mediante la transmisión de datos en formato serie que
es algo que la mayoría de los lenguajes anteriormente citados soportan. Para los que no soportan el formato
serie de forma nativa, es posible utilizar software intermediario que traduzca los mensajes enviados por
ambas partes para permitir una comunicación fluida. Es bastante interesante tener la posibilidad de
interactuar Arduino mediante esta gran variedad de sistemas y lenguajes puesto que dependiendo de
cuales sean las necesidades del problema que vamos a resolver podremos aprovecharnos de la gran
compatibilidad de comunicación que ofrece.
Arduino se puede utilizar para desarrollar objetos interactivos autónomos o puede ser conectado a software
del ordenador (por ejemplo: Macromedia Flash, Processing, Max/MSP, Pure Data). Las placas se pueden
montar a mano o adquirirse. El entorno de desarrollo integrado libre se puede descargar gratuitamente.
Al ser open-hardware, tanto su diseño como su distribución es libre. Es decir, puede utilizarse libremente
para el desarrollo de cualquier tipo de proyecto sin haber adquirido ninguna licencia.

Tema Programación con Arcuino J.A. González 1


I.E.S. ZOCO (Córdoba) Departamento de Tecnología

2. PROGRAMACIÓN BÁSICA
La estructura básica del lenguaje de programación de Arduino es bastante simple y se compone de al
menos dos partes. Ambas funciones son necesarias para que el programa trabaje.
Hay que ser muy cuidadoso y escribir los “comandos” exactamente, reSpetando mayúsculas y minúsculas y
colocando “ ; “ al finalizar la línea de comando.
La estructura básica es esta:
En el setup, entre los corchetes { } tenemos que indicar
los datos de configuración del programa. Por ejemplo que
void setup()
{ “pin” o puerto vamos a utilizar, cuales son entradas y
estamentos; cuales salidas, cuales son las variables…
} El setup se ejecuta sólo una vez al comenzar el programa,
mientras que lo que pongamos en el loop se va a repetir
indefinidamente.
La función bucle (loop) siguiente contiene el código que
se ejecutara continuamente (lectura de entradas,
void loop() activación de salidas, etc) Esta función es el núcleo de
{
todos los programas de Arduino y la que realiza la
estamentos;
} mayor parte del trabajo.

Tema Programación con Arcuino J.A. González 2


I.E.S. ZOCO (Córdoba) Departamento de Tecnología

PRÁCTICA 1. PROGRAMACIÓN BÁSICA: Activación de una salida digital.


El LED conectado a la salida digital nº 12 parpadea.
pinMode(patilla, modo). El modo puede ser INPUT (que es entrada) o OUTPUT (que es salida).
digitalWrite(patilla,valor). Escribe en una patilla un valor HIGH (que es alto) o LOW.
Dentro del setup (entre los corchetes), colocamos la orden

void setup() pinMode. Con esta orden indicamos que la salida 12 será una

{ Salida.

pinMode(12, OUTPUT);
Dentro del loop (entre los corchetes)
}
digitalWrite
“escribe en la salida digital 12 un valor 1”
void loop()
Ojo!! Después de cada orden hay que escribir “ ; “
{
delay
digitalWrite(12, HIGH);
Hace esperar al programa 500 milisegundos ( o sea 0,5
delay(500);
segundos)
digitalWrite(12, LOW);
Repite la orden y escribe un valor 0 en el pin 12. Espera 0,1
delay(100); segundo.
} Repite el programa indefinidamente.

Una vez escrito el programa pulsamos el botón verificar, para detectar errores de escritura. Si no hay
ninguno conectamos arduino al ordenador y pulsamos cargar para que lo ejecute.A los programas se les
suele poner un texto que explica como funcionan. El próximo programa que realicemos lo tendrá. Pero hay
que tener mucho cuidado y escribir el texto adecuadamente para que no de error.

Tema Programación con Arcuino J.A. González 3


I.E.S. ZOCO (Córdoba) Departamento de Tecnología

PRÁCTICA 2. PROGRAMACIÓN BÁSICA: Activación de una salida digital.


Se encienden alternativamente 3 LED.
Vamos a crear tres variables que asignaremos a cada una de las patillas donde hemos conectado los
LED.

Programa con las explicaciones iniciales que deben ir /* explicación */


Si queremos hacer alguna explicación en la linea de comando debe de ser después de //
/*
02 Salidas Digitales
Los tres led parpadean formando una secuencia Rojo, Amarillo y Verde.
Instrucciones :
Debemos utilizar el punto y coma " ; " al final de cada declaración separando los elementos del probrama.
Con la orden int creamos una variable, por ejemplo la variable "rojo" y le asignamos un valor, por ejemplo valor "12".
Si la variable queremos que esté disponible para todo el programa debe de crearse ANTES del setup(). También podemos
crear variables que sólo afecten a una parte del programa.

Es necesario escribir las ordenes correctamente. NO pinmode sino pinMode.


Si está bien escrito aparece en color marrón.

Conexiones:
pin 12 : LED Rojo
pin 11 : LED Amarillo
pin 10 : LED Verde
Crearemos las variables rojo, amarillo y verde y les asignaremos el número de pin.

José Antonio González


*/
int rojo = 12; // Crea una variable llamada "rojo" y le asigna un valor 13
int amarillo = 11;
int verde = 10;

void setup()
{
pinMode(rojo, OUTPUT); // Indica que la variable " rojo " es una salida de arduino, y por tanto el pin 13 es una salida.
pinMode(amarillo, OUTPUT);
pinMode(verde, OUTPUT);
}

void loop()
{
digitalWrite(rojo, HIGH); // Escribe en la variable "rojo" un valor alto, un "1".
delay(500); // Espera 0,5 segundos
digitalWrite(rojo, LOW); // Escribe en la variable "rojo" un valor bajo, un "0".

digitalWrite(amarillo, HIGH);
delay(500);
digitalWrite(amarillo, LOW);

digitalWrite(verde, HIGH);
delay(500);
digitalWrite(verde, LOW);

Tema Programación con Arcuino J.A. González 4


I.E.S. ZOCO (Córdoba) Departamento de Tecnología

Tema Programación con Arcuino J.A. González 5


I.E.S. ZOCO (Córdoba) Departamento de Tecnología

PRÁCTICA 3. REGULACIÓN DE UN CRUCE DE SEMÁFOROS.


Tenemos dos semáforos con una luz roja, otra amarilla y otra verde. Llamaremos rojo1, amarillo1 y verde1 a
las luces de uno de los semáforos y rojo2, amarillo2 y verde2 a las luces del otro. Piensa la secuencia lógica
de funcionamiento del sistema escríbela y posteriormente realiza el programa. Utiliza los siguientes pines,
creando las variables correspondientes.
pin 13 : LED Rojo1 pin 7 : LED Rojo2
pin 12 : LED Amarillo1 pin 6 : LED Amarillo2
pin 11 : LED Verde1 pin 5 : LED Verde2

PRÁCTICA 4. SOS CON ZUMBADOR.


Se trata de un zumbador que en código morse (pitidos largos y cortos) emite una palabra, en nuestro caso
SOS. En código morse la S se reproduce con 3 señales de corta duración y la O con tres señales de larga
duración.
El zumbador debe estar conectado al pin 13, los pitidos cortos tendrán una duración de 100 ms y los largos
de 300 ms. Entre letra y letra debe pasar un tiempo de 300 ms y, entre SOS y SOS debe pasar un tiempo
de 1000 ms.
PRÁCTICA 5. “EL COCHE FANTÁSTICO”.
Se trata de encender y apagar 7 leds de forma secuencial. Los led van a estar conectados a los pines
5,6,7,8,9,10 y 11.
En primer lugar los led se deben encender del 5 al11, dejando pasar 50 milisegundos, al finalizar deben
comenzar a encenderse y apagarse del led 11 al 5. La secuencia debe repetirse indefinidamente. El efecto
del programa es el de la serie de televisión “el coche fantástico”.

3. ENTRADAS DIGITALES
Es muy importante saber como podemos introducir en arduino una señal digital ( 0 ó 1) en una de sus
entradas. Esta señal puede proceder de un final de carrera, un sensor de luz, un pulsador,…En primer lugar
debemos configurar el pin que vamos a utilizar como entrada en el programa pero es FUNDAMENTAL que
la señal de entrada procedente del exterior sea de 5 voltios y tenga una resistencia de 10 KΩ conectada a
tierra o 0 voltios. Así evitamos cortocircuitos. Ojo porque podemos quemar el microprocesador

El interruptor podría ser un pulsador, como en el próximo ejercicio o una puerta lógica, un sensor de luz con
su transistor,…

En esta práctica vamos a utilizar también la orden if que nos permite que el programa haga una cosa u

otra en función de un dato o una entrada.

Tema Programación con Arcuino J.A. González 6


I.E.S. ZOCO (Córdoba) Departamento de Tecnología

4. ORDEN if (condicional)
if es una función que se utiliza para probar si una determinada condición se ha alcanzado, como por
ejemplo averiguar si un valor analógico está por encima de un cierto número, y ejecutar una serie de
operaciones que se escriben dentro de llaves, si es verdad. Si es falso (la condición no se cumple) el
programa salta y no ejecuta las operaciones que están dentro de las llaves. El formato para if es el
siguiente:

if (x==HIGH)
{
pinWrite(10, LOW)
}
Si la variable x tiene un valor igual a HIGH o 5 voltios entonces pon en el pin 10 un 0.

Otro ejemplo:
If( digitalRead(10)==HIGH)
{
pinWrite(13, LOW)
}
PRACTICA 5: SEMÁFORO CON PULSADOR.
Realiza un semáforo con un pulsador de modo que hasta que no lo pongamos a 5 voltios (un 1) no se
pondrá en marcha el programa. Ojo con la conexión del pulsador al pin 8.

/*
03 Semaforo simple. Con pulsador, de modo que cuando le demos un pulso, se pone en marcha el semáforo, hasta que no le demos
otro no volverá a funcionar.

ORDEN IF(SI Condicional)


If (concicioon)
"corchete"
ejecutamos las instrucciones entre corchetes
"corchete"
Conexiones:
pin 13 : LED Rojo
pin 12 : LED Amarillo
pin 11 : LED Verde
pin 8 : Pulsador
Crearemos las variables rojo, amarillo ,verde y pulsador y les asignaremos el número de pin.

José Antonio González

*/

Tema Programación con Arcuino J.A. González 7


I.E.S. ZOCO (Córdoba) Departamento de Tecnología

int rojo = 13; // Crea una variable llamada "rojo" y le asigna un valor 13

int amarillo = 12;


int verde = 11;
int pulsador = 8;

void setup()
{
pinMode(rojo, OUTPUT); // Indica que la variable " rojo " es una salida de arduino, y por tanto el pin 13 es una salida.

pinMode(amarillo, OUTPUT);
pinMode(verde, OUTPUT);
pinMode(pulsador, INPUT);
}

void loop()
{
if (digitalRead(pulsador) == HIGH)
{
digitalWrite(rojo, HIGH); // Escribe en la variable "rojo" un valor alto, un "1".

delay(500); // Espera 0,5 segundos

digitalWrite(rojo, LOW); // Escribe en la variable "rojo" un valor bajo, un "0".

digitalWrite(amarillo, HIGH);
delay(500);
digitalWrite(amarillo, LOW);

digitalWrite(verde, HIGH);
delay(500);
digitalWrite(verde, LOW);
}
}
En el ejemplo anterior se compara una variable con un valor, el cual puede ser una variable o constante. Si
la comparación, o la condición entre paréntesis se cumple (es cierta), las declaraciones dentro de los
corchetes se ejecutan. Si no es así, el programa salta sobre ellas y sigue.

Tema Programación con Arcuino J.A. González 8


I.E.S. ZOCO (Córdoba) Departamento de Tecnología

5. ORDEN if .....else (si….sino….)

if… else viene a ser un estructura que se ejecuta en respuesta a la idea “si esto no se cumple haz esto
otro”. Por ejemplo, si se desea probar una entrada digital, y hacer una cosa si la entrada fue alto o hacer
otra cosa si la entrada es baja, usted escribiría que de esta manera:
if (inputPin == HIGH)
{
instruccionesA;
}
else
{
instruccionesB;
}
Else puede ir precedido de otra condición de manera que se pueden establecer varias estructuras
condicionales de tipo unas dentro de las otras (anidamiento) de forma que sean mutuamente excluyentes
pudiéndose ejecutar a la vez. Es incluso posible tener un
número ilimitado de estos condicionales. Recuerde sin embargo qué sólo un conjunto de declaraciones
se llevará a cabo dependiendo de la condición probada:

if (inputPin < 500)


{
instruccionesA;
}
else if (inputPin >= 1000)
{
instruccionesB;
{
else
{
instruccionesC;
}
PRACTICA 6: SEMÁFORO CON PULSADOR Y ORDEN if…else.
Repite la progrmación anterior de modo que si se cierra el pulsador se pone en marcha la secuencia del
control de semáforos. Si no pulsamos todos los led deben encenderse, permanecer unos instantes
encendidos y luego apagarse.

Tema Programación con Arcuino J.A. González 9


I.E.S. ZOCO (Córdoba) Departamento de Tecnología

6. ORDEN for
La declaración for se usa para repetir un bloque de sentencias encerradas entre llaves un número
determinado de veces. Cada vez que se ejecutan las instrucciones del bucle se vuelve a testear la
condición. La declaración for tiene tres partes separadas por (;), vemos el ejemplo de su sintaxis:

for (inicialización; condición; expresión)


{ Instrucciones;
}
La inicialización de una variable local se produce una sola vez y la condición se testea cada vez que se
termina la ejecución de las instrucciones dentro del bucle. Esta condición puede ser que una entrada esté
activa, que un final de carrera esté pulsado,…
Mientras que la condición sigue cumpliéndose, las instrucciones del bucle se vuelven a ejecutar. Cuando la
condición no se cumple, el bucle termina.
En la expresión podemos colocar un parámetro que determine cuantas veces va a repetirse el bucle.

Ej: En primer lugar se define la variable i y le da un valor 0.


Siempre que i sea menor que 20 se repite todo lo que pongamos dentro de los corchetes { }. Cuando se
han ejecutado las órdenes, se ejecuta la expresión “i++” que suma 1 al valor de i. Si el valor de i continua
siendo menor de 20 se repite el proceso. Cuando i llega a valer 20 se para.

for (int i=0; i<20; i++)

{
digitalWrite(13, HIGH);
delay(250);
digitalWrite(13, LOW);
delay(250);
}

REPITE LA PRÁCTICA “ZUMBADOR SOS” UTILIZANDO LA ORDEN FOR


Debes lograr que el zumbador suene 3 veces seguidas para producir la letra S, otras 3 para producir la letra
O y otras tres la letra S.

Tema Programación con Arcuino J.A. González 10

También podría gustarte