/Time_Sense

Sentido del tiempo

Primary LanguageC++

Time_Sense

Este sentido te permite tener una percepción de la posición de la luz sol sobre la tierra, según esta vaya girando.

REQUISITOS

Software

  • Instalar Tarjeta: ------------------ by Spence Konde Más INFO.
  • Instalar Librería: ------------------ by Adafruit Más INFO.
  • Instalar Librería: <EasyNeoPixels.h> by Evelyn Masso Más INFO.
  • Instalar Librería: <DS3232RTC.h> by JChristensen Más INFO.

Hardware

  • Atiny85 * 1 Unidad.
  • 3231RTC * 1 Unidad.
  • WS2812 * 12 + 1 Opcional.
  • Led RGB * 1 Unidad Opcional.
  • 330 ohm * 3 Unidades.
  • 33 uF * 1 Unidad.
  • Y5019 * 1 Unidad.
  • Battery 3.7 1000 mAh

E/S

Attiny85 POWER DS3231 WS2812
PIN4 GND GND GND GND
PIN5 VCC VCC 5V 5V
PB2 PCINT2 - SCL -
PB0 PCINT0 - SDA -
PB4 PCNINT4 - - DATA

CÓDIGO

Comentarios sobre las funciones y sus conexiones.

Variables Globales

  • time_t t; Tiempo en milisegudos de la hora actual.
  • static time_t tLast; Tiempo en milisegudos de la hora anterior.
  • byte nPixel = 12 Numero de modulos WS2811.
  • byte Hot = 255 Temperatura de la resistencia 0Cº a ~50Cº.
time_t t;
static time_t tLast;
...
..
.
bool timeChange(void)
{
	t = now();
	if (t != tLast) {
		tLast = t;
		return true;...
.

compileTime() Retorna la fecha en el momento de la compilación.

time_t compileTime(void);
...
..
.
//La fecha en el momento de la compilación es pasada por parámetro
//al reloj DS3231 para ajustar la nueva hora.
RTC.set(compileTime());   
.

timeChange() Retorna TRUE si ha cambiado la hora.

bool timeChange(void);
...
..
.
void rotationSolar(void) 
{
	if (timeChange)
	{
		status = TIME_CHANGE;
		LedErrors();
		onHot(); ......
.
  • Ejemplo: if(17 != 16) ... retorna TRUE .
  • Ejemplo: if(17 != 17) ... retorna FALSE .

LedErrors() Código de Tipo, Color y Parpadeo para indicar el Estado del Sistema.

void LedErrors(void);
...
..
.
void LedErrors...
	switch (status)
		{
		case WORK:			setColor(0, 255, 0); // Green Color
			break;
		case TIME_COMPILE: ....
.
..
...
Tipo Color Parpadeo Estado
Sistema Verde 1 WORK
Error Sistema Rojo 2 TIME_COMPILE
Error Sistema Rojo 3 TIME_SET
Error Sistema Rojo 4 TIME_GET
Sistema Azul 5 TIME_CHANGE

setColor() Establece el color para el LED indicador.

void setColor(int, int, int);
...
..
.
void setColor...
	    ..
		writeEasyNeoPixel(0, redValue, greenValue, blueValue);
		delay(500);
		writeEasyNeoPixel(0, LOW);

offHot() Establece en Off todas las fuentes de calor

void offHot(void);
...
..
.
void offHot...
{
	for (byte i = 0; i <= 5; i++)
	{
		writeEasyNeoPixel(i, LOW);...
.
..
...

onHot() Establece en On la fuente de calor segun la rotacion de la tierra y la hora terrestre.

void onHot(void);

setHot() Estable 255 o 0 en WS2812

void setHot(byte);						//Heat ON

rotationBegin() Setup()

void rotationBegin(void);				//Within the setup()
...
..
.
void setup() {	
	rotationBegin();
}

rotationSolar() Loop()

void rotationSolar(void);
...
..
.
void loop() 
{
	rotationSolar();
}

DESPLIEGUE

PASOS

  • Asegurese de tener todo el hardware, conexiones, alimentación, tarjeta y librerías.
  • Monte en una tarjeta de desarrollo las conexiones o ensamble una PCB.
  • Ten cuidado con la alimentación.
  • Añade un condensador electrolitico entre el PIN RESET y GND del programador.
  • Asegurate de tener configurado el DS3231 ¿Tienes el reloj con la hora ajustada?

Descomenta estas líneas para ajustarlo con la hora de tu pc.

.
..
..
void rotationBegin(void)
{
	// DESCOMMENT THIS LINE! 
	RTC.set(now()); 

	// OR DESCOMMENT THIS LINE!  
	//	RTC.set(compileTime());  
...
..
.

DATASHEET

ATtiny 25/45/85

x5 pin mapping