TEMA 2. PROGRAMACIÓN Y ROBÓTICA
TEMA 2. PROGRAMACIÓN Y ROBÓTICA
CONTENIDO
El término "Robótica" fue definido por Isaac Asimov para describir la tecnología de los robots. Él mismo predijo hace años el aumento de una poderosa industria robótica, predicción que ya se esta haciendo o mejor dicho, se ha hecho realidad. Recientemente se ha producido una explosión en el desarrollo y uso industrial de los robots tal que se ha llegado al punto de hablar de "revolución de los robots" y "era de los robots".
Asimov (escritor de ciencia ficción entre otras profesiones) definió las tres leyes de la robótica:
Primera Ley
Un robot no hará daño a un ser humano ni, por inacción (falta de acción), permitirá que un ser humano sufra daño.
Segunda Ley
Un robot debe cumplir las órdenes dadas por los seres humanos, a excepción de aquellas que entren en conflicto con la primera ley.
Tercera Ley
Un robot debe proteger su propia existencia en la medida en que esta protección no entre en conflicto con la primera o con la segunda ley.
Asimov también agregó una cuarta, o ley cero, para preceder a las demás:
Ley Cero
Un robot no puede dañar a la humanidad o, por inacción, permitir que la humanidad sufra daños.
Las Tres Leyes y la Ley Cero han impregnado la ciencia ficción y se mencionan en muchos libros, películas y otros medios. También han impactado el pensamiento sobre la ética de la inteligencia artificial. La ética en la inteligencia artificial es una rama de la ética dirigida a la existencia de robots inteligentes o cualquier otro ente que posea inteligencia artificial. La posibilidad de crear máquinas pensantes plantea una serie de cuestiones éticas que abarcan diferentes puntos, tanto que las máquinas no lastimen a seres humanos o seres vivos en general, como el estatus moral propio de la máquina.
El término robótica puede ser definido desde distintos puntos de vista pero si lo relacionamos únicamente con los robores una definición resumida podría ser:
"La Robótica describe todas las tecnologías asociadas con los robots"
y una definición algo más detallada sería:
"La Robótica es la rama de la ingeniería mecánica, de la ingeniería electrónica y de las ciencias de la computación, que se ocupa del diseño, construcción, operación, estructura y aplicación de los robots, es decir, la robótica combina diversas disciplinas como la mecánica, la electrónica, la informática, la inteligencia artificial, la ingeniería de control y la física."
Sin duda la Robótica es una profesión con un futuro apasionante y garantizado.
La palabra robot fue usada por primera vez en el año 1921, cuando el escritor checo Karel Capek estrena en el teatro nacional de Praga su obra Rossum's Universal Robot (R.U.R.). Su origen es de la palabra eslava robota, que se refiere al trabajo realizado de manera forzada. La trama era sencilla: el hombre fabrica un robot, luego el robot mata al hombre. Muchas películas han seguido mostrando a los robots como máquinas dañinas y amenazadoras. Sin embargo, películas más recientes, como la saga de "La Guerra de las Galaxias" desde 1977, retratan a robots como "C3PO" y "R2D2" como ayudantes del hombre. "Número 5" de "Cortocircuito" y "C3PO" realmente tienen apariencia humana. Estos robots que se fabrican con apariencia humana se llaman ‘androides’.
C3PO
R2D2
Dar una única definición de Robot es complicado. Las definiciones son tan dispares como se demuestra en la siguiente relación:
• Ingenio mecánico controlado electrónicamente, capaz de moverse y ejecutar de forma automática acciones diversas, siguiendo un programa establecido.
• Máquina que en apariencia o comportamiento imita a las personas o a sus acciones como, por ejemplo, en el movimiento de sus extremidades.
• Un robot es una máquina que hace algo automáticamente en respuesta a su entorno.
• Un robot es un puñado de motores controlados por un programa de ordenador.
• Un robot es un ordenador con músculos.
Es cierto, como acabamos de observar, que los robots son difíciles de definir. Sin embargo, no es necesariamente un problema el que no esté todo el mundo de acuerdo sobre su definición. Quizás, Joseph Engelberg (padre de la robótica industrial) lo resumió inmejorablemente cuando dijo: "Puede que no se capaz de definirlo, pero sé cuándo veo uno".
En esta actividad vamos a crear el esqueleto de nuestro cuaderno de clase. Lo haremos mediante un documento Google Doc cuyo nombre deberá ser:
Cuaderno de Clase - Nombre y Apellidos del Alumn@.
A continuación indicamos los elementos que debe contener nuestro cuaderno:
Portada.
Índice.
Encabezado de Página.
Pie de Página.
Una vez creado el cuaderno, añade la Actividad 1 como un título y realiza la tarea definida en los 3 apartados que se detallan a continuación:
Enuncia las 3 leyes de la robótica de Isaac Asimov.
Busca un robot actual, describe sus propiedades con tus palabras.
Define Robot con tus palabras.
Hoy en día cada vez tenemos más cerca de nosotros a los Robots y los hay de distintos tipos. Por ejemplo:
Androides
Una visión ampliamente compartida es que todos los robots son "androides". Los androides son artilugios que se parecen y actúan como seres humanos. Los robots de hoy en día vienen en todas las formas y tamaños, pero a excepción de los robots que aparecen en las ferias y espectáculos, no se parecen a las personas y por lo tanto no son androides.
ANDROIDE
NO ANDROIDE
Móviles
Los robots móviles están compuestos de elementos de desplazamiento (patas o ruedas) que los capacitan para desplazarse de acuerdo a su programación. Están formados por sistemas que son capaces de recibir la información de su entorno gracias a los sensores y se emplean en determinados tipos de instalaciones industriales, sobre todo para el transporte de mercancía en cadenas de producción y almacenes.
Industriales
Los robots industriales son tambien mecánicos y electrónicos y suelen estar destinados a realizar de forma automática determinados procesos de fabricación o manipulación. Por ejemplo:
Médicos
Los robots médicos están orientados fundamentalmente a ayudar al personal sanitario en las tareas más complejas que se requieren en operaciones bastante delicadas o incluso en la realización de determinadas pruebas médicas. Por ejemplo:
Analizaremos el impacto de la Robótica en la sociedad desde dos puntos de vista: Impacto en la Educación e Impacto Laboral:
Impacto en la Educación
El auge de la Robótica y la necesidad de su implantación en numerosas instalaciones industriales, requiere la necesidad de un buen número de especialistas en la materia. La Robótica es una tecnología multidisciplinar ya que hace uso de los conocimientos de distintas ciencias. Destacamos las siguientes:
Mecánica
Matemáticas
Electrónica
Informática
Por lo tanto, la Robótica es una combinación de todas las disciplinas expuestas, por lo que su estudio en detalle esta especialmente indicado en las carreras de Ingeniería Superior y Técnica así como en los centros de formación profesional (en este último caso enfocado mucho más a la práctica, el "saber hacer").
Impacto Laboral
El mantenimiento de las distintas empresas y el consiguiente aumento de su productividad, mueve el interés de empresarios y trabajadores en aceptar, por una parte la inversión económica y por otra parte la reducción de puestos de trabajo para incorporar nuevas tecnologías basadas en robots y computadores.
Las ventajas de los modernos elementos productivos, como la liberación del hombre de trabajos peligrosos, desagradables o monótonos y el aumento de la productividad, calidad y competitividad, a menudo, queda eclipsado por el aspecto negativo que supone el desplazamiento de mano de obra, sobre todo en tiempos de crisis. Este temor resulta infundado si se analiza con detalle el verdadero efecto de la robotización.
Inconvenientes
Podrían ser hackeados por algún ciberdelincuentes para fines no deseados que puedan afectar a los seres humanos.
Una fallo en su funcionamiento puede causar daños irreversibles (Ejemplo: Fallos durante una operación de una persona)
Reemplazan la mano de obra humana.
Alto coste, es decir, actualmente son muy caros.
Ventajas
Pueden llegar donde el humano no puede.
Aceptan tareas peligrosas.
Mejoran la calidad de vida.
Capacidad de trabajar las 24 horas del día durante todo el año (No tienen vacaciones¡¡¡).
Buenos niveles de producción (no se cansan, no paran a desayunar,etc..) y calidad (no se suelen equivocar).
Podemos distinguir las siguientes partes en un Robot:
Estructura o Esqueleto: Representa la parte física o material del robot.
Sensores: Se encargan de recoger la información de su entorno para enviársela a la Unidad de Control del robot.
Unidad de Control: Podemos decir que es el "cerebro" del robot ya que en base a la información que recibe de los sensores, se encarga de tomar decisiones generando las correspondientes salidas. Podemos decir que la Unidad de control esta formada por una placa electrónica llamada "Controlador o MicroControlador" que contiene un programa software que esta en ejecución en todo momento.
Actuadores: Los actuadores se encargan de realizar una determinada acción una vez que la Unidad de Control ha analizado la información recibida por los sensores.
En el siguiente diagrama podemos ver un resumen de las distintas partes que hemos comentado:
Otra agrupación de las distintas partes de un robot, algo más resumida, sería la siguiente:
Hardware: Se trata del conjunto de componentes que forman la parte material de un robot (estructura, sensores, controlador, actuadores).
Software: Se trata del conjunto de programas que controlan el robot y que se encuentran almacenados en la placa controladora o controlador.
En tu cuaderno digital explica con tus palabras el funcionamiento de un robot. Además, incluye en el documento dos ventajas y dos inconvenientes de los robots que no estén incluidas en nuestro material de clase. Para las ventajas e inconvenientes quizás necesites investigar en Internet.
Cuando termines entrega tu tarea en Classroom.
Un microcontrolador es un circuito integrado programable capaz de ejecutar las órdenes grabadas en su memoria. Está formado por varios bloques que cumplen una tarea especifica. Un microcontrolador incluye en su interior las tres principales unidades funcionales de un ordenador:
Unidad Central de Procesamiento (CPU): Su trabajo es interpretar las instrucciones de un programa informático y garantizar que todas ellas se ejecutan.
Memoria: Se trata de la memoria de trabajo de un sistema informático.
Periféricos de Entrada/Salida: Se trata de dispositivos que permiten la entrada o salida de información desde el ordenador al exterior y viceversa.
Arduino es una plataforma de código abierto de prototipos electrónicos que se base en hardware y software. Son fáciles de usar y gracias a esto es posible que cualquier persona sea capaz de construir circuitos electrónicos y robots.
Arduino es considerado una de las bases sobre las que empezar a trabajar en temas relacionados con robótica, ya que, por su simplicidad, permite adquirir conocimientos básicos para dar el paso posteriormente a tecnologías más complejas y completas. En la actualidad existen multitud de placas Arduino.
Nosotros durante este trimestre vamos a trabajar con la Placa Arduino Uno R3.
Pines Digitales
Los pines digitales son las conexiones digitales de los dispositivos conectados a la placa. La placa de Arduino cuenta con 14 pines digitales que van del pin 0 al pin 13.
Debemos saber que una señal digital solo puede tener dos estados (o valores):
0 (LOW, bajo, false): Indica cero voltios de tensión enviados desde la placa.
1 (HIGH, alto, true): Indica cinco voltios de tensión enviados desde la placa.
Por lo tanto, cuando ponemos un pin digital a valor HIGH, la placa suministra 5V de tensión por la salida que hayamos indicado, y si ponemos el valor LOW la placa suministrará 0V de tensión. Eso si, debemos tener en cuenta que los 5V no siempre son 5 ni los 0 siempre son 0).
Los pines digitales de Arduino pueden ser utilizados tanto de entrada como de salida.
Pines Analógicos
Los pines analógicos pueden medir un rango de valores de voltaje, a diferencia de los digitales que solo entienden dos valores: 0-1, o lo que es lo mismo, 0V o 5V.
Por lo tanto, con los pines analógicos vamos a poder leer valores intermedios entre 0V y 5V, representados con un valor comprendido entre 0 y 1023 (ya que la información se representa en números de 10 bits), y tambien vamos a poder escribir en los pines valores comprendidos entre 0 y 255, ya que la información se representa en números de 8 bits.
Nota: En el punto anterior hemos hablado sobre pines digitales, si te fijas en ellos en la placa, verás que aparecen algunos con un símbolo encima del número, ese símbolo significa que pueden ser utilizados tambien como pines analógicos.
Pines para Alimentación de Sensores
Además de los pines de entrada y salida que hemos comentado anteriormente, Arduino dispone de pines que nos permiten alimentar componentes externos, concretamente uno con 5V y otro con 3,3 V. Además de los pines de tierra (GND).
Microcontrolador de Comunicaciones
El microcontrolador de Comunicaciones se encarga de gestionar las comunicaciones con todos los elementos que se conectan a la placa.
Microcontrolador de Programación
Este componente de la placa es el cerebro de la misma, es donde la placa almacena el programa que tiene que ejecutar. El microcontrolador de la placa se programa utilizando el IDE (Entorno de Desarrollo Integrado) de programación.
Botón Reset
El botón reset permite reiniciar el programa que se ha cargado en el microcontrolador interrumpiendo la ejecución actual.
Puerto USB
El puerto USB es el puerto mediante el cual nos comunicaremos con la placa de Arduino. Sus funciones principales son:
Alimentación.
Cargar los programas en el microcontrolador.
Envío de información desde la placa al ordenador.
Conector de Alimentación
Además, la placa dispone de un puerto de alimentación externo que nos permitirá hacer funcionar la placa sin utilizar un ordenador. Debemos tener en cuenta que NO podemos alimentar la placa con más voltaje del que soporta, ya que podríamos dañarla. Lo recomendado es alimentarla entre 7V y 12V.
Tinkercad es una aplicación o programa en línea que engloba diversas herramientas de diseño. Con Tinkercad puedes realizar:
Diseño en 3D.
Crear y simular circuitos electrónicos.
Programación.
Arduino. Permite la programación online de las placas Arduino en un simulador.
En este apartado explicaremos aquellos componentes que utilizaremos durante las actividades de este trimestre.
Para acceder a la herramienta debemos dirigirnos al siguiente enlace: https://www.tinkercad.com/, seguidamente pulsamos en el botón 'Únete Ya Mismo' tal y como vemos en la siguiente imagen.
A continuación seleccionamos la opción 'Crear una cuenta personal' tal y como vemos en la siguiente imagen.
En la siguiente pantalla seleccionamos la opción 'Iniciar sesión con Google'.
A continuación nos aparecerá la lista de cuentas de Google para que seleccionemos la nuestra. Posteriormente el sistema nos mostrará la siguiente pantalla donde debemos hacer click en el botón 'Continuar' para aceptar las condiciones de uso.
Seguidamente el sistema ya nos da acceso al menú principal de Tinkercad. Nosotros trabajaremos durante este trimestre con la opción 'Circuitos' tal y como vemos en la siguiente imagen.
Con este paso hemos finalizado el proceso de alta de usuario en la herramienta Tinkercad.
Una vez que ya tenemos nuestro usuario en TinKercad, la próxima vez que queramos acceder tenemos que utilizar la opción de 'Iniciar Sesión' accediendo a la página principal de Tinkercad.
A continuación, la herramienta nos pregunta como queremos iniciar sesión y debemos utilizar siempre la opción 'Iniciar Sesión con Google' tal y como vemos en la siguiente imagen.
Y de esta forma ya debemos estar en el menú principal de la herramienta Tinkercad donde debemos seleccionar el menú de Circuitos que será con el que trabajemos a lo largo de este trimestre.
En este apartado vamos a explicar el conjunto de componentes que necesitaremos utilizar en todas las actividades.
Placa Arduino
La placa Arduino la hemos explicado anteriormente. En cada una de las actividades se irán definiendo las conexiones en función del montaje que estemos llevando a cabo.
Protoboard
La placa protoboard es una base de material aislante (plástico) con pequeños orificios para la inserción de los componentes electrónicos, de forma que estén unidos eléctricamente entre ellos, ya que en su interior estos orificios están conectados entre sí gracias a unas líneas de material conductor.
Usar la placa protoboard es fácil, solo debemos tener en cuenta que hay líneas que funcionan como si todos los componentes estuvieran conectados en el mismo punto:
Las dos líneas que se encuentran entre la línea pintada en azul y la línea roja actúan como si fuesen el mismo punto de conexión, es decir, cualquier componente que pinchemos en cualquiera de los orificios señalados sería como si estuviera conectado directamente a otro componente que estuviese pinchado en otro de los puntos de la misma base.
Estas líneas azul y roja nos sirven para conectar en uno de sus extremos un cable con carga negativa y positiva respectivamente. De esta forma, el resto de orificios estarán tambien alimentados con carga negativa y positiva.
Concretamente nos referimos a las dos líneas señaladas en la siguiente imagen.
Por otro lado, debemos saber tambien que los orificios de la parte central de la placa están conectados eléctricamente de forma diferente a las líneas exteriores. En la imagen siguiente podemos ver los orificios a los que nos referimos iluminados en amarillo.
Y cuidado, para conectar una mitad de la placa con la otra mitad, tendremos que hacer un "puente" de forma que conectemos cada una de las partes mediante un cable tal y como vemos en la siguiente imagen.
Cable USB
Lo utilizaremos para pasar el programa desde el ordenador a la placa y para alimentar de corriente la placa.
Cables
Usaremos cables macho-macho o macho-hembra en función de lo que necesitemos durante las actividades planteadas.
Macho-Macho
Macho-Hembra
Resistencias
Las resistencias son unos dispositivos que se oponen al paso de la corriente eléctrica cuando pasa a través de ellas, por lo tanto, antes de una resistencia y después de ella habrá una diferencia de carga eléctrica, siempre menor en la salida que en la entrada.
De esta manera podemos proteger a otros dispositivos de ser atravesados por una corriente eléctrica mayor de la que pueden soportar y por lo tanto sufrir lo que se llama una sobrecarga.
Para saber qué resistencia será necesaria para proteger un determinado dispositivo necesitaremos conocer la intensidad máxima que puede soportar dicho dispositivo (I) y la tensión a la que va estar sometido (V). Conociendo dichos valores podemos calcular el valor de la resistencia (R) que debemos utilizar para proteger a nuestro dispositivo. Para calcularlo utilizamos la conocida LEY DE OHM (V=IxR):
R = V / I
Donde la resistencia (R) se mide en ohmios; la tensión (V) se mide en voltios; y la corriente o intensidad eléctrica (I) se mide en amperios.
Nota: Algo que debemos tener en cuenta es que NO existen resistencias comerciales para todos los valores óhmicos, por lo que tendremos que calcular y elegir la resistencia que más se aproxime al valor ideal de la actividad que estemos realizando.
Las resistencias trabajan con un código de colores para poder identificarlas de forma fácil. Según su combinación de colores ofrecerán más o menos resistencia al paso de la corriente. En la siguiente imagen vemos la tabla de colores de las resistencias:
Código de colores para resistencias de 4 bandas
Código de colores para resistencias de 5 bandas
Para poder programar hay que ser capaz de ordenar nuestras ideas y organizarlas de forma clara y eficiente. Para hacer esto existen formas de representar el orden en que se debe ejecutar la secuencia de instrucciones o pasos a seguir. Esto es lo que se conoce como algoritmo y se puede utilizar para muchas cosas además de para programar. Una receta de cocina o un manual de instrucciones para montar un mueble, también se pueden considerar algoritmos.
En este apartado vas a aprender a representar algoritmos para programar y convertirlos en código.
Un programa es una secuencia de instrucciones escritas mediante un lenguaje de programación, que permiten desarrollar y resolver un problema para el que han sido creados.
La programación estructurada es un paradigma de programación, es decir, una forma de programar orientada a mejorar la claridad, calidad y tiempo de desarrollo de un programa de computadora recurriendo únicamente a subrutinas y tres estructuras básicas.
Esta forma de programar se basa en un famoso teorema, desarrollado por Edsger Dikjstra, que demuestra que todo programa puede escribirse utilizando únicamente las tres estructuras básicas de control:
Secuencia: el bloque secuencial de instrucciones, ejecutadas sucesivamente, una detrás de otra.
Selección o condición (si, si no): permiten ejecutar un conjunto de instrucciones u otras en función de si se cumple o no una condición.
Se utilizan los comandos: if e if…else, switch
Iteración o repetición (mientras, repetir, para): permite repetir una instrucción o grupo de ellas un número fijo de veces o mientras (o hasta que) una condición sea cierta.
Se utilizan los comandos while, for ...
El programa creado mediante lenguaje de programación (serie de instrucciones) se llama código. Pero cuando escribimos el algoritmo en nuestra lengua o lenguaje habitual, el programa creado se llama pseudocódigo.
PSeInt es una herramienta incluida en EducaAndOS para ayudar al estudiante en sus primeros pasos en programación. Mediante un simple e intuitivo pseudolenguaje en español (complementado con un editor de diagramas de flujo), permite centrar la atención en los conceptos fundamentales de la programación, minimizando las dificultades propias de un lenguaje y proporcionando un entorno de trabajo con numerosas ayudas y recursos didácticos.
Las instrucciones del programa también se pueden representar gráficamente mediante esquemas o dibujos, llamados diagramas de flujo.
Para realizar un diagrama de flujo o flujograma, se suelen seguir unas normas generales y la utilización de símbolos determinados.
En el siguiente ejemplo puedes ver el diagrama de flujo y el pseudocódigo de un algoritmo que permite leer 2 números diferentes y nos dice cuál es el mayor de los 2 números.
1. Declaración de variables:
• A
• B
2. Inicio
▪ Introducir dos datos A, B
▪ Leer los dos valores
▪ Condición: Si A = B
▪ Si: entonces escribir “A” es igual a “B”
▪ Si NO:
▪ Si A > B: escribir “A es el mayor”
▪ Si No escribir “B es el mayor”
3. Fin
Si necesitas más ayuda accede a la guía "Creo un diagrama" donde podrás aprender mucho más sobre el tema.
PSeInt es una herramienta para asistir a un estudiante en sus primeros pasos en programación. Mediante un simple e intuitivo pseudolenguaje en español (complementado con un editor de diagramas de flujo), le permite centrar su atención en los conceptos fundamentales de la algoritmia computacional, minimizando las dificultades propias de un lenguaje y proporcionando un entorno de trabajo con numerosas ayudas y recursos didácticos.
A continuación se muestra un algoritmo que suma 2 números realizado con PSeInt . Se muestra el diagrama de flujo con su correspondiente pseudocódigo.
Instrucciones
Instala y abre el programa PSeINT en tu ordenador.
Copia el diagrama de flujo que suma dos números.
A continuación intenta modificar el programa para que realice las tareas que se muestran a continuación.
Recuerda que todos estos enunciados deben de partir del ejemplo original.
3.1 Suma de 3 números: modifica el programa para que sume 3 números.
3.2 Comprueba si la suma de los números es mayor que 100: modifica el programa para que ...
Si es mayor o igual que 100 el programa debe de decir "Enhorabuena, has alcanzado 100 puntos".
Si es menos que 100 el programa debe decir "Lo siento, no has alcanzado 100 puntos".
3.3 Suma de dos números, no se permite el valor 0: modifica el programa para que ...
Si alguno de los dos números introducidos tiene valor 0, vuelve a pedir de nuevo los números hasta que los dos sean mayores que 0.
AMPLIACIÓN VOLUNTARIA
Realiza un diagrama de flujo en el que se mezclen las 3 ampliaciones propuestas en los puntos 3.1, 3.2 y 3.3.
El código que cargamos en nuestra placa, generalmente lo llamamos sketch. A grandes rasgos podemos encontrar 3 bloques bien diferenciados.
En la cabecera encontramos la importación y declaración de variables y constantes.
En la función setup sirve para dar valores iniciales a las variables y establecer los modos de los pines (entrada o salida).
La función loop es el bucle que se ejecuta infinitamente y donde reside el grueso de nuestro código, la funcionalidad del sketch
A continuación aparece una lista de tipos de datos comúnmente utilizados en Arduino:
boolean (8 bit)- lógico simple verdadero/falso.
byte (8 bit)- número sin signo entre 0 y 255.
char (8 bit)- número con signo, entre -128 y 127. En algunos casos el compilador intentará interpretar este tipo de dato como un carácter, lo que puede generar resultados inesperados.
unsignedchar (8 bit)- lo mismo que ‘byte’; si es que eso es lo que necesitas, deberías usar ‘byte’, para que el código sea más claro.
word (16 bit)- número sin signo entre, 0 y 65535.
unsignedint (16 bit)- lo mismo que ‘word’. Utiliza ‘word’ por simplicidad y brevedad.
int (16 bit)- número con signo, entre -32768 y 32767. Este tipo es el más usado para variables de propósito general en Arduino, en los códigos de ejemplo que vienen con el IDE.
unsignedlong (32 bit)- número sin signo entre 0 y 4294967295. Este tipo se usa comúnmente para almacenar el resultado de la función millis(), la cual retorna el tiempo que el código actual ha estado corriendo, en milisegundos.
long (32 bit)- número con signo, entre -2,147,483,648 y 2,147,483,647.
float (32 bit)- número con signo, entre 3.4028235E38 y 3.4028235E38. El Punto Flotante no es un tipo nativo en Arduino; el compilador debe realizar varios saltos para poder hacerlo funcionar. Evítalo siempre que te sea posible. Hablaremos de eso más tarde; En una fecha próxima se publicará un tutorial más riguroso en el uso genérico de la matemática de punto decimal en Arduino.
En la mayoría de las prácticas que realizaremos utilizaremos int, float y boolean.
A continuación se muestra un ejemplo de cómo sería un sketch para hacer parpadear un led conectado al pin número 13:
Comentarios
Lo primero que encontramos en el skecth son comentarios. Tenemos de dos tipos: los que comienzan por // que comentan una línea y los que empiezan por /* y terminan */ que son multilínea, comentan todo lo que esté entre estas marcas. Los comentarios son muy importantes ya que nos facilitan la lectura del código, nos explica lo que el programador se propone hacer o nos marcan una región del programa.
Palabras clave
En programación, una palabra clave es una palabra que está reservada porque la palabra tiene un significado especial. Las palabras clave pueden ser comandos o parámetros. Cada lenguaje de programación tiene un conjunto de palabras clave que no pueden utilizarse como nombres de variables.
Librerías
Tras los comentarios iniciales encontramos como incluir una librería con la siguiente sintaxis:
Como puedes ver, tenemos que poner la palabra clave include tras el símbolo # y el nombre de la librería siempre entre < >. Las librerías son archivos que añaden funcionalidad a nuestros programas. Pueden ser de terceros o puedes crearte tus propias librerías donde por ejemplo tengas funciones más comunes en tus programas . En este caso es una librería propia que no existe en el IDE y que por lo tanto si compilas te dará un error.
Constantes y variables
Justo a continuación de las librerías, definiremos las constantes y/o variables globales que vayamos a utilizar:
En este ejemplo hemos creado una constante numérica llamada ledPin la cual va a tener siempre el valor 13 durante toda la ejecución del programa y va a ser accesible a cualquier función que exista en nuestro sketch. Tras esta tenemos la variable global numero, también numérica y con valor inicial 5. Esta variable también es accesible por cualquier función de nuestro programa, (aquí es donde se diferencia con las variables locales que son solo accesibles en la función que se definan), pero su valor lo puede modificar cualquier función del sketch, al contrario que las constantes.
Es muy importante tener en cuenta el ámbito de las variables. Una variable definida dentro de una función, solo puede utilizarse en dicha función
void setup()
La palabra reservada void delante del nombre de una función, nos indica que la función no devuelve nada y el nombre de la función setup también nos da una ligera idea para que sirve esta función. En esta función inicializamos todos los componentes que vayamos a utilizar. Al igual que el resto de líneas comentadas anteriormente, esta función tan solo se ejecuta una vez al encender nuestra placa, o tras la reprogramación o tras pulsar el botón reset.
En este caso, estamos diciéndole a nuestra placa de Arduino que el pin 13 (a través de la constante ledPin) esté en modo salida mediante el método pinMode().
void loop()
Se trata del programa principal. Es un bucle que se ejecuta una y otra vez hasta que desconectamos la alimentación a nuestra placa. Aquí estará el alma de nuestro programa. Las primeras líneas las reservaremos para definir las variables locales que vamos a utilizar (solo accesibles en esta función) y tras ellas implementaremos la lógica del sketch.
En el caso que tenemos encendemos y apagamos el LED mediante el método digitalWrite() y con el método delay() hacemos una pausa de dos segundos (2 seg son 2000ms).
Otras funciones definidas por el programador
En este skecth de ejemplo he añadido una función para que veáis cómo funciona la llamadas a otras funciones, se llama OtraFuncion(). Como ves esta función si que nos devuelve un valor, que asignamos a la variable local dy y le pasamos al método delay(dy) para hacer la segunda espera antes de volver a repetirse la función de bucle.
Las funciones que definamos en nuestro sketch no tienen obligatoriamente que devolvernos algo, pueden ser como las funciones principales de tipo void. Este tipo de funciones las podemos utilizar para realizar particularidades de nuestro programa y así tener un código más limpio y estructurado que siempre será más fácil a la hora de depurar errores. Da igual si la declaras antes o después de las funciones setup y loop, o incluso en medio. Al ser un lenguaje compilado no afecta la situación donde la pongas y va a funcionar exactamente igual, aunque si por mero hecho de estructura limpia hay que ser ordenado.
En este caso nos devuelve un número y por eso en la definición de la función lo marcamos con la palabra reservada int. En esta función tenemos una variable local llamada aux que mediante el método random le asignamos un valor aleatorio entre 1000 y 2000. Tras obtenerlo devolvemos el resultado mediante la palabra reservada return. Así en nuestro programa principal hará una espera de entre 1 segundo y 2 segundo
Durante todas las actividades del segundo trimestre vamos a ir elaborando nuestro cuaderno de clase donde tendremos que ir registrando y documentando todas las actividades que realizaremos durante este trimestre.
Materiales
Led Rojo
Resistencia de 330 Ohmios.
Kit Arduino
Descripción de Nuevos Materiales
LED
LED (Light Emitting Diode o diodo emisor de luz), se trata de un dispositivo que emite luz cuando se encuentra en polarización directa, es decir, necesita estar conectado de una forma determinada: La pata larga (ánodo) conectada a un polo positivo y la pata corta (cátodo) a un polo negativo.
Si se conecta al revés, la corriente NO pasará y por tanto no emitirá luz. Esto es algo muy importante que debemos tener en cuenta a la hora de realizar los montajes en nuestras actividades.
Los LED se utilizan mucho para realizar montaje eléctricos, ya que presentan dos ventajas importantes con respecto a otro tipo de dispositivo:
Consumen muy poco energía ya que casi toda la energía que consume un LED (más de un 80%) se utiliza en dar luz y no calor.
Tienen una vida útil muy larga: más de 100.000 horas de luz.
Un LED puede conectarse tanto a un pin digital como a un pin analógico.
Ejemplo Cálculo de Resistencia: LEY DE OHM
Antes de seguir con la actividad vamos a ver un ejemplo sobre cómo calcular el valor de una resistencia para proteger un LED.
Tenemos que tener en cuenta dos cuestiones:
La primera es que un LED estándar soporta una intensidad de hasta 20mA, y para asegurarnos dejaremos un margen para no correr riesgo de que el LED se funda (17 mA).
La segunda es que el voltaje con el que vamos a trabajar es de unos 5V. Con ello, vamos a calcular el valor de la resistencia que tendríamos que montar en serie para que el LED no sufra una sobrecarga.
Con los datos que tenemos, aplicamos entonces la LEY DE OHM:
V=IxR
5V=17mA x R
R=5 / 0,017
R=294 Ohmios.
Puesto que NO vamos a encontrar una resistencia con este valor exacto, tendremos que elegir otra con un valor aproximado siempre por encima, para asegurarnos la protección del dispositivo. En este caso necesitaremos entonces una resistencia de 330 Ohmios.
Simulación
Debemos montar nuestro circuito en el simulador de Tinkercad tal y como podemos ver en la siguiente imagen:
Montaje Físico
A continuación debemos montar el circuito fisicamente en nuestro Arduino Uno R3, tal y como podemos ver en la siguiente imagen.
Materiales
Led Rojo
Resistencia de 330 Ohmios.
Kit Arduino
Simulación
Debemos montar nuestro circuito en el simulador de Tinkercad tal y como podemos ver en la siguiente imagen:
Montaje Físico
A continuación debemos montar el circuito físicamente en nuestro Arduino Uno R3. El resultado deberá ser parecido al del siguiente vídeo. Haz click aquí.
Cuaderno de Clase
Por último tenemos que actualizar nuestro cuaderno de clase de la siguiente forma:
En una página en blanco ponemos el título de la nueva actividad "Actividad 5: Encendido intermitente de un Led"
Imagen de la Simulación con Tinkercad.
Imagen del código utilizado para programar la placa Arduino.
En esta actividad debemos configurar los leds para que actúen como si fuesen un semáforo.
Materiales
Led Rojo
Led Amarillo
Led Verde
3 Resistencia de 330 Ohmios.
Kit Arduino
Simulación
Debemos montar nuestro circuito en el simulador de Tinkercad tal y como podemos ver en la siguiente imagen:
Montaje Físico
A continuación debemos montar el circuito físicamente en nuestro Arduino Uno R3. El resultado debe ser similar al que podemos ver en el siguiente vídeo. Haz click aquí.
Cuaderno de Clase
Por último tenemos que actualizar nuestro cuaderno de clase de la siguiente forma:
En una página en blanco ponemos el título de la nueva actividad "Actividad 6: Encendido y apagado intermitente de varios Led"
Imagen de la Simulación con Tinkercad.
Imagen del código utilizado para programar la placa Arduino.
El objetivo es imitar las luces del coche fantástico con 4 leds. Para ello debemos:
Encender el primer led durante 1 segundo.
Apagar el primer led y esperar 0.1 segundos antes de encender el segundo led.
Repetir la misma operación con el 3er y 4º led.
Una vez lleguemos al final, hacer el recorrido a la inversa.
Materiales
4 diodos LED.
4 resistencias de 220 ohmios.
Kit Arduino
Simulación
Debemos montar nuestro circuito en el simulador de Tinkercad tal y como podemos ver en la siguiente imagen. Atención, esta imagen no es de tinkercad por lo que el circuito se vera ligeramente distinto.
Montaje Físico
A continuación debemos montar el circuito físicamente en nuestro Arduino Uno R3. El resultado debe ser similar al que podemos ver en la siguiente imagen
Cuaderno de Clase
Por último tenemos que actualizar nuestro cuaderno de clase de la siguiente forma:
En una página en blanco ponemos el título de la nueva actividad "Actividad 7: Luces del coche fantástico"
Imagen de la Simulación con Tinkercad.
Imagen del código utilizado para programar la placa Arduino.
Sintaxis de la sentencia if con Arduino
La sintaxis de la sentencia if con Arduino es muy sencilla. Comenzamos escribiendo la palabra reservada if (en español se traduce como si condicional). Luego entre paréntesis ponemos la condición y por último abrimos y cerramos las llaves.
La condición es la que hará que se ejecute el código que hay entre las llaves. Si es verdadera, el flujo del código de Arduino entrará dentro de las llaves y ejecutará todo lo que hay dentro. Pero claro ¿qué es una condición?
Imagínate que le dices a tu hijo, «si apruebas todas las asignaturas te regalo una bicicleta». Eso sería una condición. Dentro de los paréntesis irá la condición o sentencia condicional. Es algo que puede ser evaluado como verdadero o falso (en inglés es true o false).
Si tu hijo aprueba todas las asignaturas es verdadero (true) y por lo tanto tiene una bicicleta. Si tu hijo no aprueba todas las asignaturas es falso (false) y por lo tanto se queda sin bicicleta.
Estas condiciones se llaman booleanas debido al gran matemático inglés George Boole creador de la lógica booleana. Con esta lógica sólo hay dos estados posibles 0 o 1 que equivalen a falso (false) y verdadero (true).
Vale, tenemos claro que una sentencia if con Arduino nos permite ejecutar un código dependiendo de una condición. Ahora vamos a ver cómo podemos hacer condicionales con los operadores de comparación.
Con la sentencia if con Arduino se pueden utilizar 6 operadores de comparación:
> Mayor que
< Menor que
>= Mayor o igual que
<= Menor o igual que
== Igual a
!= Diferente a
Existen 3 operadores booleanos
|| or (0)
&& and (y)
! not (no)
El comportamiento de los operadores lógicos se muestra en la siguiente tabla donde V significa verdadero y F significa falso.
Algunos ejemplos de estructuras condicionales:
Ejemplo if else:
Ejemplo if, else if, else:
pinMode(n_pin,OUTPUT); -> Define el pin de Arduino seleccionado como un pin digital de salida.
pinMode(n_pin,INPUT); -> Define el pin de Arduino seleccionado como un pin digital de entrada.
digitalWrite(n_pin,HIGH); -> Configura el pin de Arduino para que emita 5V.
digitalWrite(n_pin,LOW); -> Configura el pin de Arduino para que emita 0V.
digitalRead(n_pin); -> Lee el voltaje que se está recibiendo en el pin digital configurado como entrada.
delay(tiempo_en_milisegundos); -> Crea una espera del nº de milisegundos introducidos como parámetro.
random(min,max); -> Define un valor aleatorio entre el valor mínimo y el máximo, ambos inclusive.
Serial.begin(9600); -> Establece la velocidad de datos en bits por segundo (baudios) para la transmisión de datos en serie.
Serial.println("Texto" o variable); -> Imprime en la consola de Arduino el mensaje o el valor de una variable.
En esta práctica, uno de los leds debe de estar siempre encendido, y en el momento en que se pulsa el botón, se apaga el led que estaba encendido y se enciende el que estaba apagado.
Materiales
Led Rojo
Led Verde
3 Resistencias de 330 Ohmios.
Un Pulsador.
Kit Arduino
Simulación
Debemos montar nuestro circuito en el simulador de Tinkercad tal y como podemos ver en la siguiente imagen:
Montaje Físico
A continuación debemos montar el circuito fisicamente en nuestro Arduino Uno R3, tal y como podemos ver en el siguiente vídeo:
Cuaderno de Clase
Por último tenemos que actualizar nuestro cuaderno de clase de la siguiente forma:
En una página en blanco ponemos el título de la nueva actividad "Actividad 8: Encender y Apagar dos Leds con un pulsador (Versión 1)"
Imagen de la Simulación con Tinkercad.
Imagen del código utilizado para programar la placa Arduino.
Materiales
Led Rojo
Led Verde
2 Resistencias de 330 Ohmios.
Un pulsador.
Kit Arduino
Simulación
Debemos montar nuestro circuito en el simulador de Tinkercad tal y como podemos ver en la siguiente imagen:
Montaje Físico
A continuación debemos montar el circuito fisicamente en nuestro Arduino Uno R3, tal y como podemos ver en la siguiente imagen.
Cuaderno de Clase
Por último tenemos que actualizar nuestro cuaderno de clase de la siguiente forma:
En una página en blanco ponemos el título de la nueva actividad "Actividad 9: Encender y Apagar dos Leds con un pulsador (Versión 2)"
Imagen de la Simulación con Tinkercad.
Imagen del código utilizado para programar la placa Arduino.
El ejercicio consiste en programar nuestra placa arduino para que funcione como si fuese un dado. Tendremos 7 leds con los que podremos formar las caras del dado iluminando unos leds u otros en función del valor aleatorio que se haya obtenido al pulsar un botón.
Materiales
7 diodos LED.
1 pulsador.
7 resistencias de 220 ohmios.
1 resistencias de 10 kilohmios.
Kit Arduino
Simulación
Debemos montar nuestro circuito en el simulador de Tinkercad tal y como podemos ver en la siguiente imagen:
Código Fuente
En esta actividad, tendréis que generar el código desde cero. Recuerda que debes guardar una variable con un valor aleatorio entre 1 y 6 cuando se pulsa el botón.
También es recomendable que eches un vistazo a los proyectos anteriores, estos tienen implementadas algunas funcionalidades que puedes utilizar.
Montaje físico
Cuaderno de Clase
Por último tenemos que actualizar nuestro cuaderno de clase de la siguiente forma:
En una página en blanco ponemos el título de la nueva actividad "Actividad 10: Crea un dado"
Imagen de la Simulación con Tinkercad.
Imagen del código utilizado para programar la placa Arduino.
En arduino disponemos de 6 pines analógicos serigrafiados con el símbolo de alterna (~) con los números 11, 10, 9, 6, 5, 3.
Los pines de salida han sido diseñados para entregar señales de voltaje, no para suplir corriente a un circuito. El máximo de corriente que puede entregar un pin de salida es de aproximadamente 40mA (suficiente para encender un LED).
Los valores que puede tomar un pin analógico están entre 0 y 255.
Para programar las siguientes prácticas utilizando el lenguaje de programación textual de Arduino IDE, deberás conocer las siguientes instrucciones de programación.
Función analogRead()
La función analogRead(), utilizada normalmente en la función loop(), sirve para leer un valor un pin de entrada analógico. Los valores están comprendidos entre 0 y 1023. El valor leído puede ser almacenado en una variable o comprobarse dinámicamente en una condición.
Materiales
Led RGB
3 Resistencia de 330 Ohmios.
Kit Arduino
Descripción de Nuevos Materiales
LED RGB
Se trata de un LED especial, cuyas siglas RGB hacen referencia a los colores Red (Rojo), Green (Verde) y Blue (Azul), los colores primarios de la luz. Un RGB es en realidad la union de tres LED, cada uno de un color básico, en un encapsulado común. En función de la tensión que reciba cada uno de ellos, el RGB emitirá un color u otro.
Podemos encontrar dos tipos de RGB:
De cátodo común: comparten el pin que se conecta a GND. Los otros tres pines se conectan a pines digitales o analógicos.
De ánodo común: comparten el pin que se conecta a la alimentación ( 5V en nuestra placa de Arduino ). Los otros tres pines se conectan a pines digitales o analógicos.
Para identificar qué pin corresponde a cada color debemos tener en consideración:
La patilla más larga es la de alimentación o la tierra (GND), según sea cátodo común o ánodo común.
Normalmente, la patilla que está sola al lado de la más larga es el rojo R y las otras dos corresponden al verde G y al azul B.
Teniendo en cuenta que el rango de valores RGB va de 0 a 255, podemos jugar a combinar unos colores con otros.
La elección de dichos valores se traduce como la tensión que podemos poner en cada pin. Mediante la elección de los valores conseguiremos la mezcla de color que deseemos de forma sencilla.
Simulación
Para esta actividad, debemos programar nuestra placa Arduino para que vaya cambiando el color del led RGB. En una primera versión, debemos hacer que cambie entre los colores rojo, verde y azul.
En una segunda versión, debemos modificar el programa para que el led se encienda progresivamente y cuando se llegue al tope se apague progresivamente.
Debemos montar nuestro circuito en el simulador de Tinkercad tal y como podemos ver en la siguiente imagen:
Montaje Físico
A continuación debemos montar el circuito físicamente en nuestro Arduino Uno R3. El resultado debe ser similar al que podemos ver en el siguiente vídeo. Haz click aquí.
Cuaderno de Clase
Por último tenemos que actualizar nuestro cuaderno de clase de la siguiente forma:
En una página en blanco ponemos el título de la nueva actividad "Actividad 11: Interactuar con un Led RGB"
Imagen de la Simulación con Tinkercad.
Imagen del código utilizado para programar la placa Arduino.
En arduino disponemos de 6 pines para entradas analógicas serigrafiados con los números del A0 al A5. Estos pines son utilizados únicamente como entradas analógicas.
La entrada analógica toma los valores comprendidos entre 0 y 1023.
Es importante recordar que no podemos sobrepasar los límites de voltaje permitidos, es decir, si se aplica un voltaje mayor a 5 voltios en una entrada digital, la placa de Arduino se quemará. Lo mismo aplica para voltajes negativos, por lo que debemos asegurar que el voltaje aplicado a una entrada analógica se encuentre entre 0 y 5 voltios
Materiales
Sensor de Luz (LDR)
Led Rojo
Resistencia 330 Ohmios.
Resistencia de 10 KiloOhmios.
Kit Arduino
Sensor de Luz (LDR)
Un sensor de luz LDR (Light Dependent Resistor) es una resistencia cuyo valor depende de la cantidad de luz que incida sobre ella.
Cuando una luz incide sobre el LDR, el material se vuelve más conductor por lo que su resistencia disminuye. Al contrario, cuanta menos luz incida sobre ella, mayor será su resistencia. Esto se traduce en que podrá dar paso a mayor o menor cantidad de corriente eléctrica en función de la luz que reciba.
Se trata de un dispositivo que no tiene polaridad, es decir, las patillas pueden conectarse sin tener en cuenta el polo positivo ni el negativo.
Simulación
El objetivo de la práctica es usar el sensor de luz de forma que cada vez que este se tapa (simulación de que no hay luz) se encienda el led conectado a la placa. El umbral para decidir si el led se enciende o no debe estar en torno a 600. Aún así realiza varias pruebas para comprobar su funcionamiento. Además el programa debe mostrar por consola los la lectura del valor del sensor.
Debemos montar nuestro circuito en el simulador de Tinkercad tal y como podemos ver en la siguiente imagen:
Montaje Físico
A continuación debemos montar el circuito físicamente en nuestro Arduino Uno R3. El resultado debe ser parecido al que podemos ver en el siguiente vídeo. Haz click aquí.
Cuaderno de Clase
Por último tenemos que actualizar nuestro cuaderno de clase de la siguiente forma:
En una página en blanco ponemos el título de la nueva actividad "Actividad 12 Controlamos un Led con un Sensor de Luz (LDR)".
Imagen de la Simulación con Tinkercad.
Imagen del código utilizado para programar la placa Arduino.
Materiales
Sensor ultrasonido.
Kit Arduino.
Sensor Ultrasonido HC-SR04
Un sensor de ultrasonidos es un dispositivo para medir distancias. Su funcionamiento se basa en el envío de un pulso de alta frecuencia, no audible por el ser humano. Este pulso rebota en los objetos cercanos y es reflejado hacia el sensor, que dispone de un micrófono adecuado para esa frecuencia.
Midiendo el tiempo entre pulsos, conociendo la velocidad del sonido, podemos estimar la distancia del objeto contra cuya superficie impactó el impulso de ultrasonidos
Los sensores de ultrasonidos son sensores baratos, y sencillos de usar. El rango de medición teórico del sensor HC-SR04 es de 2cm a 400 cm. En la práctica, sin embargo, el rango de medición real es mucho más limitado, en torno a 20cm a 2 metros.
Los sensores de ultrasonidos son sensores de baja precisión. La orientación de la superficie a medir puede provocar que la onda se refleje, falseando la medición. Además, no resultan adecuados en entornos con gran número de objetos, dado que el sonido rebota en las superficies generando ecos y falsas mediciones. Tampoco son apropiados para el funcionamiento en el exterior y al aire libre.
Pese a esta baja precisión, que impide conocer con precisión la distancia a un objeto, los sensores de ultrasonidos son ampliamente empleados. En robótica es habitual montar uno o varios de estos sensores, por ejemplo, para detección de obstáculos, determinar la posición del robot, crear mapas de entorno, o resolver laberintos.
En aplicaciones en que se requiera una precisión superior en la medición de la distancia, suelen acompañarse de medidores de distancia por infrarrojos y sensores ópticos.
¿Cómo funciona?
El sensor se basa simplemente en medir el tiempo entre el envío y la recepción de un pulso sonoro. Sabemos que la velocidad del sonido es 343 m/s en condiciones de temperatura 20 ºC, 50% de humedad, presión atmosférica a nivel del mar. Transformando unidades resulta:
Es decir, el sonido tarda 29,2 microsegundos en recorrer un centímetro. Por tanto, podemos obtener la distancia a partir del tiempo entre la emisión y recepción del pulso mediante la siguiente ecuación.
El motivo de dividir por dos el tiempo (además de la velocidad del sonido en las unidades apropiadas, que hemos calculado antes) es porque hemos medido el tiempo que tarda el pulso en ir y volver, por lo que la distancia recorrida por el pulso es el doble de la que queremos medir.
Esquema eléctrico
Código Fuente
En esta actividad aprenderemos a leer los datos proporcionados por el sensor de ultrasonidos HC-SR04. Una vez que obtengamos los valores, los traduciremos a una unidad de medida.
Cuaderno de Clase
Por último tenemos que actualizar nuestro cuaderno de clase de la siguiente forma:
En una página en blanco ponemos el título de la nueva actividad "Actividad 13: Sensor de ultrasonido".
Imagen de la Simulación con Tinkercad.
Imagen del código utilizado para programar la placa Arduino.
Materiales
Sensor ultrasonido.
Led RGB
3 resistencias de 330 Ohmios
Kit Arduino.
Descripción
En esta actividad debemos usar los conceptos aprendidos en las actividades 11 y 12:
Debemos montar el circuito de la actividad 11 para el control de un LED RGB.
Debemos montar el del sensor de ultrasonidos igual que en la actividad 13.
A continuación, debemos implementar la siguiente funcionalidad, dependiendo de la distancia a la que el sensor de ultrasonido detecte un obstáculo, el LED RGB debe de encenderse de alguno de los siguiente colores:
No detecta un objeto - Color azul
Detecta un objeto, pero está bastante lejos - Color verde
Detecta un objeto a media distancia - Color naranja.
Detecta un objeto muy cerca - Color Rojo.
Cuaderno de Clase
Por último tenemos que actualizar nuestro cuaderno de clase de la siguiente forma:
En una página en blanco ponemos el título de la nueva actividad "Actividad 14: Creamos un detector de proximidad".
Imagen de la Simulación con Tinkercad.
Imagen del código utilizado para programar la placa Arduino.
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 (;). La inicialización de la 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. Si la condición sigue cumpliéndose, las instrucciones del bucle se vuelven a ejecutar. Cuando la condición no se cumple, el bucle termina.
Cualquiera de los tres elementos de cabecera puede omitirse, aunque el punto y coma es obligatorio. También las declaraciones de inicialización, condición y expresión puede ser cualquier estamento válido en lenguaje C sin relación con las variables declaradas.
En el mundo del software, una librería es una colección de programas que facilita la ejecución de una serie de funciones relacionadas entre sí. Por ejemplo las funciones que facilitan la escritura en una pantalla LCD o las que nos permiten calcular la posición de un sistema de navegación GPS.
Las librerías de software funcionan de la misma manera que una biblioteca tradicional: pides información sobre un tema concreto y después la utilizas dentro de tu proyecto según te convenga o la necesites.
Imagínate que estás trabajando en un proyecto de investigación: sacas un libro de consulta de la biblioteca y utilizas las informaciones que necesitas de ese libro para tu proyecto. Exactamente lo mismo sucede con una librería de software.
En el mundo de Arduino, una librería es una colección de funciones que incluyes de una manera muy sencilla y explícita en tu sketch y que proporciona una cierta funcionalidad específica. Por ejemplo, hay una librería de cristal líquido que, cuando está incluida en tu sketch, te dará la capacidad de usar fácilmente una pantalla LCD. Una misma librería puede usarse en varios proyectos diferentes.
Neopixel es una marca creada por Adafruit Industries para referirse a algunos LEDs RGB direccionables individualmente, es decir LEDs que cuentan con un circuito lógico integrado dentro de si mismos, circuito que hace posible controlar con un solo pin digital el color de cada LED en una secuencia de LEDs encadenados.
Para cualquier duda sobre el funcionamiento de la librería para controlar una tira LED lo más recomendable es consultar su web oficial en el siguiente enlace.
A continuación se muestra un ejemplo de uso de esta librería con Tinkercad:
Materiales
Tira 8 leds
Led RGB
Kit Arduino.
Descripción
En esta actividad debemos copiar el código y el circuito que trabajamos justo antes de la actividad. Una vez hecho esto, debemos "investigar" como funciona la librería. Para ello debemos definir un breve enunciado sobre que queremos que haga nuestra tira led y a continuación programarla para que funcione tal y como se ha definido.
Requisitos mínimos del programa
Usar al menos 3 colores distintos.
Programar la tira led para que encienda todos los led de una sola vez.
Programar la tira led para que encienda los leds de 1 en 1.
Cuaderno de Clase
Por último tenemos que actualizar nuestro cuaderno de clase de la siguiente forma:
En una página en blanco ponemos el título de la nueva actividad "Actividad 15: Usando Adafruit NeoPixel".
Imagen de la Simulación con Tinkercad.
Imagen del código utilizado para programar la placa Arduino.