{"id":3851,"date":"2021-05-14T08:38:11","date_gmt":"2021-05-14T08:38:11","guid":{"rendered":"https:\/\/blogs.etsii.urjc.es\/dseytr\/?p=3851"},"modified":"2021-05-14T08:56:21","modified_gmt":"2021-05-14T08:56:21","slug":"rct-reloj-calendario-termometro","status":"publish","type":"post","link":"https:\/\/blogs.etsii.urjc.es\/dseytr\/rct-reloj-calendario-termometro\/","title":{"rendered":"RCT (Reloj-Calendario-Term\u00f3metro )"},"content":{"rendered":"\n<h2 class=\"has-text-align-left wp-block-heading\"><strong>Autores<\/strong>&nbsp;<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Anthony Oswaldo Pucha&nbsp;<\/li><\/ul>\n\n\n\n<ul class=\"wp-block-list\"><li>Eduardo Villaverde&nbsp;<\/li><\/ul>\n\n\n\n<ul class=\"wp-block-list\"><li>Pablo Rodea&nbsp;<\/li><\/ul>\n\n\n\n<ul class=\"wp-block-list\"><li>Marina&nbsp;Fern\u00e1ndez&nbsp;<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Objetivo<\/strong>&nbsp;<\/h2>\n\n\n\n<p>El objetivo de nuestro grupo es crear un sistema empotrado con Arduino.&nbsp;El proyecto consiste en la creaci\u00f3n de un reloj con una funcionalidad superior a&nbsp;lo que har\u00eda un&nbsp;reloj&nbsp;est\u00e1ndar, pudiendo&nbsp;programar m\u00faltiples alarmas con diversos niveles de prioridad, indicadores LED de estos&nbsp;niveles,&nbsp;as\u00ed como&nbsp;la posibilidad&nbsp;de&nbsp;gestionar&nbsp;estas alarmas&nbsp;y un&nbsp;sensor de temperatura.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Materiales<\/strong>&nbsp;<\/h2>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><tbody><tr><td>CIRCUITO&nbsp;INTEGRADO MOD DS1307&nbsp;PbF<\/td><td>2,40&nbsp;\u20ac<\/td><\/tr><tr><td>ZUMBADOR C. IMPRESO MINI DC 3-16V<\/td><td>2,40 \u20ac&nbsp;<\/td><\/tr><tr><td>CABLES PROTOBOARD M-M 65<\/td><td>2,48 \u20ac&nbsp;<\/td><\/tr><tr><td>MODULO TEMPERATURA \/ HUMEDAD<\/td><td>3,31 \u20ac&nbsp;<\/td><\/tr><tr><td>MODULO TZT PANTALLA 1.77\u2019\u2019 TFT SPI<\/td><td>7,44 \u20ac&nbsp;<\/td><\/tr><tr><td>Caja<\/td><td>2.99&nbsp;<\/td><\/tr><tr><td><strong>PRECIO TOTAL<\/strong><\/td><td><strong>21,02 \u20ac&nbsp;<\/strong><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Montaje&nbsp;y hardware<\/strong>&nbsp;<\/h2>\n\n\n\n<p>El montaje del dispositivo sigue el siguiente esquema hecho con Virtual&nbsp;Breadboard:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2021\/05\/diagrama-general.png\"><img loading=\"lazy\" decoding=\"async\" width=\"553\" height=\"745\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2021\/05\/diagrama-general.png\" alt=\"\" class=\"wp-image-3853\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2021\/05\/diagrama-general.png 553w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2021\/05\/diagrama-general-223x300.png 223w\" sizes=\"auto, (max-width: 553px) 100vw, 553px\" \/><\/a><\/figure>\n\n\n\n<p>Los actuadores y sensores de nuestro dispositivo son:&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Sensores:&nbsp;<ul><li>Sensor de temperatura: para tomar la temperatura ambiente.&nbsp;<\/li><li>Botones:&nbsp;<ul><li>Bot\u00f3n&nbsp;1: para el poner una alarma, cambiar la unidad de la alarma cuando la estamos creando y salir del&nbsp;men\u00fa&nbsp;que muestras las alarmas.&nbsp;<\/li><li>Bot\u00f3n&nbsp;2: para aumentar la alarma y para ir al&nbsp;men\u00fa&nbsp;que muestra las alarmas creadas.&nbsp;<\/li><li>Bot\u00f3n&nbsp;3: para decrementar la alarma y para resetear las alarmas en el&nbsp;men\u00fa&nbsp;que muestra las alarmas.&nbsp;<\/li><\/ul><\/li><\/ul><\/li><li>Actuadores:&nbsp;<ul><li>Leds: 3 leds que brillaran cuando suene una alarma dependiendo de la prioridad de esta.&nbsp;<\/li><li>Un&nbsp;buzzer: para crear la respuesta auditiva de la alarma.&nbsp;<\/li><li>Una pantalla: para mostrar tanto el&nbsp;d\u00eda, la hora y la temperatura como para mostrar y configurar las alarmas.&nbsp;<\/li><\/ul><\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2021\/05\/diagrama-parte-de-abajo.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1019\" height=\"736\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2021\/05\/diagrama-parte-de-abajo.png\" alt=\"\" class=\"wp-image-3855\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2021\/05\/diagrama-parte-de-abajo.png 1019w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2021\/05\/diagrama-parte-de-abajo-300x217.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2021\/05\/diagrama-parte-de-abajo-768x555.png 768w\" sizes=\"auto, (max-width: 1019px) 100vw, 1019px\" \/><\/a><\/figure>\n\n\n\n<p>Las conexiones necesarias para cada elemento se han hecho de la siguiente manera:&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>El sensor de temperatura necesita una entrada&nbsp;anal\u00f3gica&nbsp;que en nuestro caso ha sido el pin A0.&nbsp;<\/li><li>Los botones necesitan un pin de entrada&nbsp;cada uno&nbsp;que han sido el&nbsp;6, 3 y 2&nbsp;para los botones de poner alarma, aumentar y decrementar respectivamente.&nbsp;<\/li><li>Hemos usado los pines 5,7 y 4 para&nbsp;los leds de prioridad baja, media y alta respectivamente&nbsp;adem\u00e1s&nbsp;de conectarlos a tierra con una resistencia de 220\u03a9 cada uno para controlar el paso de intensidad.&nbsp;<\/li><li>Para la alarma se necesita un pin de salida para mandarle la se\u00f1al de activaci\u00f3n, nosotros hemos usado el 12.&nbsp;<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2021\/05\/diagrama-pantalla.png\"><img loading=\"lazy\" decoding=\"async\" width=\"885\" height=\"671\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2021\/05\/diagrama-pantalla.png\" alt=\"\" class=\"wp-image-3857\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2021\/05\/diagrama-pantalla.png 885w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2021\/05\/diagrama-pantalla-300x227.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2021\/05\/diagrama-pantalla-768x582.png 768w\" sizes=\"auto, (max-width: 885px) 100vw, 885px\" \/><\/a><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>Para la pantalla se necesitan 5 conexiones para su control y el paso de datos adem\u00e1s de la conexi\u00f3n con tierra y con la fuente de 5 y 3.3 V. Para el control y el paso de datos hemos usado los pines de salida 8,9,10 y 11 con una resistencia de 1KOhms para controlar el paso de intensidad y el 13, el cual tiene resistencia ya de por si para el reloj.&nbsp;<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Software<\/strong>&nbsp;<\/h2>\n\n\n\n<p><span style=\"text-decoration: underline\">Secci\u00f3n Declaraci\u00f3n de variables y funciones:&nbsp;<\/span><\/p>\n\n\n\n<p>A parte de la declaraci\u00f3n de los pines, los aspectos m\u00e1s importantes a destacar son lo&nbsp;siguiente.&nbsp;<\/p>\n\n\n\n<p>Se ha definido una clase&nbsp;<strong>Alarma&nbsp;<\/strong>que nos permitir\u00e1&nbsp;manejar las alarmas con facilidad. Esta clase tiene una serie de m\u00e9todos:&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>El&nbsp;<strong>constructor&nbsp;<\/strong>que inicializar\u00e1 los atributos a \u20131, que indica que a\u00fan no ha sido puesta.&nbsp;<\/li><li>El m\u00e9todo&nbsp;<strong>setAlarma&nbsp;<\/strong>que pondr\u00e1 una alarma seg\u00fan los par\u00e1metros que recibe d\u00eda, mes, hora, minuto y prioridad&nbsp;<\/li><li>El m\u00e9todo&nbsp;<strong>comprobar&nbsp;<\/strong>devuelve un valor booleano si la alarma tiene que sonar&nbsp;si&nbsp;o no.&nbsp;<\/li><li>El m\u00e9todo&nbsp;<strong>resetAlarma&nbsp;<\/strong>pone los atributos de la alarma a \u20131, es decir, se resetea.&nbsp;<\/li><li>El m\u00e9todo&nbsp;<strong>isSet&nbsp;<\/strong>que comprueba si una alarma ha sido puesta o no, para ello&nbsp;compruba&nbsp;si los atributos son distintos a \u20131&nbsp;&nbsp;<\/li><\/ul>\n\n\n\n<p>Se ha limitado el n\u00famero de alarmas que se pueden&nbsp;guardar a 3, porque son las que caben en pantalla. Esto se puede cambiar en la constante&nbsp;<strong>numAlarmas<\/strong>, pero se deber\u00eda tener en cuenta la pantalla.&nbsp;<\/p>\n\n\n\n<p>Aunque se haya limitado el n\u00famero de alarmas que se&nbsp;pueden&nbsp;guardar,&nbsp;al crear una alarma m\u00e1s, se reutiliza en el array de alarmas. Para ello, llevamos la cuenta en&nbsp;<strong>alarmaActual.<\/strong>&nbsp;&nbsp;<\/p>\n\n\n\n<p>La&nbsp;<strong>variable i<\/strong>&nbsp;es un valor que empieza en el 0 y termina en el 4, seg\u00fan las veces que se pulse el bot\u00f3n 1.&nbsp;Puede tener 5 valores, que indica en qu\u00e9 par\u00e1metro de la alarma nos encontramos, es decir, que el bot\u00f3n 1 sirve para moverse entre los&nbsp;par\u00e1metros&nbsp;de la alarma a poner.&nbsp;En orden:&nbsp;0=hora,&nbsp;1=minutos,&nbsp;2=d\u00eda,&nbsp;3=mes,&nbsp;4=prioridad.&nbsp;<\/p>\n\n\n\n<p>La declaraci\u00f3n de las variables para el estado de los botones 1 y 2,&nbsp;<strong>buttonState1 y buttonState2<\/strong>,&nbsp;deben ser&nbsp;<strong>volatile,<\/strong>&nbsp;que&nbsp;nos permitir\u00e1 cambiar&nbsp;los estados cuando ocurra una interrupci\u00f3n accionada&nbsp;al pulsar cualquiera de los dos&nbsp;botones.&nbsp;<\/p>\n\n\n\n<p><span style=\"text-decoration: underline\">Secci\u00f3n&nbsp;Setup:&nbsp;<\/span><\/p>\n\n\n\n<p>A parte de inicializar lo que se va a mostrar por pantalla, establecer la fecha del reloj (simulado con una librer\u00eda), y establecer el modo de los pines; lo m\u00e1s importante a destacar es lo siguiente.&nbsp;<\/p>\n\n\n\n<p>Para asociar una interrupci\u00f3n con los botones 1 y 2, hay que usar los pines digitales 2 y 3 porque son los pines digitales que permiten las interrupciones en Arduino UNO.&nbsp;Esta asociaci\u00f3n se realiza con&nbsp;la siguiente instrucci\u00f3n:&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>attachInterrupt<\/strong>(digitalPinToInterrupt(PIN),&nbsp;metodo,&nbsp;modo)&nbsp;<\/li><\/ul>\n\n\n\n<p>Recibe el pin&nbsp;de los botones, un m\u00e9todo que se ejecutar\u00e1 cuando ocurra la interrupci\u00f3n, y el modo en el que se activar\u00e1 la interrupci\u00f3n.&nbsp;<\/p>\n\n\n\n<p>Por ejemplo,&nbsp;en el&nbsp;caso&nbsp;del bot\u00f3n 1:&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>La funci\u00f3n&nbsp;<strong>digitalPinToInterupt&nbsp;<\/strong>recibe la constante&nbsp;<strong>buttonPin1,&nbsp;<\/strong>que es el<strong>&nbsp;<\/strong>pin 2&nbsp;<\/li><li>El m\u00e9todo que se ejecutar\u00e1 cuando ocurra la interrupci\u00f3n es&nbsp;<strong>toggleBtn1,<\/strong>&nbsp;que cambia el valor de&nbsp;<strong>buttonState1&nbsp;<\/strong>a HIGH&nbsp;<\/li><li>El modo es&nbsp;<strong>CHANGE,<\/strong>&nbsp;es decir,&nbsp;cuando el pin de los botones&nbsp;cambie&nbsp;de valor, la interrupci\u00f3n se activar\u00e1, y esto ocurre cuando pulsamos el bot\u00f3n.&nbsp;<\/li><\/ul>\n\n\n\n<p><span style=\"text-decoration: underline\">Secci\u00f3n&nbsp;Loop:&nbsp;<\/span><\/p>\n\n\n\n<p>La raz\u00f3n de utilizar interrupciones es porque es m\u00e1s sencillo que tener que pulsar&nbsp;los botones justo&nbsp;cuando se est\u00e1 ejecutando la lectura de los botones. De esta forma, da igual el momento que cuando pulsemos un bot\u00f3n el estado cambiar\u00e1 y entraremos en el men\u00fa correspondiente.&nbsp;<\/p>\n\n\n\n<p>En la pantalla hay tres men\u00fas:&nbsp;<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Men\u00fa&nbsp;<strong>\u2018inicial\u2019&nbsp;<\/strong>donde se muestra fecha, hora y temperatura. Se mostrar\u00e1 siempre cuando&nbsp;<strong>buttonState1 y buttonState2 son LOW<\/strong>&nbsp;<\/li><\/ol>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\"><li>Men\u00fa&nbsp;<strong>\u2018poner alarma\u2019&nbsp;<\/strong>donde se muestra los par\u00e1metros&nbsp;que necesita una alarma: d\u00eda, mes, horas, minutos, nivel de prioridad. Entraremos cuando&nbsp;<strong>buttonState1 es HIGH<\/strong>&nbsp;<\/li><\/ol>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\"><li>Men\u00fa&nbsp;<strong>\u2018alarmas\u2019<\/strong>&nbsp;donde se muestra el listado de alarmas creadas y no creadas. Entraremos cuando&nbsp;<strong>buttonState2 es HIGH<\/strong>&nbsp;<\/li><\/ol>\n\n\n\n<p>La primera sentencia&nbsp;<strong>IF<\/strong>&nbsp;coincide con la entrada al men\u00fa de&nbsp;<strong>\u2018poner alarma\u2019.<\/strong>&nbsp;&nbsp;<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Imprimiremos por pantalla los valores iniciales de los par\u00e1metros a poner en la alarma.&nbsp;<\/li><\/ol>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\"><li>Entramos en un bucle del cu\u00e1l saldremos cuando&nbsp;<strong>i == 4<\/strong>, es decir, cuando hayamos pasado por todos los par\u00e1metros.&nbsp;Mientras tanto,&nbsp;leemos el bot\u00f3n 1 que ir\u00e1 aumentado la&nbsp;<strong>variable i<\/strong>.&nbsp;<\/li><\/ol>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\"><li>En el mismo bucle esperamos a la activaci\u00f3n de uno de los botones 2 y 3. Cuando uno de los dos es accionado, entramos en un bucle&nbsp;donde&nbsp;aumentaremos&nbsp;o&nbsp;disminuiremos, seg\u00fan&nbsp;<strong>buttonState2 y buttonState3,<\/strong>&nbsp;el par\u00e1metro indicado por la&nbsp;<strong>variable i.<\/strong><ul><li>&nbsp;Cabe destacar que cuando se encuentra en el par\u00e1metro de prioridad, seg\u00fan el nivel de prioridad, se le enciende un LED al usuario.&nbsp;&nbsp;<\/li><\/ul><\/li><\/ol>\n\n\n\n<ol class=\"wp-block-list\" start=\"4\"><li>Cualquier cambio en los par\u00e1metros es mostrado por pantalla.&nbsp;<\/li><\/ol>\n\n\n\n<p>La segunda sentencia<strong>&nbsp;IF<\/strong>&nbsp;coincide con la entrada al men\u00fa de&nbsp;<strong>\u2018alarmas\u2019.<\/strong>&nbsp;<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Imprimimos por pantalla el t\u00edtulo \u2018ALARMAS\u2019.&nbsp;<\/li><\/ol>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\"><li>Entramos en un&nbsp;bucle&nbsp;que&nbsp;recorrer\u00e1&nbsp;todas las alarmas guardadas.&nbsp;Creamos&nbsp;un&nbsp;String&nbsp;<strong>alarmaStr&nbsp;<\/strong>que tendr\u00e1&nbsp;un&nbsp;formato&nbsp;seg\u00fan&nbsp;si&nbsp;la&nbsp;alarma&nbsp;est\u00e1 puesta o no, para ello, empleamos el m\u00e9todo&nbsp;<strong>isSet<\/strong>.&nbsp;<ul><li>El bucle sirve para imprimir&nbsp;por pantalla&nbsp;cada&nbsp;alarma&nbsp;del array.&nbsp;<\/li><\/ul><\/li><\/ol>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\"><li>En&nbsp;otro bucle esperamos&nbsp;las acciones de los botones 1 y 3. Con&nbsp;<strong>buttonPin3&nbsp;<\/strong>hacemos un&nbsp;<strong>reset&nbsp;<\/strong>de todas las alarmas&nbsp;y salimos,&nbsp;y con&nbsp;<strong>buttonPin1<\/strong>&nbsp;salimos&nbsp;sin hacer un&nbsp;reset&nbsp;de las alarmas.&nbsp;<\/li><\/ol>\n\n\n\n<p>Cuando no se entra en ninguna de estas dos sentencias,&nbsp;nos encontramos en el men\u00fa&nbsp;<strong>\u2018inicial\u2019,&nbsp;<\/strong>que simplemente muestra por pantalla fecha, hora y temperatura.&nbsp;<\/p>\n\n\n\n<p>Adem\u00e1s, en cada iteraci\u00f3n del&nbsp;loop, se comprueba si alguna de las alarmas tiene que sonar.&nbsp;<\/p>\n\n\n\n<p>Para ello,&nbsp;entramos en un bucle&nbsp;que recorre todas nuestras alarmas,&nbsp;y comprobamos los&nbsp;atributos de&nbsp;cada&nbsp;una de ellas&nbsp;con los&nbsp;datos&nbsp;actuales. Si coinciden, se activa&nbsp;<strong>buzzerPin&nbsp;<\/strong>de forma intermitente.&nbsp;Adem\u00e1s,&nbsp;el LED correspondiente a la prioridad asignada a&nbsp;cada&nbsp;alarma&nbsp;lucir\u00e1.&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Alarma {\n  public: int dia;\n  public: int mes;\n  public: int hora;\n  public: int minuto;\n  public: int prioridad;\n\n  public:\n    Alarma () {\n      dia = -1;\n      mes = -1;\n      hora = -1;\n      minuto = -1;\n      prioridad = -1;\n    }\n    void setAlarma (int d, int me, int h, int mi, int p) {\n      dia = d;\n      mes = me;\n      hora = h;\n      minuto = mi;\n      prioridad = p;\n    }\n\n    boolean comprobar (int d, int m, int hr, int mn) {\n      return d == dia &amp;&amp; m == mes &amp;&amp; hr == hora &amp;&amp; mn == minuto;\n    }\n\n    int getDia() {\n      return dia;\n    }\n\n    int getMes() {\n      return mes;\n    }\n\n    int getHora() {\n      return hora;\n    }\n\n    int getMinuto() {\n      return minuto;\n    }\n\n    int getPrioridad() {\n      return prioridad;\n    }\n\n    void resetAlarma () {\n      dia = -1;\n      mes = -1;\n      hora = -1;\n      minuto = -1;\n      prioridad = -1;\n    }\n\n    boolean isSet () {\n      return dia != -1 &amp;&amp; mes != -1 &amp;&amp; hora != -1 &amp;&amp; minuto != -1 &amp;&amp; prioridad != -1;\n    }\n};\n\n\n#include &lt;TimeLib.h&gt;\n\n\/\/ Sensor Temp\n#include &lt;DHT.h&gt;\n#include &lt;DHT_U.h&gt;\n\n#define DHTPIN A0\n#define DHTTYPE DHT11\n\nDHT dht(DHTPIN, DHTTYPE);\n\nfloat tempC;\n\n\/\/ Pantalla\n#include &lt;Adafruit_GFX.h&gt;\n#include &lt;Adafruit_ST7735.h&gt;\n#include &lt;SPI.h&gt;\n\n#define TFT_CS    10\n#define TFT_RST   8\n#define TFT_DC    9\n\n#define TFT_SCLK 13\n#define TFT_MOSI 11\n\nAdafruit_ST7735 tft = Adafruit_ST7735(TFT_CS,  TFT_DC, TFT_RST);\n\/\/Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);\n\n#define COLOR1 ST7735_WHITE\n#define COLOR2 ST7735_BLACK\n\n\/\/ Pines\nconst int ledPin1 = 5; \/\/ Baja\nconst int ledPin2 = 7; \/\/ Media\nconst int ledPin3 = 4; \/\/ Alta\n\nconst int buzzerPin = 12;\n\nconst int buttonPin1 = 2;\nconst int buttonPin2 = 3;\nconst int buttonPin3 = 6;\n\n\/\/ Variables\nconst int numAlarmas = 3;\nint alarmaActual = -1;\nAlarma alarmas&#091;numAlarmas];\n\nvolatile int buttonState1 = 0;\nvolatile int buttonState2 = 0;\nint buttonState3 = 0;\n\nint i = 0;\n\nString diaSemana&#091;7] = { \"LUNES\", \"MARTES\", \"MIERCOLES\", \"JUEVES\", \"VIERNES\", \"SABADO\", \"DOMINGO\" };\n\n\n\/\/ Variables alarma\nint hr = 0;\nint mn = 0;\nint d;\nint m;\nint p = 0; \/\/ 0: Baja, 1: Media, 2: Alta\n\nvoid imprimir(int textSize, int x, int y, String cadena) {\n  tft.setTextSize(textSize);\n  tft.setCursor(x, y);\n  tft.setTextColor(COLOR1, COLOR2);\n  tft.print(cadena);\n}\n\nString formatDigit(int digit) {\n  String resultado = String(digit);\n  if (digit &lt; 10) {\n    resultado = \"0\" + resultado;\n  }\n  return resultado;\n}\n\nvoid toggleBtn1 () {\n  buttonState1 = HIGH;\n}\nvoid toggleBtn2 () {\n  buttonState2 = HIGH;\n}\n\nvoid setup(void) {\n  Serial.begin(9600);\n  tft.initR(INITR_BLACKTAB);\n  tft.setRotation(1);\n  tft.fillScreen(COLOR2);\n  tft.drawRect(0, 0, 160, 128, COLOR1);\n  setTime(01, 00, 0, 4, 5, 2021); \/\/hr, min, sec, day, month, year\n  d = day();\n  m = month();\n  pinMode(ledPin1, OUTPUT);\n  pinMode(ledPin2, OUTPUT);\n  pinMode(ledPin3, OUTPUT);\n  pinMode(buttonPin1, INPUT);\n  attachInterrupt(digitalPinToInterrupt(buttonPin1), toggleBtn1, CHANGE);\n  pinMode(buttonPin2, INPUT);\n  attachInterrupt(digitalPinToInterrupt(buttonPin2), toggleBtn2, CHANGE);\n  pinMode(buttonPin3, INPUT);\n  pinMode(buzzerPin, INPUT);\n\n  dht.begin();\n}\n\nvoid loop() {\n  if (buttonState1 == HIGH) {\n    alarmaActual = (alarmaActual + 1) % numAlarmas;\n\n    \/\/\/\n    tft.fillScreen(COLOR2);\n    tft.drawRect(0, 0, 160, 128, COLOR1);\n    String fecha = formatDigit(d) +  \"\/\" + formatDigit(m) + \"\/\" + String(year());\n    imprimir(1, 12, 4, fecha);\n    String hora = formatDigit(hr) +  \":\" + formatDigit(mn);\n    imprimir(3, 12, 4 + 24, hora);\n    String prioridad = \"Nivel de Prioridad:\" + String(p);\n    imprimir(1, 12, 105, prioridad);\n    \/\/\/\n    Serial.println(\"SET ALARM MODE\");\n    while (true) {\n      if (digitalRead(buttonPin1)) {\n        delay(250);\n\n        if (i == 4) {\n          tft.fillScreen(COLOR2);\n          tft.drawRect(0, 0, 160, 128, COLOR1);\n          i = 0;\n          alarmas&#091;alarmaActual].setAlarma(d, m, hr, mn, p);\n          Serial.println(\"EXIT\");\n          hr = 0;\n          mn = 0;\n          d = day();\n          m = month();\n          p = 0;\n          digitalWrite(ledPin1, LOW);\n          digitalWrite(ledPin2, LOW);\n          digitalWrite(ledPin3, LOW);\n          break;\n        } else {\n          i++;\n          if (i == 4) {\n            digitalWrite(ledPin1, HIGH);\n          }\n        }\n      }\n      buttonState2 = digitalRead(buttonPin2);\n      buttonState3 = digitalRead(buttonPin3);\n      while (buttonState2 == HIGH || buttonState3 == HIGH) {\n        delay(250);\n\n        if (i == 0) {\n          Serial.print(\"EDIT HOUR: \");\n          if (buttonState2) {\n            hr = ((hr + 1) % 24);\n          }\n          if (buttonState3) {\n            if (hr == 0) {\n              hr = 24;\n            }\n            hr = ((hr - 1) % 24);\n          }\n          Serial.println(hr);\n\n        } else if (i == 1) {\n          Serial.print(\"EDIT MINUTES: \");\n          if (buttonState2) {\n            mn = ((mn + 1) % 60);\n          }\n          if (buttonState3) {\n            if (mn == 0) {\n              mn = 60;\n            }\n            mn = ((mn - 1) % 60);\n          }\n          Serial.println(mn);\n\n        } else if (i == 2) {\n          Serial.print(\"EDIT DAY: \");\n          if (buttonState2) {\n            d = ((d + 1) % 32);\n            if (d == 0) {\n              d = 1;\n            }\n          }\n          if (buttonState3) {\n            if (d == 1) {\n              d = 32;\n            }\n            d = ((d - 1) % 32);\n          }\n          Serial.println(d);\n        } else if (i == 3) {\n          Serial.print(\"EDIT MONTH: \");\n          if (buttonState2) {\n            m = ((m + 1) % 13);\n            if (m == 0) {\n              m = 1;\n            }\n          }\n          if (buttonState3) {\n            if (m == 1) {\n              m = 13;\n            }\n            m = ((m - 1) % 13);\n          }\n          Serial.println(m);\n        } else {\n          Serial.print(\"EDIT PRIORITY: \");\n\n          if (buttonState2) {\n            p = ((p + 1) % 3);\n          }\n          if (buttonState3) {\n            if (p == 0) {\n              p = 3;\n            }\n            p = ((p - 1) % 3);\n          }\n          if (p == 0) {\n            digitalWrite(ledPin1, HIGH);\n            digitalWrite(ledPin2, LOW);\n            digitalWrite(ledPin3, LOW);\n          } else if (p == 1) {\n            digitalWrite(ledPin2, HIGH);\n            digitalWrite(ledPin1, LOW);\n            digitalWrite(ledPin3, LOW);\n          } else {\n            digitalWrite(ledPin3, HIGH);\n            digitalWrite(ledPin2, LOW);\n            digitalWrite(ledPin1, LOW);\n          }\n          Serial.println(p);\n        }\n        buttonState2 = LOW;\n        buttonState3 = LOW;\n        \/\/\/\n        String fecha = formatDigit(d) +  \"\/\" + formatDigit(m) + \"\/\" + String(year());\n        imprimir(1, 12, 4, fecha);\n        String hora = formatDigit(hr) +  \":\" + formatDigit(mn);\n        imprimir(3, 12, 4 + 24, hora);\n        String prioridad = \"Nivel de Prioridad:\" + String(p);\n        imprimir(1, 12, 105, prioridad);\n        delay(100);\n        \/\/\/\n      }\n    }\n    buttonState1 = LOW;\n  }\n  if (buttonState2 == HIGH) {\n    Serial.print(\"ALARMAS\");\n    tft.fillScreen(COLOR2);\n    tft.drawRect(0, 0, 160, 128, COLOR1);\n    imprimir(1, 12, 4, \"Alarmas\");\n    int y = 28;\n    for (int i = 0; i &lt; numAlarmas; i++) {\n      Alarma alarma = alarmas&#091;i];\n      String alarmaStr;\n      if (alarma.isSet()) {\n        String fecha = formatDigit(alarma.getDia()) + \"\/\" + formatDigit(alarma.getMes());\n        String hora = formatDigit(alarma.getHora()) + \":\" + formatDigit(alarma.getMinuto());\n        alarmaStr = fecha + \" \" + hora + \" \" + String(alarma.getPrioridad());\n      } else {\n        alarmaStr = \"**NO HAY ALARMA**\";\n      }\n      imprimir(1, 12, y, alarmaStr);\n      y = y + 30;\n    }\n    imprimir(1, 12, 108, \"Btn1:Exit - Btn 3:Reset\");\n    while (true) {\n      if (digitalRead(buttonPin3)) {\n        tft.fillScreen(COLOR2);\n        tft.drawRect(0, 0, 160, 128, COLOR1);\n        for (int i = 0; i &lt; numAlarmas; i++) {\n          alarmas&#091;i].resetAlarma();\n        }\n        Serial.print(\"RESET ALL\");\n        break;\n      }\n      if (digitalRead(buttonPin1)) {\n        tft.fillScreen(COLOR2);\n        tft.drawRect(0, 0, 160, 128, COLOR1);\n        Serial.print(\"EXIT\");\n        delay(150);\n        buttonState1 = LOW;\n        break;\n      }\n    }\n    buttonState2 = LOW;\n  }\n  \/\/\/\n  String fecha = diaSemana&#091;weekday()] + \" \" + formatDigit(day()) +  \"\/\" + formatDigit(month()) + \"\/\" + String(year());\n  imprimir(1, 12, 4, fecha);\n\n  String hora = formatDigit(hour()) +  \":\" + formatDigit(minute());\n  imprimir(3, 12, 4 + 24, hora);\n\n  tempC = dht.readTemperature();\n  String temperatura = \"Temp:\" + String(tempC) + \" C\";\n  imprimir(2, 12, 105, temperatura);\n  \/\/\/\n\n  \/\/ ALARMA - DURA 10 SECS\n  for (int i = 0; i &lt; numAlarmas; i++) {\n    if (alarmas&#091;i].comprobar(day(), month(), hour(), minute()) &amp;&amp; second() &lt;= 10) {\n      tone(buzzerPin, 1000);\n      delay(250);\n      noTone(buzzerPin);\n      int prioridad = alarmas&#091;i].getPrioridad();\n      if (prioridad == 0) {\n        digitalWrite(ledPin1, HIGH);\n        delay(250);\n        digitalWrite(ledPin1, LOW);\n      } else if (prioridad == 1) {\n        digitalWrite(ledPin2, HIGH);\n        delay(250);\n        digitalWrite(ledPin2, LOW);\n      } else {\n        digitalWrite(ledPin3, HIGH);\n        delay(250);\n        digitalWrite(ledPin3, LOW);\n      }\n    }\n  }\n  delay(500);\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>V\u00eddeo<\/strong><\/h2>\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=\"R-C-P  Arduino Uno\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/aIRMHW36v1o?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<h2 class=\"wp-block-heading\"><strong>Dificultades y Soluciones<\/strong>&nbsp;<\/h2>\n\n\n\n<p>En el proceso de&nbsp;realizaci\u00f3n&nbsp;del proyecto surgieron m\u00faltiples problemas, uno de ellos&nbsp;ocurri\u00f3&nbsp;con el reloj integrado.<\/p>\n\n\n\n<p>En primer lugar, el circuito integrado requer\u00eda un oscilador y una pila, lo que aumentaba el n\u00famero de pines a utilizar.&nbsp;Como no ten\u00edamos suficientes pines digitales despu\u00e9s de conectar pantalla, botones y&nbsp;LEDs, lo descartamos y usamos una librer\u00eda.&nbsp;<\/p>\n\n\n\n<p>Otro problema que nos encontramos y que sigue (en parte) ocurriendo es la mala calidad de la pantalla, la cual parpadea de forma intermitente y todos los&nbsp;colores que mostraba los mostraba degradados en un lado de la pantalla.&nbsp;&nbsp;<\/p>\n\n\n\n<p>Despu\u00e9s de hablar con el profesor, nos coment\u00f3&nbsp;que el tema de contraste igual podr\u00eda ser solucionado con el uso de otra librer\u00eda.&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Autores&nbsp; Anthony Oswaldo Pucha&nbsp; Eduardo Villaverde&nbsp; Pablo Rodea&nbsp; Marina&nbsp;Fern\u00e1ndez&nbsp; Objetivo&nbsp; El objetivo de nuestro grupo es crear un sistema empotrado con Arduino.&nbsp;El proyecto consiste en la creaci\u00f3n de un reloj con una funcionalidad superior&#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":3871,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-3851","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-proyectos"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>RCT (Reloj-Calendario-Term\u00f3metro ) - 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\/rct-reloj-calendario-termometro\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"RCT (Reloj-Calendario-Term\u00f3metro ) - Proyectos con Arduino.\" \/>\n<meta property=\"og:description\" content=\"Autores&nbsp; Anthony Oswaldo Pucha&nbsp; Eduardo Villaverde&nbsp; Pablo Rodea&nbsp; Marina&nbsp;Fern\u00e1ndez&nbsp; Objetivo&nbsp; El objetivo de nuestro grupo es crear un sistema empotrado con Arduino.&nbsp;El proyecto consiste en la creaci\u00f3n de un reloj con una funcionalidad superior&#046;&#046;&#046;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/rct-reloj-calendario-termometro\/\" \/>\n<meta property=\"og:site_name\" content=\"Proyectos con Arduino.\" \/>\n<meta property=\"article:published_time\" content=\"2021-05-14T08:38:11+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-05-14T08:56:21+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2021\/05\/diseno_setr.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1680\" \/>\n\t<meta property=\"og:image:height\" content=\"752\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Administrador de la red\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Administrador de la red\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 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\\\/rct-reloj-calendario-termometro\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/rct-reloj-calendario-termometro\\\/\"},\"author\":{\"name\":\"Administrador de la red\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#\\\/schema\\\/person\\\/bdc38fea664f13638d2a51f4d2fc7211\"},\"headline\":\"RCT (Reloj-Calendario-Term\u00f3metro )\",\"datePublished\":\"2021-05-14T08:38:11+00:00\",\"dateModified\":\"2021-05-14T08:56:21+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/rct-reloj-calendario-termometro\\\/\"},\"wordCount\":1783,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/rct-reloj-calendario-termometro\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2021\\\/05\\\/diseno_setr.jpg\",\"articleSection\":[\"Proyectos\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/rct-reloj-calendario-termometro\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/rct-reloj-calendario-termometro\\\/\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/rct-reloj-calendario-termometro\\\/\",\"name\":\"RCT (Reloj-Calendario-Term\u00f3metro ) - Proyectos con Arduino.\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/rct-reloj-calendario-termometro\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/rct-reloj-calendario-termometro\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2021\\\/05\\\/diseno_setr.jpg\",\"datePublished\":\"2021-05-14T08:38:11+00:00\",\"dateModified\":\"2021-05-14T08:56:21+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/rct-reloj-calendario-termometro\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/rct-reloj-calendario-termometro\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/rct-reloj-calendario-termometro\\\/#primaryimage\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2021\\\/05\\\/diseno_setr.jpg\",\"contentUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2021\\\/05\\\/diseno_setr.jpg\",\"width\":1680,\"height\":752},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/rct-reloj-calendario-termometro\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"RCT (Reloj-Calendario-Term\u00f3metro )\"}]},{\"@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\\\/bdc38fea664f13638d2a51f4d2fc7211\",\"name\":\"Administrador de la red\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e8e366128f81a82735b0b00fe6d280414b4bad087e380fa9fee9694454b8a6fa?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e8e366128f81a82735b0b00fe6d280414b4bad087e380fa9fee9694454b8a6fa?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e8e366128f81a82735b0b00fe6d280414b4bad087e380fa9fee9694454b8a6fa?s=96&d=mm&r=g\",\"caption\":\"Administrador de la red\"},\"sameAs\":[\"https:\\\/\\\/blogs.etsii.urjc.es\"],\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/author\\\/etsiiadmin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"RCT (Reloj-Calendario-Term\u00f3metro ) - 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\/rct-reloj-calendario-termometro\/","og_locale":"es_ES","og_type":"article","og_title":"RCT (Reloj-Calendario-Term\u00f3metro ) - Proyectos con Arduino.","og_description":"Autores&nbsp; Anthony Oswaldo Pucha&nbsp; Eduardo Villaverde&nbsp; Pablo Rodea&nbsp; Marina&nbsp;Fern\u00e1ndez&nbsp; Objetivo&nbsp; El objetivo de nuestro grupo es crear un sistema empotrado con Arduino.&nbsp;El proyecto consiste en la creaci\u00f3n de un reloj con una funcionalidad superior&#46;&#46;&#46;","og_url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/rct-reloj-calendario-termometro\/","og_site_name":"Proyectos con Arduino.","article_published_time":"2021-05-14T08:38:11+00:00","article_modified_time":"2021-05-14T08:56:21+00:00","og_image":[{"width":1680,"height":752,"url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2021\/05\/diseno_setr.jpg","type":"image\/jpeg"}],"author":"Administrador de la red","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Administrador de la red","Tiempo de lectura":"12 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/rct-reloj-calendario-termometro\/#article","isPartOf":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/rct-reloj-calendario-termometro\/"},"author":{"name":"Administrador de la red","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#\/schema\/person\/bdc38fea664f13638d2a51f4d2fc7211"},"headline":"RCT (Reloj-Calendario-Term\u00f3metro )","datePublished":"2021-05-14T08:38:11+00:00","dateModified":"2021-05-14T08:56:21+00:00","mainEntityOfPage":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/rct-reloj-calendario-termometro\/"},"wordCount":1783,"commentCount":0,"publisher":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#organization"},"image":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/rct-reloj-calendario-termometro\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2021\/05\/diseno_setr.jpg","articleSection":["Proyectos"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blogs.etsii.urjc.es\/dseytr\/rct-reloj-calendario-termometro\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/rct-reloj-calendario-termometro\/","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/rct-reloj-calendario-termometro\/","name":"RCT (Reloj-Calendario-Term\u00f3metro ) - Proyectos con Arduino.","isPartOf":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/rct-reloj-calendario-termometro\/#primaryimage"},"image":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/rct-reloj-calendario-termometro\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2021\/05\/diseno_setr.jpg","datePublished":"2021-05-14T08:38:11+00:00","dateModified":"2021-05-14T08:56:21+00:00","breadcrumb":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/rct-reloj-calendario-termometro\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blogs.etsii.urjc.es\/dseytr\/rct-reloj-calendario-termometro\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/rct-reloj-calendario-termometro\/#primaryimage","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2021\/05\/diseno_setr.jpg","contentUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2021\/05\/diseno_setr.jpg","width":1680,"height":752},{"@type":"BreadcrumbList","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/rct-reloj-calendario-termometro\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/blogs.etsii.urjc.es\/dseytr\/"},{"@type":"ListItem","position":2,"name":"RCT (Reloj-Calendario-Term\u00f3metro )"}]},{"@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\/bdc38fea664f13638d2a51f4d2fc7211","name":"Administrador de la red","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/e8e366128f81a82735b0b00fe6d280414b4bad087e380fa9fee9694454b8a6fa?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/e8e366128f81a82735b0b00fe6d280414b4bad087e380fa9fee9694454b8a6fa?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e8e366128f81a82735b0b00fe6d280414b4bad087e380fa9fee9694454b8a6fa?s=96&d=mm&r=g","caption":"Administrador de la red"},"sameAs":["https:\/\/blogs.etsii.urjc.es"],"url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/author\/etsiiadmin\/"}]}},"_links":{"self":[{"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts\/3851","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\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/comments?post=3851"}],"version-history":[{"count":3,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts\/3851\/revisions"}],"predecessor-version":[{"id":3872,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts\/3851\/revisions\/3872"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/media\/3871"}],"wp:attachment":[{"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/media?parent=3851"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/categories?post=3851"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/tags?post=3851"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}