{"id":9032,"date":"2024-12-20T22:41:29","date_gmt":"2024-12-20T21:41:29","guid":{"rendered":"https:\/\/blogs.etsii.urjc.es\/dseytr\/?p=9032"},"modified":"2024-12-20T22:41:31","modified_gmt":"2024-12-20T21:41:31","slug":"leds-inteligentes","status":"publish","type":"post","link":"https:\/\/blogs.etsii.urjc.es\/dseytr\/leds-inteligentes\/","title":{"rendered":"LEDS INTELIGENTES"},"content":{"rendered":"\n<p>Proyecto para la Pr\u00e1ctica 2 de la asignatura de Dise\u00f1o de Sistemas Empotrados.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"861\" height=\"362\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/12\/image-20.png\" alt=\"\" class=\"wp-image-9329\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/12\/image-20.png 861w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/12\/image-20-300x126.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/12\/image-20-768x323.png 768w\" sizes=\"auto, (max-width: 861px) 100vw, 861px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p class=\"has-large-font-size\"><strong>\u00cdndice:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"has-medium-font-size\">Introducci\u00f3n.<\/li>\n\n\n\n<li class=\"has-medium-font-size\">Implementaci\u00f3n y pasos dados.<\/li>\n\n\n\n<li class=\"has-medium-font-size\">Materiales.<\/li>\n\n\n\n<li class=\"has-medium-font-size\">C\u00f3digo.<\/li>\n\n\n\n<li class=\"has-medium-font-size\">Problemas encontrados.<\/li>\n\n\n\n<li class=\"has-medium-font-size\">Casos de uso.<\/li>\n\n\n\n<li class=\"has-medium-font-size\">Video de ejecuci\u00f3n.<\/li>\n\n\n\n<li class=\"has-medium-font-size\">Reparto de tareas.<\/li>\n\n\n\n<li class=\"has-medium-font-size\">Autores.<\/li>\n<\/ul>\n\n\n\n<p class=\"has-large-font-size\"><strong>Introducci\u00f3n:<\/strong><\/p>\n\n\n\n<p class=\"has-medium-font-size\">A lo largo de este blog explicaremos diferentes apartados y caracter\u00edsticas de nuestro trabajo de Sistemas Empotrados, que para resumir consiste en una matriz de LEDs que puede encenderse o apagarse con un sensor de proximidad o con un mando, adem\u00e1s con este mismo mando se pueden seleccionar las diferentes funcionalidades de la lampara, como controlar la intensidad seg\u00fan la distancia a la que se ponga la mano, ver diferentes animaciones con los leds, hacer que los leds se muevan seg\u00fan la m\u00fasica que detecta un sensor de sonido, seleccionar el temporizador que apagar\u00e1 la matriz una vez haya transcurrido el tiempo que indique el usuario y finalmente enviar mensajes con el m\u00f3vil a la matriz mediante Bluetooth.<\/p>\n\n\n\n<p class=\"has-large-font-size\"><strong>Implementaci\u00f3n y pasos dados<\/strong>:<\/p>\n\n\n\n<p class=\"has-medium-font-size\">Para la creaci\u00f3n de la L\u00e1mpara Inteligente, llevamos a cabo un proceso de desarrollo progresivo: empezamos desde los aspectos de alto nivel y de ah\u00ed fuimos avanzando hasta llegar al desarrollo completo y final del proyecto.<\/p>\n\n\n\n<p class=\"has-medium-font-size\">Primero definimos concretamente cu\u00e1les ser\u00edan las funciones que tendr\u00eda nuestra lampara. Se hicieron varias propuestas, pensamos en hacer una l\u00e1mpara tradicional de la que se pudiera controlar la estructura, el color, intensidad, etc.., despu\u00e9s se propuso que fuera una tira de leds para poder usar efectos con las luces. Finalmente llegamos a la conclusi\u00f3n final de hacer una lampara con una matriz de leds con diferentes funciones.<\/p>\n\n\n\n<p class=\"has-medium-font-size\">Tras concretar las definiciones del sistema empezamos con la creaci\u00f3n de cada una de las funciones de manera independiente una de otra. Entre los miembros del grupo nos repartimos estas funciones para que cada uno pudiera centrarse en la investigaci\u00f3n y desarrollo de un aspecto concreto del proyecto. En un primer momento se utilizaron leds independientes en lugar de la matriz para facilitar el testeo y la creaci\u00f3n inicial de las funciones.<\/p>\n\n\n\n<p class=\"has-medium-font-size\">Es tambi\u00e9n que en este momento empezamos a centrarnos en empotrar el sistema. Como nuestro objetivo era hacer una l\u00e1mpara que se pudiera tener en una habitaci\u00f3n o un sal\u00f3n, la estructura tenia que ser peque\u00f1a. Tambi\u00e9n busc\u00e1bamos que fuera de dise\u00f1o minimalista, ya que as\u00ed podr\u00eda adaptarse a cualquier ambiente. Como conclusi\u00f3n elegimos un dise\u00f1o en forma de caja rectangular con huecos para encajar la matriz de leds , el sensor de proximidad y el receptor del mando, dejando en el interior el resto de componentes.<\/p>\n\n\n\n<p class=\"has-medium-font-size\">Una vez ya cont\u00e1bamos con la mayor\u00eda de las funciones y la estructura hardware, nos juntamos todos los miembros en una serie de sesiones para juntar todas las partes del c\u00f3digo, terminar de perfeccionar algunos aspectos del funcionamiento y principalmente corregir errores. Debido a que hab\u00edamos hecho las funciones independientes unas de otras, al momento de juntarlas se nos presentaron grandes problemas: de repente cosas que funcionaban ya no iban de la forma correcta. Tuvimos que pasar horas solucionando problemas que encontramos con la funci\u00f3n del temporizador y del Bluetooth, adem\u00e1s de calibrar mejor las funciones de m\u00fasica y del sensor de proximidad, para finalmente obtener la versi\u00f3n final del proyecto.<\/p>\n\n\n\n<p class=\"has-medium-font-size\">Fue gracias a este esfuerzo en conjunto y a las horas que dedicamos que logramos crear nuestro proyecto: la Lampara&nbsp;Inteligente.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\"><strong>Materiales<\/strong><\/h2>\n\n\n\n<h4 class=\"wp-block-heading has-medium-font-size\"><strong>Componentes Hardware<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list has-medium-font-size\">\n<li><strong>Arduino Uno<\/strong>\n<ul class=\"wp-block-list\">\n<li>Es el microcontrolador principal del proyecto, encargado de recibir datos de los sensores, procesarlos y gestionar las funciones de la l\u00e1mpara inteligente.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Sensor de Ultrasonidos<\/strong>\n<ul class=\"wp-block-list\">\n<li>Permite medir la proximidad de un objeto para encender o apagar la l\u00e1mpara y ajustar la intensidad de la luz seg\u00fan la distancia detectada.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Mando IR<\/strong>\n<ul class=\"wp-block-list\">\n<li>Un control remoto que permite cambiar entre los modos de funcionamiento de la l\u00e1mpara.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Sensor IR<\/strong>\n<ul class=\"wp-block-list\">\n<li>Recibe las se\u00f1ales enviadas por el mando a distancia para que el sistema interprete las \u00f3rdenes y las ejecute.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Matriz de leds 8&#215;32<\/strong>\n<ul class=\"wp-block-list\">\n<li>Cuatro matrices de 8&#215;8 leds que se encienden, muestran formas, palabras o patrones luminosos personalizados.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>M\u00f3dulo Bluetooth<\/strong>\n<ul class=\"wp-block-list\">\n<li>Permite conectar la l\u00e1mpara a un dispositivo m\u00f3vil para enviar palabras y cambiar la velocidad con las que estas aparecen en la matriz de leds.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Sensor de Sonido<\/strong>\n<ul class=\"wp-block-list\">\n<li>Detecta sonido y dependiendo del volumen genera distintos efectos visuales en la matriz de leds.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Bater\u00eda de 9V<\/strong>\n<ul class=\"wp-block-list\">\n<li>Proporciona la energ\u00eda necesaria para el funcionamiento del sistema, asegurando la portabilidad y la autonom\u00eda del dispositivo.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p class=\"has-medium-font-size\"><strong>Otros Materiales<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list has-medium-font-size\">\n<li><strong>Breadboard<\/strong>\n<ul class=\"wp-block-list\">\n<li>Tablero de conexiones.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Cables<\/strong><\/li>\n\n\n\n<li><strong>Caja de Madera<\/strong><\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Componentes<\/strong><\/td><td><strong>Precio<\/strong><\/td><\/tr><tr><td>Arduino Uno<\/td><td>19.99<\/td><\/tr><tr><td>Sensor ultrasonidos<\/td><td>6.99<\/td><\/tr><tr><td>Mando IR y sensor IR<\/td><td>6.81<\/td><\/tr><tr><td>Matriz de leds 8&#215;32<\/td><td>12.99<\/td><\/tr><tr><td>Sensor bluetooth<\/td><td>10.99<\/td><\/tr><tr><td>Sensor de sonido<\/td><td>6.49<\/td><\/tr><tr><td>Bater\u00eda 9V<\/td><td>3.5<\/td><\/tr><tr><td>Breadbroad<\/td><td>~5<\/td><\/tr><tr><td>Cables<\/td><td>~2<\/td><\/tr><tr><td>Caja madera<\/td><td>10<\/td><\/tr><tr><td><strong>Total<\/strong><\/td><td><strong>84.76<\/strong><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p class=\"has-large-font-size\"><strong>C\u00f3digo<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code has-small-font-size\"><code>#include &lt;IRremote.h&gt;   \/\/ biblioteca  para el control remoto\n#include &lt;SoftwareSerial.h&gt; \/\/ biblioteca para el bluetooth\n#include \"LedControl.h\" \/\/ biblioteca  para la matriz de leds\n#include &lt;MD_MAX72xx.h&gt; \/\/ biblioteca para la matriz de leds (bluetooth)\n\n\/\/ ------------------------------------------------------------ Declaracion de variables ----------------------------------------------------------------------------------------\n\/\/ Definir el valor de los botones de mi mando\n#define Boton_ON 0xBA45FF00\n#define Boton_0 0xE916FF00\n#define Boton_1 0xF30CFF00\n#define Boton_2 0xE718FF00\n#define Boton_3 0xA15EFF00\n#define Boton_4 0xF708FF00\n#define Boton_5 0xE31CFF00\n#define Tecla_SUMAR 0xF609FF00\n\n\/\/ Variables para la matriz de leds\n#define HARDWARE_TYPE MD_MAX72XX::FC16_HW \/\/ definir matriz de leds\n#define NUM_OF_MATRIX 4\n#define CLK_PIN   13\n#define DATA_PIN  11\n#define CS_PIN    10\nint BT_Rx = 7;\nint BT_Tx = 6;\n\nLedControl lc = LedControl(DATA_PIN, CLK_PIN, CS_PIN, NUM_OF_MATRIX);  \/\/ el control de la matriz de leds se hace mediante la libreria ...\nMD_MAX72XX letrero = MD_MAX72XX(HARDWARE_TYPE, DATA_PIN, CLK_PIN, CS_PIN, NUM_OF_MATRIX); \/\/ matriz de leds\nSoftwareSerial BT(BT_Rx,BT_Tx); \/\/ bluetooth\n\n\/\/ Conector para el control remoto\nint receptorMando = 3;   \/\/  receptor de infrarrojos\n\n\/\/ Variables para el sensor de sonido\nfloat sensor = 0; \/\/ Variable para guardar el estado del sensor de sonido\nint soundSensor = A0;  \/\/ Conector anal\u00f3gico para el sensor de sonido\n\n\/\/ Tiempo Base Temporizador:\n#define TIEMPO_BASE 5000\n\n\/\/ variables para el temporizador\nunsigned long tiempo_restante = 0; \/\/ Tiempo restante en milisegundos\nunsigned long inicio_temporizador = 0; \/\/ Momento en que comenz\u00f3 el temporizador\nbool temporizador_activo = false;\nbool matriz_encendida = false; \/\/ Indica si la matriz est\u00e1 encendida\nString mensaje2 = \"TEMPORIZADOR\";\n\n\/\/ variables para el control de la lampara\nint modo;\nbool on= true;\n\n\/\/ variables para el bluetooth\nString mensaje = \"Hola\";\nString vel;\nString proximo_mensaje;\nlong valor;\nlong velSlide = 100;\nlong velSlide2 = 50;\n\n\/\/ variables sensor proximidad\nint trigPin = 9;\nint echoPin = 8;\n\nfloat distancia_cm, intensidad;\nint mediciones_prox;\n\nfloat   filteredSignalValues&#091;] = {165,160,156,154,150,147,145, 143, 140}; \/\/ rangos para mi sensor de sonido\n\nbyte d1_0&#091;8]= {0x00,0x00,0x00,0x00,0x00,0x00,0xCF,0xFF}; \/\/ dibujos de las animaciones del sonido\nbyte d2_0&#091;8]= {0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0xFF};\nbyte d3_0&#091;8]= {0x00,0x00,0x00,0x00,0x00,0x00,0xCC,0xFF};\nbyte d4_0&#091;8]= {0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF};\n\nbyte d1_1&#091;8]= {0x00,0x00,0x00,0x00,0x00,0x33,0xF3,0xFF};\nbyte d2_1&#091;8]= {0x00,0x00,0x00,0x00,0x00,0x30,0xFC,0xFF};\nbyte d3_1&#091;8]= {0x00,0x00,0x00,0x00,0x00,0xCC,0xCF,0xFF};\nbyte d4_1&#091;8]= {0x00,0x00,0x00,0x00,0x00,0x30,0xF3,0xFF};\n\nbyte d1_2&#091;8]= {0x00,0x00,0x00,0x00,0x12,0xB3,0xFF,0xFF};\nbyte d2_2&#091;8]= {0x00,0x00,0x00,0x00,0x30,0x30,0x3D,0xFF};\nbyte d3_2&#091;8]= {0x00,0x00,0x00,0x00,0x00,0x0C,0xCE,0xFF};\nbyte d4_2&#091;8]= {0x00,0x00,0x00,0x00,0x02,0x66,0xF7,0xFF};\n\nbyte d1_3&#091;8]= {0x00,0x00,0x00,0x92,0x92,0xB7,0xF7,0xFF};\nbyte d2_3&#091;8]= {0x00,0x00,0x00,0x10,0x34,0x34,0xFD,0xFF};\nbyte d3_3&#091;8]= {0x00,0x00,0x00,0x00,0x44,0x4C,0xDE,0xFF};\nbyte d4_3&#091;8]= {0x00,0x00,0x00,0x40,0x64,0x66,0xFF,0xFF};\n\nbyte d1_4&#091;8]= {0x00,0x00,0x0C,0x8C,0xCC,0xEE,0xFE,0xFF};\nbyte d2_4&#091;8]= {0x00,0x00,0x20,0x30,0x34,0x76,0xFF,0xFF};\nbyte d3_4&#091;8]= {0x00,0x00,0x00,0x08,0x4C,0xCD,0xFF,0xFF};\nbyte d4_4&#091;8]= {0x00,0x00,0x00,0x21,0xA5,0xE7,0xFF,0xFFF};\n\nbyte d1_5&#091;8]= {0x00,0x04,0x04,0x04,0x26,0x6E,0xFF,0xFF};\nbyte d2_5&#091;8]= {0x00,0x20,0x20,0xB2,0xB3,0xF7,0xFF,0xFF};\nbyte d3_5&#091;8]= {0x00,0x00,0x08,0x48,0xCD,0xED,0xEF,0xFF};\nbyte d4_5&#091;8]= {0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF};\n\nbyte d1_6&#091;8]= {0x00,0x40,0x48,0x4C,0x6E,0xEE,0xFF,0xFF};\nbyte d2_6&#091;8]= {0x00,0x20,0x22,0x2A,0xAF,0xEF,0xFF,0xFF};\nbyte d3_6&#091;8]= {0x00,0x08,0x88,0x88,0xDD,0xFD,0xFF,0xFF};\nbyte d4_6&#091;8]= {0x00,0x00,0x08,0x89,0xBB,0xFF,0xFF,0xFF};\n\nbyte d1_7&#091;8]= {0x00,0x00,0x00,0x00,0x00,0x00,0xCF,0xFF};\nbyte d2_7&#091;8]= {0x02,0x26,0x26,0xB6,0xBF,0xFF,0xFF,0xFF};\nbyte d3_7&#091;8]= {0x00,0x81,0x89,0x89,0xAD,0xBF,0xFF,0xFF};\nbyte d4_7&#091;8]= {0x00,0x81,0x89,0x8B,0xCB,0xDF,0xFF,0xFF};\n\nbyte d1_8&#091;8]= {0x0C,0x0C,0x2C,0xBD,0xFF,0xFF,0xFF,0xFF};\nbyte d2_8&#091;8]= {0x26,0x26,0xA6,0xB6,0xBE,0xFF,0xFF,0xFF};\nbyte d3_8&#091;8]= {0x01,0x09,0x2D,0xAD,0xFD,0xFF,0xFF,0xFF};\nbyte d4_8&#091;8]= {0x08,0x29,0x29,0xAB,0xFF,0xFF,0xFF,0xFF};\n\n\/\/animacion olas\nbyte ola_0&#091;8]= {0x00,0x00,0x00,0x3C,0x7E,0xFF,0xFF,0xFF}; \nbyte ola_1&#091;8]= {0x00,0x00,0x00,0x1E,0x3F,0xFF,0xFF,0xFF};\nbyte ola_2&#091;8]= {0x00,0x00,0x00,0x0F,0x9F,0xFF,0xFF,0xFF};\nbyte ola_3&#091;8]= {0x00,0x00,0x00,0x87,0xCF,0xFF,0xFF,0xFF};\nbyte ola_4&#091;8]= {0x00,0x00,0x00,0xC3,0xE7,0xFF,0xFF,0xFF};\nbyte ola_5&#091;8]= {0x00,0x00,0x00,0xE1,0xF3,0xFF,0xFF,0xFF};\nbyte ola_6&#091;8]= {0x00,0x00,0x00,0xF0,0xF9,0xFF,0xFF,0xFF};\nbyte ola_7&#091;8]= {0x00,0x00,0x00,0x78,0xFC,0xFF,0xFF,0xFF};\n\nint olass&#091;]={ola_0, ola_1,ola_2,ola_3,ola_4,ola_5,ola_6,ola_7};\n\n\/\/ ----------------------------------------------------------------- Setup ---------------------------------------------------------------------------------------------------------\n\nvoid setup() {\n  \/\/Inicializar sensor mando  \n  IrReceiver.begin(receptorMando, DISABLE_LED_FEEDBACK); \n\n  \/\/Declarar el sensor de sonido como input\n  pinMode (soundSensor, INPUT);\n  \n  lc.shutdown(0,false);\n  lc.setIntensity(0,3);\n  lc.clearDisplay(0);\n  lc.shutdown(1,false);\n  lc.setIntensity(1,3);\n  lc.clearDisplay(1);\n  lc.shutdown(2,false);\n  lc.setIntensity(2,3);\n  lc.clearDisplay(2);\n  lc.shutdown(3,false);\n  lc.setIntensity(3,3);\n  lc.clearDisplay(3);\n\n  \/\/ inicializar matriz de leds y bluetooth\n  letrero.begin();\n  BT.begin(9600);\n  letrero.control(MD_MAX72XX::INTENSITY,5 );\n  letrero.control( MD_MAX72XX::UPDATE, false );\n\n  pinMode(trigPin, OUTPUT);\n  pinMode(echoPin, INPUT);\n\n  Serial.begin(9600); \n}\n\nvoid loop() {\n  sensor = analogRead (soundSensor); \/\/ leo el valor del sensor (me devuelve valores entre 0 y 1023) segun el volumen. De menos (0) a m\u00e1s (1023)\n  mediciones_prox=0;\n\n  do{\n      distancia_cm = CalcularDistancia();\n      if(distancia_cm&lt;50.0){\n        mediciones_prox++;\n      }\n  } while((distancia_cm&lt;50.0)&amp;&amp;(mediciones_prox&lt;5));\n\n  if ((mediciones_prox==2)||(mediciones_prox==3)){\n\n   if(on==true){\n        apagarMatriz();\n        on=false;\n      }\n      else {\n        encenderMatriz();\n        on=true;\n      }\n  }\n\n  if (IrReceiver.decode()) { \/\/ Si se ha pulsado un boton del mando\n    Serial.println(on); \n    Serial.println(IrReceiver.decodedIRData.decodedRawData, HEX);\n    if (IrReceiver.decodedIRData.decodedRawData == Boton_ON){   \n      if(on==true){\n        apagarMatriz();\n        on=false;\n      }\n      else {\n        encenderMatriz();\n        on=true;\n      }\n    }\n\n    \/\/ Nueva l\u00f3gica para sumar tiempo\n    if (IrReceiver.decodedIRData.decodedRawData == Tecla_SUMAR) {\n        if (temporizador_activo) {\n            sumarTiempo(5000); \/\/ Sumar 5 segundos\n        }\n    }\n\n    if (IrReceiver.decodedIRData.decodedRawData == Boton_0){\n      modo=0;\n    } \n    if (IrReceiver.decodedIRData.decodedRawData == Boton_1){\n      modo=1;  \n    }   \n    if (IrReceiver.decodedIRData.decodedRawData == Boton_2){\n      modo=2;\n    }\n    if (IrReceiver.decodedIRData.decodedRawData == Boton_3){\n      modo=3;\n    }\n    if (IrReceiver.decodedIRData.decodedRawData == Boton_4){\n      modo=4;\n    }\n    if (IrReceiver.decodedIRData.decodedRawData == Boton_5){\n      modo=5;\n    }\n    IrReceiver.resume(); \/\/ continuo recibiendo se\u00f1ales\n  }\n\n  if(on){\n    switch(modo){\n      case 0:\n        while(distancia_cm&lt;50.0){\n          distancia_cm = CalcularDistancia();\n        VariarIntensidad(&amp;intensidad, distancia_cm);\n        }\n      break;\n\n      case 1:\n          actualizar_mensaje(&amp;modo);\n          slide_text( velSlide );          \n      break;\n\n      case 2:\n        Musica(sensor);\n      break;\n\n      case 3: \n      if (modo != -1) {\n        if (!temporizador_activo) {\n          letrero.clear(); \/\/ Limpiar la matriz\n          slide_text2( velSlide2 );\n          letrero.clear(); \/\/ Limpiar nuevamente la matriz despu\u00e9s del mensaje\n          encenderMatriz(); \/\/Enciende la Matriz\n          iniciarTemporizador(); \/\/ Inicia el temporizador\n        }\n      }\n      break;\n\n      case 4:\n        iluminacionCuadros();\n      break;\n\n      case 5:\n        olas();\n      break;    \n    }\n  }\n  if (temporizador_activo) {\n      actualizarTemporizador();\n    }\n}\n\n\/\/ --------------------------------------------------------------------- Funciones --------------------------------------------------------------------------------------------------\nvoid encenderMatriz(){\n    for(int fila = 0; fila &lt; 8; fila++){\n    for(int columna = 0; columna &lt; 8; columna++){\n      lc.setLed(0,fila, columna, true);\n      lc.setLed(1,fila, columna, true);\n      lc.setLed(2,fila, columna, true);\n      lc.setLed(3,fila, columna, true);\n    }\n  }\n}\n\nvoid apagarMatriz(){\n    for(int fila = 0; fila &lt; 8; fila++){\n    for(int columna = 0; columna &lt; 8; columna++){\n      lc.setLed(0,fila, columna, false);\n      lc.setLed(1,fila, columna, false);\n      lc.setLed(2,fila, columna, false);\n      lc.setLed(3,fila, columna, false);\n    }\n  }\n}\n\nfloat CalcularDistancia(){\n  float duration_us, distance_cm;\n  \/\/ generate 10-microsecond pulse to TRIG pin\n  digitalWrite(trigPin, HIGH);\n  delayMicroseconds(10);\n  digitalWrite(trigPin, LOW);\n\n  \/\/ measure duration of pulse from ECHO pin\n  duration_us = pulseIn(echoPin, HIGH);\n\n  \/\/ calculate the distance\n  distance_cm = 0.017 * duration_us;\n\n  delay(150);\n  return distance_cm;\n}\n\nvoid VariarIntensidad(float *intensidad, float distancia){\n  int int_round;\n  Serial.print(\"Entra a variar intensidad\");\n  *intensidad = 10.0 - distancia\/5;\n  int_round = (int)*intensidad;\n   Serial.print(\"esta es la intensidad: \");\n   Serial.println(*intensidad);\n    delay(500);\n  \/\/En vez de un LED que sea la matriz\n  lc.setIntensity(0,int_round);\n  lc.setIntensity(1,int_round);\n  lc.setIntensity(2,int_round);\n  lc.setIntensity(3,int_round);\n  delay(200);\n}\n\n\/\/ Funci\u00f3n para iniciar el temporizador\nvoid iniciarTemporizador() {\n  if (!temporizador_activo) {\n    \/\/Serial.println(\"Iniciando temporizador\");\n    tiempo_restante = TIEMPO_BASE; \/\/ Reinicia el tiempo restante\n    inicio_temporizador = millis();\n    temporizador_activo = true;\n  } \n}\n\n\/\/ Funci\u00f3n para sumar tiempo al temporizador\nvoid sumarTiempo(unsigned long tiempo_adicional) {\n  tiempo_restante += tiempo_adicional;\n}\n\nvoid actualizarTemporizador() {\n  unsigned long tiempo_actual = millis();\n  unsigned long tiempo_transcurrido = tiempo_actual - inicio_temporizador;\n\n  if (tiempo_transcurrido &gt;= tiempo_restante) {\n    apagarMatriz();\n    temporizador_activo = false;\n    modo = -1;\n  } else {\n    unsigned long tiempo_restante_actual = tiempo_restante - tiempo_transcurrido;\n    Serial.print(\"Tiempo restante: \");\n    Serial.println(tiempo_restante_actual);\n  }\n}\n\nvoid Musica(float signal){\n if (signal &gt; filteredSignalValues&#091;0]) {\n    pintarMatriz(d1_8,0);\n    pintarMatriz(d2_8,1);\n    pintarMatriz(d3_8,2);\n    pintarMatriz(d4_8,3);   \n  } else if (signal &lt;= filteredSignalValues&#091;0] &amp;&amp; signal &gt; filteredSignalValues&#091;1]) {\n    pintarMatriz(d1_7,0);\n    pintarMatriz(d2_7,1);\n    pintarMatriz(d3_7,2);\n    pintarMatriz(d4_7,3);\n  } else if (signal &lt;= filteredSignalValues&#091;1] &amp;&amp; signal &gt; filteredSignalValues&#091;2]) {\n    pintarMatriz(d1_6,0);\n    pintarMatriz(d2_6,1);\n    pintarMatriz(d3_6,2);\n    pintarMatriz(d4_6,3);\n    Serial.println(\"if 3\");\n  } else if (signal &lt;= filteredSignalValues&#091;2] &amp;&amp; signal &gt; filteredSignalValues&#091;3]) {\n    pintarMatriz(d1_5,0);\n    pintarMatriz(d2_5,1);\n    pintarMatriz(d3_5,2);\n    pintarMatriz(d4_5,3);\n  } else if (signal &lt;= filteredSignalValues&#091;3] &amp;&amp; signal &gt; filteredSignalValues&#091;4]) {\n    pintarMatriz(d1_4,0);\n    pintarMatriz(d2_4,1);\n    pintarMatriz(d3_4,2);\n    pintarMatriz(d4_4,3);\n  } else if (signal &lt;= filteredSignalValues&#091;4] &amp;&amp; signal &gt; filteredSignalValues&#091;5]) {\n    pintarMatriz(d1_3,0);\n    pintarMatriz(d2_3,1);\n    pintarMatriz(d3_3,2);\n    pintarMatriz(d4_3,3);\n  } else if (signal &lt;= filteredSignalValues&#091;5] &amp;&amp; signal &gt; filteredSignalValues&#091;6]) {\n    pintarMatriz(d1_2,0);\n    pintarMatriz(d2_2,1);\n    pintarMatriz(d3_2,2);\n    pintarMatriz(d4_2,3);\n  } else if (signal &lt;= filteredSignalValues&#091;6] &amp;&amp; signal &gt; filteredSignalValues&#091;7]) {\n    pintarMatriz(d1_1,0);\n    pintarMatriz(d2_1,1);\n    pintarMatriz(d3_1,2);\n    pintarMatriz(d4_1,3);\n  } else {\n    pintarMatriz(d1_0,0);\n    pintarMatriz(d2_0,1);\n    pintarMatriz(d3_0,2);\n    pintarMatriz(d4_0,3);\n\n    Serial.println(\"...\");\n  }\n}\n\nvoid pintarMatriz(byte character &#091;], int display){\n  int i = 0;\n    for(i=0;i&lt;8;i++)\n    {\n       lc.setRow(display,i,character&#091;i]);\n    }\n  delay(3);\n\n}\n\nvoid iluminacionCuadros(){\n  encenderMatriz();\n  for(int i = 4; i &gt;0; i--){\n    lc.setIntensity(i,10);\n    delay(500);\n    lc.setIntensity(i,0);\n  }  \n}\n\nvoid olas(){\nfor(int i = 0; i &lt; 4; i++){\n    pintarMatriz(olass&#091;i],0);\n    pintarMatriz(olass&#091;i],1);\n    pintarMatriz(olass&#091;i],2);\n    pintarMatriz(olass&#091;i],3);}\n}\n\n\/\/ C\u00f3digo para el modo bluetooth\n\/\/ FUNCI\u00d3N MENSAJE\nvoid actualizar_mensaje(int *mode){\n\n  Serial.print(*mode);\n\n  while( BT.available()){\n    Serial.print(\"Entra al bluetooth\");\n \n    char c = BT.read();\n\n    if (c=='*'){\n        vel =  proximo_mensaje;\n        valor = vel.toFloat();\n        velSlide=map(valor,0,100,200,5);\n      proximo_mensaje = \"\";\n    \n      break;\n    }    \n  \n    if( c == '\\n' ){\n      mensaje = proximo_mensaje;\n      proximo_mensaje = \"\";\n     \n      break;\n    }\n    else\n     proximo_mensaje+=c;\n  }\n}\n \n\/\/ FUNCI\u00d3N SCROLL TEXTO\nvoid slide_text(int ms_delay){\n  int col = 0;\n  int last_pos;\n  bool completo = false;\n  \n  letrero.clear();\n \n  while( completo == false ){\n    last_pos = printText(col, mensaje);\n    \n    delay(ms_delay);\n    col++;\n    if( last_pos &gt; (int)letrero.getColumnCount() )\n      completo = true;\n  }\n}\n\nvoid slide_text2(int ms_delay){\n  int col = 0;\n  int last_pos;\n  bool completo = false;\n  \n  letrero.clear();\n \n  while( completo == false ){\n    last_pos = printText(col, mensaje2);\n    \n    delay(ms_delay);\n    col++;\n    if( last_pos &gt; (int)letrero.getColumnCount() )\n      completo = true;\n  }\n}\n \nint printText(int pos, const String text){\n\n  int w;\n  \n  for( int i = 0; i &lt; text.length(); i++ ){\n     \n    w = letrero.setChar( pos, text&#091;i] );    \n    pos = pos - w;\n    \/\/Serial.println(pos); \n    letrero.setColumn(pos, B00000000);\n    \n    pos = pos - 1;\n    \n    if( pos &lt; 0 )\n      break;\n  }\n  letrero.update();\n  return pos;\n}<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<p class=\"has-large-font-size\"><strong>Problemas encontrados y Soluciones:<\/strong><\/p>\n\n\n\n<p class=\"has-medium-font-size\">Tuvimos una serie de problemas con nuestro proyecto a lo largo del desarrollo de este, pero por suerte fuimos capaces de solucionarlos sin grandes contratiempos.<br>Algunos de estos fueron:<\/p>\n\n\n\n<p class=\"has-medium-font-size\">&#8211;<strong>El problema de la animaci\u00f3n de las olas y el sensor de sonido: <\/strong>Aqu\u00ed lo que ocurr\u00eda es que hicimos una versi\u00f3n inicial de las animaciones de las olas y del sensor del sonido sin hacerlo que funcione con el mando de primeras, pero al intentar juntarlo con el c\u00f3digo del mando dejaban de funcionar las animaciones. Terminamos arregl\u00e1ndolo a\u00f1adiendo los \u00abswitch case\u00bb en el c\u00f3digo para separar cada funcionalidad de la l\u00e1mpara.<\/p>\n\n\n\n<p class=\"has-medium-font-size\">&#8211;<strong>Pulsadores estropeados: <\/strong>Cuando est\u00e1bamos haciendo versiones iniciales del temporizador, lo quer\u00edamos probar primero con un pulsador y un led en la placa, en vez de con el mando y la matriz de leds, ya que ser\u00eda bastante m\u00e1s sencillo probarlo as\u00ed. El problema es que ninguno de los pulsadores que ven\u00edan con nuestra caja Arduino funcionaba bien, por lo que tuvimos que hacerlo que funcionase con el mando de primeras, por suerte no fue muy dif\u00edcil de implementar.<\/p>\n\n\n\n<p class=\"has-medium-font-size\">&#8211;<strong>Funcionamiento impredecible del Sensor de Proximidad:<\/strong> Tambi\u00e9n tuvimos problemas con el sensor de proximidad, y es que hab\u00eda veces que poniendo la mano encima se apagaba o encend\u00eda la matriz de leds, lo cual no deber\u00eda de ocurrir, si no que deber\u00eda simplemente de regular la intensidad de la matriz, para apagarla o encenderla hay que hacer una pasada con la mano, como se puede apreciar en el v\u00eddeo de la funcionalidad.<br>Tambi\u00e9n ocurr\u00eda lo contrario, que quer\u00edamos apagarla o encenderla haciendo una pasada con la mano y algunas veces no lo hac\u00eda y otras s\u00ed. Por suerte, la soluci\u00f3n fue bastante sencilla, \u00fanicamente tuvimos que cambiar en el c\u00f3digo el bucle del sensor de proximidad por un \u00abdo while\u00bb en vez del \u00abfor\u00bb, que era el que estaba causando problemas.<\/p>\n\n\n\n<p class=\"has-medium-font-size\">&#8211;<strong>\u00bfMemoria de la placa Arduino saturada?:<\/strong> Aqu\u00ed no sabemos a ciencia cierta cual era el problema, pero sospechamos que se saturaba la memoria del Arduino cuando junt\u00e1bamos todo el c\u00f3digo de la l\u00e1mpara, y es que al probarlo todo junto, el bluetooth simplemente no funcionaba, no hac\u00eda nada. Despu\u00e9s de estar bastante tiempo probando cosas, comenzamos a quitar serial prints del c\u00f3digo que eran innecesarios y nos dimos cuenta de que ahora si funcionaba, pero a medias, y es que s\u00ed que dejaba escribir palabras para mostrarlas en la matriz, pero solamente palabras cortas, por lo que segu\u00eda sin funcionar correctamente. Finalmente quitamos la mayor\u00eda de serial prints que no eran necesarios y ya si que funcionaba todo a la perfecci\u00f3n.<\/p>\n\n\n\n<p class=\"has-large-font-size\"><strong>Casos de uso:<\/strong><\/p>\n\n\n\n<p class=\"has-medium-font-size\">Gracias a las diversas opciones presentes que hemos a\u00f1adido mediante los sensores y programando, nuestro proyecto podr\u00eda utilizarse en gran cantidad de casos, siendo algunos de estos:<\/p>\n\n\n\n<p class=\"has-medium-font-size\">&#8211;<strong>Mesita de noche<\/strong>. La l\u00e1mpara se puede utilizar como en una mesita de noche, ya que funciones como cambiar la intensidad o el temporizador permiten emplear la l\u00e1mpara para funciones como leer un libro o la posibilidad de que se apague de manera autom\u00e1tica en un tiempo cuando ya est\u00e9s durmiendo. Adem\u00e1s el usar el sensor de proximidad facilita el no tener que buscar un interruptor por la noche y sin apenas luz.<\/p>\n\n\n\n<p class=\"has-medium-font-size\">&#8211;<strong>Luz para ni\u00f1os con miedo a la oscuridad<\/strong>. Gracias al temporizador puedes dejar la l\u00e1mpara encendida hasta que el ni\u00f1o se duerma y una vez que lo est\u00e9 dejar que se apague sola gracias al temporizador.<\/p>\n\n\n\n<p class=\"has-medium-font-size\">&#8211;<strong>Decoraci\u00f3n ambiental para creadores de contenido.<\/strong> Con los diferentes patrones predefinidos, as\u00ed como el sensor de sonido y la posibilidad de escribir palabras, nuestra matriz podr\u00eda emplearse por creadores de contenido en sus v\u00eddeos o directos como decoraci\u00f3n de fondo, dando as\u00ed un toque personal y la posibilidad de dejar mensajes escritos para sus seguidores.<\/p>\n\n\n\n<p class=\"has-medium-font-size\">&#8211;<strong>Cartel o se\u00f1al de advertencia nocturna.<\/strong> Al igual que en el caso anterior el poder escribir palabras resulta muy \u00fatil, ya que por la noche necesitas que un cartel o se\u00f1al tenga alg\u00fan tipo de iluminaci\u00f3n, y con nuestro proyecto podr\u00eda utilizarse con un mensaje espec\u00edfico y despu\u00e9s volver a utilizarse en otro caso. Adem\u00e1s el dise\u00f1o compacto permite que pueda colocarse ocupando poco espacio y de una manera sencilla y c\u00f3moda.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p class=\"has-large-font-size\"><strong>Reparto de tareas:<\/strong><\/p>\n\n\n\n<p class=\"has-medium-font-size\">En cuanto al reparto del trabajo, lo hemos segmentado por funcionalidades que quer\u00edamos a\u00f1adir, es decir, cada uno de los miembros se ha centrado principalmente en uno de los componentes de este y ha desarrollado las funciones que lo acontecen. Las funciones relacionadas con el sensor de ultrasonidos, como el controlar la intensidad, y la creaci\u00f3n del soporte f\u00edsico fueron desarrolladas por V\u00edctor Manuel Moreno, las funciones del temporizador por Eduard Florea Florea, del funcionamiento del Bluetooth se encarg\u00f3 H\u00e9ctor Santamar\u00eda y de las animaciones y la m\u00fasica Angie Natalia Prieto.<\/p>\n\n\n\n<p class=\"has-medium-font-size\">Una vez que consegu\u00edamos implementar la funcionalidad deseada del sensor con un c\u00f3digo m\u00e1s b\u00e1sico (que no estaba unido al resto de sensores) se juntaba con el c\u00f3digo que ya llev\u00e1bamos implementado con el resto de sensores y la matriz. Nos juntamos todos en una serie de sesiones para unir todas las partes del c\u00f3digo y solucionar los errores que surg\u00edan en el proceso.<\/p>\n\n\n\n<p class=\"has-medium-font-size\">De esta manera hemos podido trabajar todos sin tener que coincidir en horarios y hemos optimizado y repartido de manera equitativa todo el proyecto.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p class=\"has-large-font-size\"><strong>Video Explicativo y Demostraci\u00f3n<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<div class=\"video-container\"><iframe loading=\"lazy\" title=\"VideoBlogPrac2\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/B8jqZdYLl6U?feature=oembed&#038;wmode=opaque\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/div>\n<\/div><\/figure>\n\n\n\n<p class=\"has-large-font-size\"><strong>Autores:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"has-medium-font-size\">V\u00edctor Manuel Moreno Guti\u00e9rrez<\/li>\n\n\n\n<li class=\"has-medium-font-size\">Eduard Florea Florea<\/li>\n\n\n\n<li class=\"has-medium-font-size\">H\u00e9ctor Santamar\u00eda Teclemayer<\/li>\n\n\n\n<li class=\"has-medium-font-size\">Angie Natalia Prieto Cuadros<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Proyecto para la Pr\u00e1ctica 2 de la asignatura de Dise\u00f1o de Sistemas Empotrados. \u00cdndice: Introducci\u00f3n: A lo largo de este blog explicaremos diferentes apartados y caracter\u00edsticas de nuestro trabajo de Sistemas Empotrados, que para&#46;&#46;&#46;<\/p>\n","protected":false},"author":254,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[8,159],"class_list":["post-9032","post","type-post","status-publish","format-standard","hentry","category-proyectos","tag-arduino","tag-dse-gic-mostoles-2024-25"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>LEDS INTELIGENTES - Proyectos con Arduino.<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/leds-inteligentes\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"LEDS INTELIGENTES - Proyectos con Arduino.\" \/>\n<meta property=\"og:description\" content=\"Proyecto para la Pr\u00e1ctica 2 de la asignatura de Dise\u00f1o de Sistemas Empotrados. \u00cdndice: Introducci\u00f3n: A lo largo de este blog explicaremos diferentes apartados y caracter\u00edsticas de nuestro trabajo de Sistemas Empotrados, que para&#046;&#046;&#046;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/leds-inteligentes\/\" \/>\n<meta property=\"og:site_name\" content=\"Proyectos con Arduino.\" \/>\n<meta property=\"article:published_time\" content=\"2024-12-20T21:41:29+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-12-20T21:41:31+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/12\/image-20.png\" \/>\n\t<meta property=\"og:image:width\" content=\"861\" \/>\n\t<meta property=\"og:image:height\" content=\"362\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"dse2425g05\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"dse2425g05\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"18 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/leds-inteligentes\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/leds-inteligentes\\\/\"},\"author\":{\"name\":\"dse2425g05\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#\\\/schema\\\/person\\\/c85f594903a6e5757ff27346c842be74\"},\"headline\":\"LEDS INTELIGENTES\",\"datePublished\":\"2024-12-20T21:41:29+00:00\",\"dateModified\":\"2024-12-20T21:41:31+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/leds-inteligentes\\\/\"},\"wordCount\":1811,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/leds-inteligentes\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2024\\\/12\\\/image-20.png\",\"keywords\":[\"Arduino\",\"DSE GIC Mostoles 2024-25\"],\"articleSection\":[\"Proyectos\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/leds-inteligentes\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/leds-inteligentes\\\/\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/leds-inteligentes\\\/\",\"name\":\"LEDS INTELIGENTES - Proyectos con Arduino.\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/leds-inteligentes\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/leds-inteligentes\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2024\\\/12\\\/image-20.png\",\"datePublished\":\"2024-12-20T21:41:29+00:00\",\"dateModified\":\"2024-12-20T21:41:31+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/leds-inteligentes\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/leds-inteligentes\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/leds-inteligentes\\\/#primaryimage\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2024\\\/12\\\/image-20.png\",\"contentUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2024\\\/12\\\/image-20.png\",\"width\":861,\"height\":362},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/leds-inteligentes\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"LEDS INTELIGENTES\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#website\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/\",\"name\":\"Proyectos con Arduino.\",\"description\":\"Blog de proyectos de Arduino de alumnos de la URJC\",\"publisher\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#organization\",\"name\":\"Universidad Rey Juan Carlos\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2022\\\/05\\\/logourjc-1.jpg\",\"contentUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2022\\\/05\\\/logourjc-1.jpg\",\"width\":745,\"height\":288,\"caption\":\"Universidad Rey Juan Carlos\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#\\\/schema\\\/person\\\/c85f594903a6e5757ff27346c842be74\",\"name\":\"dse2425g05\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b15256afd84937d31d0e36ff299bf8ccfaf4ec6463a91ce2335e5004c5af6167?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b15256afd84937d31d0e36ff299bf8ccfaf4ec6463a91ce2335e5004c5af6167?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b15256afd84937d31d0e36ff299bf8ccfaf4ec6463a91ce2335e5004c5af6167?s=96&d=mm&r=g\",\"caption\":\"dse2425g05\"},\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/author\\\/dse2425g05\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"LEDS INTELIGENTES - Proyectos con Arduino.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blogs.etsii.urjc.es\/dseytr\/leds-inteligentes\/","og_locale":"es_ES","og_type":"article","og_title":"LEDS INTELIGENTES - Proyectos con Arduino.","og_description":"Proyecto para la Pr\u00e1ctica 2 de la asignatura de Dise\u00f1o de Sistemas Empotrados. \u00cdndice: Introducci\u00f3n: A lo largo de este blog explicaremos diferentes apartados y caracter\u00edsticas de nuestro trabajo de Sistemas Empotrados, que para&#46;&#46;&#46;","og_url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/leds-inteligentes\/","og_site_name":"Proyectos con Arduino.","article_published_time":"2024-12-20T21:41:29+00:00","article_modified_time":"2024-12-20T21:41:31+00:00","og_image":[{"width":861,"height":362,"url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/12\/image-20.png","type":"image\/png"}],"author":"dse2425g05","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"dse2425g05","Tiempo de lectura":"18 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/leds-inteligentes\/#article","isPartOf":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/leds-inteligentes\/"},"author":{"name":"dse2425g05","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#\/schema\/person\/c85f594903a6e5757ff27346c842be74"},"headline":"LEDS INTELIGENTES","datePublished":"2024-12-20T21:41:29+00:00","dateModified":"2024-12-20T21:41:31+00:00","mainEntityOfPage":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/leds-inteligentes\/"},"wordCount":1811,"commentCount":0,"publisher":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#organization"},"image":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/leds-inteligentes\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/12\/image-20.png","keywords":["Arduino","DSE GIC Mostoles 2024-25"],"articleSection":["Proyectos"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blogs.etsii.urjc.es\/dseytr\/leds-inteligentes\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/leds-inteligentes\/","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/leds-inteligentes\/","name":"LEDS INTELIGENTES - Proyectos con Arduino.","isPartOf":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/leds-inteligentes\/#primaryimage"},"image":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/leds-inteligentes\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/12\/image-20.png","datePublished":"2024-12-20T21:41:29+00:00","dateModified":"2024-12-20T21:41:31+00:00","breadcrumb":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/leds-inteligentes\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blogs.etsii.urjc.es\/dseytr\/leds-inteligentes\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/leds-inteligentes\/#primaryimage","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/12\/image-20.png","contentUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2024\/12\/image-20.png","width":861,"height":362},{"@type":"BreadcrumbList","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/leds-inteligentes\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/blogs.etsii.urjc.es\/dseytr\/"},{"@type":"ListItem","position":2,"name":"LEDS INTELIGENTES"}]},{"@type":"WebSite","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#website","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/","name":"Proyectos con Arduino.","description":"Blog de proyectos de Arduino de alumnos de la URJC","publisher":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blogs.etsii.urjc.es\/dseytr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#organization","name":"Universidad Rey Juan Carlos","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#\/schema\/logo\/image\/","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/05\/logourjc-1.jpg","contentUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/05\/logourjc-1.jpg","width":745,"height":288,"caption":"Universidad Rey Juan Carlos"},"image":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#\/schema\/person\/c85f594903a6e5757ff27346c842be74","name":"dse2425g05","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/b15256afd84937d31d0e36ff299bf8ccfaf4ec6463a91ce2335e5004c5af6167?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/b15256afd84937d31d0e36ff299bf8ccfaf4ec6463a91ce2335e5004c5af6167?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b15256afd84937d31d0e36ff299bf8ccfaf4ec6463a91ce2335e5004c5af6167?s=96&d=mm&r=g","caption":"dse2425g05"},"url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/author\/dse2425g05\/"}]}},"_links":{"self":[{"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts\/9032","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/users\/254"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/comments?post=9032"}],"version-history":[{"count":13,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts\/9032\/revisions"}],"predecessor-version":[{"id":9458,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts\/9032\/revisions\/9458"}],"wp:attachment":[{"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/media?parent=9032"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/categories?post=9032"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/tags?post=9032"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}