Cambio automático de horario verano/invierno

El fin de semana que estaba trasteando con la visualización de fecha y hora (Mostrar tres letras por mes, dos dígitos en minutos y segundos <10, etc) tocaba cambio de hora, y me surgió la pregunta de cómo sabe el ordenador que toca cambiarla.

El cambio se hace el último domingo de Marzo (la noche del sábado al domingo) y dura hasta el último domingo de Octubre. Pues buscando en internet encontré que existe un algoritmo que permite calcular en qué día de la semana cae un determinado día del mes. Es el llamado congruencia de Zeller.

Ahora podemos encontrar cuál es el último domingo de Marzo, en que comienza el horario de verano y el último domingo de Octubre, en que acaba.

El DS1307, la batería para conservar la hora con el arduino apagado, los sensores, la conexión al servo, y los pulsadores están todos en una placa de prototipos que se monta encima de la Ethernet shield.

Publicado en codigo, hora | Deja un comentario

Pantalla LCD

Para visualizar valores, además de señalar con el brazo, dispone de una pantalla serie LCD que se se conecta mediante 4 cables solamente:
Rojo y Negro alimentación.
Amarillo TX (pin 1)
Blanco RX (pin 0)
Incluso podemos prescindir de conectar el RX.

Seguir leyendo

Publicado en codigo, esquema | Deja un comentario

Servomotor

El brazo del fraile se mueve mediante un servomotor miniatura, de los empleados en aeromodelismo, conectado al pin 3.

Para moverlo empleamos la librería
#include ;
Las posiciones a señalar van de 81 a 126 en saltos de 9 Seguir leyendo

Publicado en codigo | Deja un comentario

El programa

El programa completo fraile12 para arduino lo puedes descargar de aquí, pero como no puedo subirlo en formato pde, ni txt, lo pongo en pdf, de forma que se puede copiar y pegar.

Publicado en codigo | Deja un comentario

Esquema con Fritzing

Fritzing es una herramienta gratuita que nos permite dibujar el esquema de conexiones del arduino a los sensores, y representarlo como cableado en una placa blanca de prototipos. Es una herramienta muy interesante, pero como es la primera vez que la uso, no me ha quedado muy bien este esquema.

Publicado en esquema | Deja un comentario

Reloj en tiempo real

Como el arduino no dispone de reloj en tiempo real tenemos que añadirle uno externamente, en concreto el DS1307 del que existen abundantes ejemplos de uso con arduino.
Además de dicho integrado, le tenemos que conectar:
Un cristal de 32.768 Khz.
Batería de 3V con soporte, tipo CR2032. (para que no pierda la hora al apagarlo)
2 Resistencias de Pull-up de 2k2

Para leer el bus i2c arduino usa los pines de entradas analógicas A4 y A5
SCL: i2c clock: pin A5 del arduino
SDA: i2c data: pin A4 del arduino
El código de lectura del tiempo está basado en el ejemplo que viene con el arduino,  y usa las siguientes librerias
#include <Wire.h>
#include “RTClib.h”

Si disponemos de conexión a internet ajusta la hora accediendo a una servidor ntp
#include <SPI.h>
#include <Ethernet.h>
#include <Udp.h>

Publicado en codigo, hora | Deja un comentario

Sensor de Humedad

El sensor de Humedad HIH 4000 proporciona una tensión de salida proporcional a la humedad relativa, y es muy fácil de conectar.

Conexión al Arduino
+ a 5v
– a GND
OUT conectado a analog 1

Función de transferencia
(VOUT – 0.958) / 0.0307 = % HUMEDAD RELATIVA
int analogValueHR = analogRead(1);
float voltHR=0;
float hr=0;
voltHR=(float) analogValueHR * 5.0 / 1024.0;
hr = (voltHR – 0.958) / 0.0307;

Publicado en codigo, Sensores | Deja un comentario