Mini Calendar Clock
Este reloj muestra la fecha, hora y dia de la semana, si se acaba la bateria de 9v la hora no se pierde por la bateria del RTC
Supplies
- Arduino pro mini / puede servir cualquier modelo en mi caso estoy usando el Arduino Pro mini Atmega328p(3.3v,8MHz)
- RTC 1302
- Librerias de arduino
- Cables macho-hembra
- Pila 9v / incluso puede funcionar pilas de 5 a 12 voltios
- oled ssd1306
- protoboard mini
- frasco o caja de mentas
Subir Codigo Al Arduino
primero se debe instalar las librerias para programar mas facilmente el RTC y la pantalla oled, la unica que no se podra encontrar en administrador de librerias es virtuabotixRTC.h en cambio la del oled las encontraras como: "Adafruit GFX Library" y "Adafruit SSD1306"
El arduno no debe estar conectado a ningun componente mas que al TTL, las conexiones son las siguientes:
Arduino TTL
- RTX TXD
- TXD RTX
- VCC GND
#include<Wire.h>
#include<Adafruit_SSD1306.h>
#include<Adafruit_GFX.h>
#include<virtuabotixRTC.h>
#define WIDTH 128
#define HEIGHT 64
Adafruit_SSD1306 display(WIDTH, HEIGHT, &Wire, -1);
virtuabotixRTC myRTC(6, 7, 8);
// CLK,DAT,Reset
String dayWeek[8] ={"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"};
String setMonth[13] ={"Jan","Feb","Mar","Apr","May","June","July","Aug","Sept","Oct","Nov","Dec"};
void setup()
{
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
myRTC.setDS1302Time(30,27,21,4,5,1,2023); // segundos,minutos,horas, dia de la semana, dia del mes, mes, ano
}
void loop()
{
myRTC.updateTime();
display.clearDisplay();
display.setCursor(0,0);
display.setTextSize(2);
display.setTextColor(WHITE);
display.print(dayWeek[myRTC.dayofweek - 1]); //Imprime el dia de la semana
display.setCursor(0,18);
display.print(setMonth[myRTC.month-1]); // mes en texto
display.setTextSize(2);
display.setCursor(35,18);
display.print("/");
display.print(myRTC.dayofmonth); // dia de mes
display.setCursor(68,18);
display.print("/");
display.print(myRTC.year); //a;o
display.setCursor(0,36);
display.print(myRTC.hours);
display.print(":");
display.print(myRTC.minutes);
display.print(":");
display.print(myRTC.seconds);
display.display();
delay(1000);
}