ARDUINO

Page 1

Mayo de 2019

TRABAJO ARDUINO

JAVIER FERNÁNDEZ-PEÑA CHAMORRO


ÍNDICE 1.- ¿Qué es Arduino?

…………………………….

2

2.- ¿Para qué se utiliza?

…………………………….

2

3.- Partes de la placa Arduino UNO describiendo sus componentes y función.

………………………

3

4.- ¿Qué es el IDE? …………………………………..

5

5.- ¿Cómo se utiliza Arduino? Procedimiento para su utilización

…………………

7

6.- Partes de un “sketch” Arduino.

…………………

9

7.- Instrucciones de programación del lenguaje Arduino, citando las FUNCIONES, VARIABLES y tipos de ESTRUCTURA que existen.

……………………….

10

8.- Dos ejemplos de prácticas con Arduino UNO explicando el montaje y el código. 9.- Bibliografía

Javier Fernández-Peña Chamorro

………………….

…………………………………..

ARDUINO

16 20

1


Trabajo Arduino 1.- ¿Qué es Arduino? Arduino es una plataforma de creación de electrónica de código abierto, la cual está basada en hardware y software libre, flexible y fácil de utilizar para los creadores y desarrolladores. Esta plataforma permite crear diferentes tipos de microordenadores de una sola placa a los que la comunidad de creadores puede darles diferentes tipos de uso. El proyecto nació en 2003, cuando varios estudiantes del Instituto de Diseño Interactivo de Ivrea, Italia, con el fin de facilitar el acceso y uso de la electrónica y programación. Lo hicieron para que los estudiantes de electrónica tuviesen una alternativa más económica a las populares BASIC Stamp, unas placas que por aquel entonces valían más de cien dólares, y que no todos se podían permitir. El resultado fue Arduino, una placa con todos los elementos necesarios para conectar periféricos a las entradas y salidas de un microcontrolador, y que puede ser programada tanto en Windows como macOS y GNU/Linux. Un proyecto que promueve la filosofía 'learning by doing', que viene a querer decir que la mejor manera de aprender es practicando. Arduino, por tanto, es un dispositivo programable como es un ordenador, un móvil, una tablet … etc, es decir, se puede cambiar el comportamiento o la funcionalidad del dispositivo mediante unas órdenes en un lenguaje concreto que es capaz de ser interpretado por el dispositivo y seguir esas órdenes con el fin de realizar una tarea automática o resolver un problema.

2.- ¿Para qué se utiliza? Una de sus grandes ventajas, es que arduino tiene infinidad de aplicaciones. La enorme flexibilidad y el carácter libre y abierto de Arduino hacen que se pueda utilizar este tipo de placas prácticamente para cualquier cosa. Algunas de ellas son:  

Controlar sistemas a partir de entradas y salidas. Controlar luces, motores, timbres y otros actuadores a partir de sensores como

  

pulsadores, LDR, sensores de distancia, de presión… Construir robots que funcionen de forma automática o por radiocontrol Conectar programas con la realidad mediante sensores En domótica: subir y bajar persianas; control del riego del jardín, lector de huella para apertura de la puerta del garaje, … etc.

Javier Fernández-Peña Chamorro

ARDUINO

2


Con Arduino es posible automatizar cualquier cosa para hacer agentes autónomos (robots), controlar luces y dispositivos, o cualquier otra cosa que se pueda imaginar. .

3.- Partes de la placa Arduino UNO describiendo sus componentes y función.

1. ATmega 328 microcontrolador. El corazón de nuestro Arduino, el procesador. 2. Puerto USB. Se utiliza para la alimentación de la interfaz Uno Genuino, la carga de nuestros programas, y para la comunicación con nuestra placa (a través de serie. PrintIn, etc.). El regulador de tensión ubicado a su lado, convertirá la tensión que le llega a través de este puerto usb y hará que trabaje a 5V.

3.

Conector de alimentación. Esta es la forma de alimentar nuestra placa cuando no está

conectada a un puerto USB para suministrarle corriente eléctrica. Puede aceptar tensiones entre 7-12V.

Javier Fernández-Peña Chamorro

ARDUINO

3


4.

Los pines digitales: Utilizaremos estos pines con instrucciones como digitalRead,

digitalWrite . analogRead y analogWrite funcionarán únicamente en los pines con el símbolo PWM.

5. y 6.

Serial IN (TX) y Serial IN (RX): Los puertos serie están físicamente unidos a

distintos pines de la placa Arduino. Lógicamente, mientras usamos los puertos de serie no podemos usar como entradas o salidas digitales los pines asociados con el puerto de serie en uso. Pines asociados con el puerto de serie como entrada y salida digital (TX es el que Transmite y RX es el que recibe).

