practicas con arduino: nivel 1ieszoco-tecnologia.wikispaces.com/file/view/arduino+nivel+1.pdf · el...

10
I.E.S. ZOCO (Córdoba) Departamento de Tecnología Tema Programación con Arcuino J.A. González 1 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.

Upload: truongkhanh

Post on 09-May-2018

231 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: PRACTICAS CON ARDUINO: Nivel 1ieszoco-tecnologia.wikispaces.com/file/view/ARDUINO+nivel+1.pdf · El hardware de Arduino consiste en una placa con un microcontrolador Atmel AVR y puertos

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

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

PRACTICAS CON ARDUINO: Nivel 11. 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.

Page 2: PRACTICAS CON ARDUINO: Nivel 1ieszoco-tecnologia.wikispaces.com/file/view/ARDUINO+nivel+1.pdf · El hardware de Arduino consiste en una placa con un microcontrolador Atmel AVR y puertos

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

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

2. PROGRAMACIÓN BÁSICALa 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:

void setup(){

estamentos;}

En el setup, entre los corchetes { } tenemos que indicar

los datos de configuración del programa. Por ejemplo que

“pin” o puerto vamos a utilizar, cuales son entradas y

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.

void loop(){

estamentos;}

La función bucle (loop) siguiente contiene el código que

se ejecutara continuamente (lectura de entradas,

activación de salidas, etc) Esta función es el núcleo de

todos los programas de Arduino y la que realiza la

mayor parte del trabajo.

Page 3: PRACTICAS CON ARDUINO: Nivel 1ieszoco-tecnologia.wikispaces.com/file/view/ARDUINO+nivel+1.pdf · El hardware de Arduino consiste en una placa con un microcontrolador Atmel AVR y puertos

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

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

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.

void setup()

{

pinMode(12, OUTPUT);

}

void loop()

{

digitalWrite(12, HIGH);

delay(500);

digitalWrite(12, LOW);

delay(100);

}

Dentro del setup (entre los corchetes), colocamos la orden

pinMode. Con esta orden indicamos que la salida 12 será una

Salida.

Dentro del loop (entre los corchetes)

digitalWrite

“escribe en la salida digital 12 un valor 1”

Ojo!! Después de cada orden hay que escribir “ ; “

delay

Hace esperar al programa 500 milisegundos ( o sea 0,5

segundos)

Repite la orden y escribe un valor 0 en el pin 12. Espera 0,1

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.

Page 4: PRACTICAS CON ARDUINO: Nivel 1ieszoco-tecnologia.wikispaces.com/file/view/ARDUINO+nivel+1.pdf · El hardware de Arduino consiste en una placa con un microcontrolador Atmel AVR y puertos

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

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

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 DigitalesLos 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 podemoscrear 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 Rojopin 11 : LED Amarillopin 10 : LED VerdeCrearemos 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 13int 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);

}

Page 5: PRACTICAS CON ARDUINO: Nivel 1ieszoco-tecnologia.wikispaces.com/file/view/ARDUINO+nivel+1.pdf · El hardware de Arduino consiste en una placa con un microcontrolador Atmel AVR y puertos

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

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

Page 6: PRACTICAS CON ARDUINO: Nivel 1ieszoco-tecnologia.wikispaces.com/file/view/ARDUINO+nivel+1.pdf · El hardware de Arduino consiste en una placa con un microcontrolador Atmel AVR y puertos

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

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

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 12 : LED Amarillo1

pin 11 : LED Verde1

pin 7 : LED Rojo2

pin 6 : LED Amarillo2

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 DIGITALESEs 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.

Page 7: PRACTICAS CON ARDUINO: Nivel 1ieszoco-tecnologia.wikispaces.com/file/view/ARDUINO+nivel+1.pdf · El hardware de Arduino consiste en una placa con un microcontrolador Atmel AVR y puertos

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

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

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

*/

Page 8: PRACTICAS CON ARDUINO: Nivel 1ieszoco-tecnologia.wikispaces.com/file/view/ARDUINO+nivel+1.pdf · El hardware de Arduino consiste en una placa con un microcontrolador Atmel AVR y puertos

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

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

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.

Page 9: PRACTICAS CON ARDUINO: Nivel 1ieszoco-tecnologia.wikispaces.com/file/view/ARDUINO+nivel+1.pdf · El hardware de Arduino consiste en una placa con un microcontrolador Atmel AVR y puertos

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

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

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.

Page 10: PRACTICAS CON ARDUINO: Nivel 1ieszoco-tecnologia.wikispaces.com/file/view/ARDUINO+nivel+1.pdf · El hardware de Arduino consiste en una placa con un microcontrolador Atmel AVR y puertos

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

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

6. ORDEN forLa 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.