7. y 23. Pin 13 + L (on board led): El único actuador incorporado a la placa. Además de ser un objetivo práctico para nuestra primera práctica de encender y apagar LED, este LED es muy útil para la depuración (debugging).

8. GND: proporciona masa, tierra, negativo a nuestros circuitos. 9. AREF: analogReference input V- Tensión a 5V, proporciona diferencia de potencial. Si se le aplica voltaje externo debe ser entre 0 y 5V solamente.

10. Botón Reset. Restablece el microcontrolador ATmega. 11. Chip de comunicación serie. 12. Regulador de tensión. Tenemos que tener en cuenta que para que trabaje a 5V nuestra placa deberá recibir unos 6,5V – 7V, pero todo lo que esté por encima de este valor se desperdiciará (es decir, sobrecalentará nuestra placa de arduino y mayor calor que tendrá que dispar el regulador). En cualquier caso no está recomendado aplicar al regulador más de 12V y a los 20V se dañará.

13.

ICSP: In-Circuit Serial Programming. Es una tecnología incluida en todos los

microcontroladores PIC de Microchip más recientes y posibilita la reprogramación de los mismos sin que sea necesaria la remoción de éstos de su circuito de aplicación. Esta característica es extremadamente útil no solamente en la etapa de desarrollo debido a que ahorra tiempo y trabajo, sino que su utilidad se extiende a la etapa de mantenimiento y actualización de los sistemas, dando la posibilidad de reprogramar los mismos "en el campo" en sus respectivas placas ya soldadas, ya sea para corregir errores de software o para la mejora del sistema con la implementación de nuevas funciones.

14. Led de encendido: Indica que nuestra placa está recibiendo alimentación. 15. Pines analógicos: Utilizaremos estos pines con instrucciones como analogRead (). Javier Fernández-Peña Chamorro

ARDUINO

4


16. Vin: Voltaje Input. Deberá llegarle una tensión regulada y estable (ya que no pasa por el regulador -nº12-) de 5V.

17. GND: proporciona masa, tierra, negativo a nuestros circuitos. 18. 5V: Voltaje Input. 19. 3,3V: Voltaje Input. 20.

Reset pin: Restablece el microcontrolador ATmega. A su izquierda está el conector

IOREF: Digital Reference input V, y a continuación un pin reservado para futuras finalidades.

21. TX y RX LED. Estos LEDs indican la comunicación entre la placa y el ordenador. Estos leds parpadearán rápidamente durante la carga de nuestros programas, así como durante la comunicación serie. Útil para la depuración (debugging).

22. Casa fabricante original. Aquí se puede comprobar fácilmente si la placa se trata de una imitación o el original.

24. Reloj / Crystal 16 Mhz oscilador: se usa como reloj externo en el montaje del Arduino 4.- ¿Qué es el IDE.? IDE (Integrated Developmment Environment) Un IDE es un entorno de programación que ha sido empaquetado como un programa de aplicación; es decir, que consiste en un editor de código, un compilador, un depurador y un constructor de interfaz gráfica (GUI). Además, en el caso de Arduino incorpora las herramientas para cargar el programa ya compilado en la memoria flash del hardware. El entorno de desarrollo integrado de Arduino es una aplicación multiplataforma que está escrita en el lenguaje de programación Java. Se utiliza para escribir y cargar programas en tableros compatibles con Arduino, pero también, con la ayuda de núcleos de terceros, tableros de desarrollo de otros proveedores. El código fuente para el IDE se publica bajo la Licencia Pública General de GNU. El IDE de Arduino admite los idiomas C y C ++ utilizando reglas especiales de estructuración de códigos. Javier Fernández-Peña Chamorro

ARDUINO

5


El IDE de Arduino suministra una biblioteca de software del proyecto Wiring, que proporciona muchos procedimientos comunes de entrada y salida. El código escrito por el usuario solo requiere dos funciones básicas, para iniciar el boceto y el ciclo principal del programa, que se compilan y vinculan con un apéndice de programa main () en un programa ejecutivo ejecutable cíclico con la cadena de herramientas GNU, que también se incluye con la distribución IDE. El IDE de Arduino emplea el programa avrdude para convertir el código ejecutable en un archivo de texto en codificación hexadecimal que se carga en la placa Arduino mediante un programa de carga en el firmware de la placa. El IDE de Arduino está constituido por un editor de texto para escribir el código, un área de mensajes, una consola de texto, una barra de herramientas con botones para las funciones comunes, y una serie de menús. Permite la conexión, por USB, con el hardware de Arduino para cargar los programas y comunicarse con ellos. A la hora de cargar un programa en Arduino, debemos seleccionar siempre el modelo de la placa conectada y el puerto al que está conectado. Arduino utiliza para escribir el código fuente o programa de aplicación lo que denomina "sketch" (programa). Estos programas son escritos en el editor de texto. Existe la posibilidad de cortar/pegar y buscar/remplazar texto. En el área de mensajes se muestra información mientras se cargan los programas y también muestra errores. La consola muestra el texto de salida para el entorno de Arduino incluyendo los mensajes de error completos y otras informaciones. La barra de herramientas permite verificar el proceso de carga, creación, apertura y guardado de programas, y la monitorización. Encontraremos otros comandos en los cinco menús: Archivo, Editar, Programa, Herramientas, Ayuda. Los menús son sensibles al contexto, lo que significa que estarán disponibles sólo los elementos relevantes para la tarea que esté realizando en ese momento.

Javier Fernández-Peña Chamorro

ARDUINO

6


Este IDE lo tendremos que instalar en nuestro PC y en él escribiremos el programa que queramos que el Arduino ejecute. Una vez escrito, lo cargaremos a través del USB y Arduino comenzará a trabajar de forma autónoma.

5.- ¿Cómo se utiliza Arduino? Procedimiento para su utilización. La estructura básica de un programa (o Sketch) en Arduino, basado en una variante del lenguaje de programación C++, es bastante simple y se compone de al menos tres partes. Estas tres partes necesarias, o funciones, encierran bloques que contienen declaraciones, estamentos o instrucciones. 1º ZONA: DECLARACIONES – En esta parte se declaran variables, funciones, objetos, se incluyen librerías (conjuntos de funciones ya programadas) y estructuras GLOBALES. int led1= 13; // antes de la función setup() podemos utilizar esta zona para declarar variables, en este caso declaro que en el pin digital 13 conectaré el un led que lo enumero como led1 int led2= 12; // en este caso declaro que en el pin digital 12 conectaré un led que lo enumero como led2 Hay que tener en cuenta que las declaraciones que hagamos aquí se tendrán en cuenta en todo el programa y no sólo para determinadas instrucciones (de ahí que las denominemos GLOBALES). 2º ZONA: FUNCIÓN SETUP – Esta función se ejecuta cada vez que se enciende la placa de Arduino, o se pulsa la tecla Reset. Realiza funciones de inicialización de periféricos, comunicaciones, variables, etc. void setup() { pinMode(led1, OUTPUT); // aquí realizamos la configuración inicial de variables, en este caso configuro el led1 como una salida digital o OUTPUT, lo que hago en definitiva es informarle a Arduino de que vamos a utilizar el pin 13 para escribir valores.

Javier Fernández-Peña Chamorro

ARDUINO

7


Es importante fijarse en que a pesar de ser una única instrucción, hemos delimitado el bloque de esta función mediante abrir y cerrar llaves { }, si no las escribiéramos la verificación del código daría error. } 3º ZONA: FUNCIÓN LOOP – Instrucciones varias que se ejecutarán continuamente al compilar el programa. void loop() { digitalWrite(led1, HIGH); //el código que se va a repetir de forma indefinida, en este caso encender el led1. } En la primera parte del código nos encontramos con la zona donde podemos declarar e inicializar las variables. Las variables son “símbolos” que usamos en programación y que van a almacenar valores temporales, que pueden ser alterados durante la ejecución del programa. En este ejemplo declaramos las variables led1 y led2, que bien podrían ser utilizadas para declarar las salidas digitales que vamos a utilizar en Arduino para colocar ambos leds, de tal forma que podamos programar su encendido y apagado. Utilizando variables nos evitamos poner el valor de esa salida digital en el código de forma constante, de tal forma que si por alguna razón queremos cambiar esa salida digital y conectar un led que estaba conectado a la salida 13, a la 10, sólo tendríamos que realizar ese cambio en la declaración de la variable, y no en todas las veces que la utilizamos en el código. La función setup() es la parte encargada de recoger la configuración y loop() es la que contiene el programa que se ejecutará cíclicamente (de ahí el término loop – bucle). Ambas funciones son necesarias para que el programa trabaje. La función de configuración setup() debe contener la configuración de las variable anteriormente declaradas. Es la primera función a ejecutar en el programa, se ejecuta sólo una vez, y se utiliza por ejemplo para configurar o inicializar las entradas/salidas digitales con la instrucción pinMode(), comunicación por el puerto serie y otras configuraciones iniciales. Javier Fernández-Peña Chamorro

ARDUINO

8

la


La función loop() contiene el código que se ejecutará 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.. Como se observa en este bloque de código cada instrucción acaba con ; y los comentarios se indican con // al principio de la línea que va a ser “comentada”. Al igual que en el lenguaje de programación C se pueden introducir bloques de comentarios con /* …líneas de código */, de tal forma que podemos escribir un comentario literal informativo de nuestro código en varias líneas empezando y acabando con estos símbolos. Una vez escrito nuestro código, haciendo click en la flecha de Upload lo compilaremos y enviaremos a nuestra placa de Arduino para que lo ejecute.

6.- Partes de un “sketch” Arduino. Un programa de Arduino se denomina sketch o proyecto y tiene la extensión .ino La estructura básica de un sketch de Arduino es bastante simple y se compone de al menos dos partes. Estas dos partes son obligatorios y encierran bloques que contienen declaraciones, estamentos o instrucciones. setup() – http://arduino.cc/en/Reference/Setup loop() – http://arduino.cc/en/Reference/Loop Los componentes principales de un sketch de Arduino son: 

Variables, son un espacio en memoria donde se almacenan datos y estos datos

pueden variar. Funciones, son un trozo de código que puede ser usado/llamado desde cualquier parte del sketch. A la función se le puede llamar directamente o pasarle unos

parámetros, en función de cómo esté definida. setup() y loop(), son dos funciones especiales que es obligatorio declarar en

cualquier sketch. Comentarios, fundamentales para documentar el proyecto

Javier Fernández-Peña Chamorro

ARDUINO

9


7.- Instrucciones de programación del lenguaje Arduino, citando las FUNCIONES, VARIABLES y tipos de ESTRUCTURA que existen. La “inteligencia de Arduino” se expresa mediante su lenguaje de programación. El lenguaje de programación Arduino se puede dividir en tres partes principales: funciones, valores (variables y constantes) y estructura: 

FUNCIONES: Para controlar la placa Arduino y realizar cálculos: Digital I / O (E/S digital): digitalRead () digitalWrite () pinMode () Analog I / O (E/S analógica): analogRead () analogReference () analogWrite () Zero, Due & MKR Family (Familia de fuentes): analogReadResolution () analogWriteResolution () Advanced I/O: noTone () pulseIn () pulseInLong () shiftIn () shiftOut () tone () Time: delay () delayMicroseconds () micros () milis () Math:

Javier Fernández-Peña Chamorro

ARDUINO

10


abs () constrain () map () max () min () pow () sq () sqrt () Trigonometry: cos () sin () tan () Characters: isAlpha () isAlphaNumeric () isAscii () isControl () isDigit () isGraph () isHexadecimalDigit () isLowerCase () isPrintable () isPunct () isSpace () isUpperCase () isWhitespace () Random Numbers (Números al azar): random () randomSeed () Bits and Bytes: bit () bitClear () bitRead () bitSet () Javier Fernández-Peña Chamorro

ARDUINO

11


bitWrite () highByte () lowByte () External Interrups (Interrupciones externas): attachInterrupt () detachInterrupt () Interrupts (Interrupciones): interrumpe () noInterrupts () Comunication (Comunicación): Serial Stream USB Keyboard Mouse 

VARIABLES: Arduino tipos de datos y constantes. Los nombres de variables pueden tener letras, números y el símbolo ’_’. Deben empezar por una letra (pueden empezar por ’_ ’ pero no es recomendable pues es el criterio que usan las rutinas de la biblioteca) La costumbre es que las variables van en minúscula y las constantes en mayúscula

. Constantes: Floatin Point Constants (Constantes de punto flotante) Integer Constants (Constantes enteras ) HIGH | LOW INPUT | OUTPUT | INPUT_PULLUP LED_BUILTIN true | false Conversión: byte () char () float () Javier Fernández-Peña Chamorro

ARDUINO

12


int () long () word () Tipos de datos: String () array bool boolean byte char double float int long short size_t string unsigned char unsigned int unsigned long void word Ámbito variable y calificadores: const scope static volatile Utilidades: PROGMEM sizeof () 

ESTRUCTURA: Los elementos del código Arduino (C ++).

Javier Fernández-Peña Chamorro

ARDUINO

13


Sketch: loop () setup() Estructura de control: break continue do ... while else for goto if return switch ... case while Sintaxis adicional #define (define) #include (include) / * * / (comentario de bloque) // (comentario de una sola línea) ; (punto y coma) {} (llaves) Operadores aritméticos % (resto) * (multiplicación) + (adición) - (resta) / (división) = (operador de asignación) Operadores de comparación ! = (no igual a) < (menos que) <= (menor o igual que) == (igual a) > (mayor que) Javier Fernández-Peña Chamorro

ARDUINO

14


> = (mayor o igual que) Boolean Operators: ! (no lógico) && (lógico y) || (lógico o) Operadores de acceso de puntero & (reference operator) * (dereference operator) Operadores de Bitwise & (bitwise y) << (bitshift izquierda) >> (Bitshift derecha) ^ (bitwise xor) | (bitwise or) ~ (bitwise not) Operadores de compuestos % = (resto compuesto) & = (compuesto bitwise y) * = (multiplicación compuesta) ++ (incremento) + = (adición de compuesto) - (decremento) - = (resta compuesta) / = (división compuesta) ^ = (compuesto bitwise xor) | = (compuesto en modo de bits o)

8.- Dos ejemplos de prácticas con Arduino UNO explicando el montaje y el código. Ejemplo 1: Secuencia de 3 LED Javier Fernández-Peña Chamorro

ARDUINO

15


Realizar un montaje con 3 LED (rojo, verde y amarillo) que realice la siguiente secuencia con un intervalo de tiempo de 0,5 segundos entre cada uno ('1' indica encendido y '0' apagado): 100 (LED rojo encendido y el resto apagado). 010 (LED verde encendido y resto apagado). 001 (LED amarillo encendido y resto apagado).

ESQUEMA:

PROGRAMA: #define pinLED1 8 #define pinLED2 9 #define pinLED3 10

Javier FernĂĄndez-PeĂąa Chamorro

ARDUINO

16


void setup() { pinMode(pinLED1, OUTPUT); pinMode(pinLED2, OUTPUT); pinMode(pinLED3, OUTPUT); } void loop() { digitalWrite(pinLED1, HIGH); // enciende digitalWrite(pinLED2, LOW); // apaga digitalWrite(pinLED3, LOW); // apaga delay(500); digitalWrite(pinLED1, LOW); digitalWrite(pinLED2, HIGH); digitalWrite(pinLED3, LOW); delay(500); digitalWrite(pinLED1, LOW); digitalWrite(pinLED2, LOW); digitalWrite(pinLED3, HIGH); delay(500); }

EJEMPLO 2: Detector de Luz Montaje con Arduino para detectar cambios en el nivel de luminosidad de una habitación.

Javier Fernández-Peña Chamorro

ARDUINO

17


Para ello utiliza un sensor de luz LDR (light-dependent resistor), una resistencia eléctrica y un LED. La idea es que cuando la intensidad luminosa disminuya un cierto umbral, el LED se active. El sensor LDR es un sensor resistivo (fotoresistor), es decir que su resistencia eléctrica varía en función de la luz que recibe. Es un sensor analógico por lo que, para leer sus medidas, tenemos que conectarlo a una entrada analógica de Arduino. Si tapamos o acercamos el sensor a la luz veremos cómo cambian las medidas a través del monitor serie. El valor de la resistencia (R1) marcará la sensibilidad de las medidas y dependerá también del rango de resistencias que nos proporcione el LDR. Puedes empezar un una resistencia de 1KOhmio. ESQUEMA:

Circuito completo:

Javier Fernández-Peña Chamorro

ARDUINO

18


PROGRAMA: // Detector de luz con LDR #define pinLED 12 void setup() { pinMode(pinLED, OUTPUT); Serial.begin(9600); } void loop() { int v = analogRead(A0); // El valor 600 (siguiente línea) se debe de ajustar dependiendo de la luz en el local // y del valor de la resistencia pull-down // poca luz -> v pequeño, mucha luz -> v grande. if (v < 600) digitalWrite(pinLED, HIGH); else digitalWrite(pinLED, LOW); Serial.println(v); }

Javier Fernández-Peña Chamorro

ARDUINO

19


9.- Bibliografía. https://www.xataka.com/basics/que-arduino-como-funciona-que-puedes-hacer-uno https://educarparaelcambio.com/arduino/ https://aprendiendoarduino.wordpress.com/ http://www.practicasconarduino.com/manualrapido/entorno_de_programacin.html https://en.wikipedia.org/wiki/Arduino_IDE https://openwebinars.net/blog/tutorial-arduino-ide-arduino/ https://www.arduino.cc/reference/en/ http://www.practicasconarduino.com/manualrapido/prcticas_rpidas_para_el_aula.html

Javier Fernández-Peña Chamorro

ARDUINO

20


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.