Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Regalo de San Valentín: Contador DIY de Días Juntos

Componentes y materiales

Reloj en tiempo real (RTC) DS3231 ×1
Pantalla de 7 segmentos y 4 dígitos KYX-5461AS para Arduino ×1
Protoboard (genérica) ×1
Cables de conexión (genéricos) ×1
Arduino UNO ×1
Resistencia de 1 kΩ ×1

Sobre el proyecto

En septiembre de 2017, al iniciar mi segundo año de universidad, conocí a una chica maravillosa. Nos mudamos juntos con sus amigos y terminamos compartiendo una planta de la casa, solo nosotros dos. Empezamos a hablar, nos hicimos mejores amigos y, tras un par de meses, comenzamos a salir. Nuestra fecha oficial fue el 10 de diciembre de 2017 (formato UK).

Casi un año después, buscaba una idea original para nuestro aniversario. Quería regalarle algo hecho por mí, aplicando lo que estudiaba (electrónica). Se me ocurrió crear un contador que mostrara los días que llevábamos juntos, integrándolo en un marco de fotos con una imagen nuestra.

Si has llegado aquí buscando una idea para tu aniversario o simplemente por curiosidad, este es un proyecto divertido y gratificante. Te explicaré todo paso a paso para que puedas hacerlo tú mismo.

La parte más compleja es el código. He preparado una plantilla que, al compilarse y subirse, muestra mi fecha y la de mi novia, pero incluye comentarios para que puedas introducir fácilmente la tuya propia.

¡Disfruta construyéndolo!

Código

DaysCounter.ino (C/C++)

Necesitarás:

Guarda ambas librerías en la carpeta libraries de tu instalación de Arduino IDE. Luego, en el IDE: Sketch → Include Library → Add .ZIP Library.

Para ajustar la fecha: En la línea 7, dentro del paréntesis (2017, 12, 9, 0, 0, 0), modifica los tres primeros números (año, mes, día) por la fecha en que empezasteis a salir. Ejemplo: 2014, 4, 6.

#include <RTClib.h>
#include <SevSeg.h>

SevSeg sevseg;
RTC_DS3231 rtc;
DateTime dtBegin(2017, 12, 9, 0, 0, 0); // ˇAJUSTA TU FECHA AQUÍ!
TimeSpan tsPassed;

void showInfo(const DateTime& dt) {
  Serial.print("NOW:");
  Serial.print(dt.year(), DEC); Serial.print('/');
  Serial.print(dt.month(), DEC); Serial.print('/');
  Serial.print(dt.day(), DEC); Serial.print(' ');
  Serial.print(dt.hour(), DEC); Serial.print(':');
  Serial.print(dt.minute(), DEC); Serial.print(':');
  Serial.print(dt.second(), DEC); Serial.print("\tPASSED:");
  Serial.print(tsPassed.days(), DEC); Serial.print(' ');
  Serial.print(tsPassed.hours(), DEC); Serial.print(':');
  Serial.print(tsPassed.minutes(), DEC); Serial.print(':');
  Serial.print(tsPassed.seconds(), DEC); Serial.println();
}

void delayWithUpdate(uint32_t parDelay) {
  uint32_t started = millis();
  while (millis() < started + parDelay) {
    sevseg.refreshDisplay();
  }
}

void setup() {
  Serial.begin(9600);
  Serial.println(__TIME__);

  if (!rtc.begin()) {
    Serial.println("No se encontró RTC");
    while (1); // Bucle infinito si falla
  }
  delay(1000);

  // Para ajustar la hora del RTC (descomenta, sube, comenta, sube de nuevo):
  // rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));

  byte numDigits = 4;
  byte digitPins[] = {7, 8, 9, 10};
  byte segmentPins[] = {2, 3, 4, 5, 11, 12, 13, 6};
  bool resistorsOnSegments = false;
  byte hardwareConfig = COMMON_CATHODE;
  bool updateWithDelays = false;
  bool leadingZeros = false;
  bool disableDecPoint = true;

  sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins,
               resistorsOnSegments, updateWithDelays, leadingZeros, disableDecPoint);
  sevseg.setBrightness(100);

  // Test rápido de la pantalla
  sevseg.setNumber(1234, 1); delayWithUpdate(1000);
  sevseg.setNumber(8888, 1); delayWithUpdate(1000);
}

void loop() {
  sevseg.refreshDisplay();
  DateTime now = rtc.now();
  tsPassed = now - dtBegin;

  static uint32_t nextReportMillis = 0;
  static uint16_t prevDaysPassed = 0;

  if (tsPassed.days() != prevDaysPassed) {
    prevDaysPassed = tsPassed.days();
    sevseg.setNumber(prevDaysPassed, 0);
  }

  if (millis() > nextReportMillis) {
    showInfo(now);
    nextReportMillis = millis() + 5000;
  }
}

Esquemáticos

Puedes generar el esquema automáticamente en Circuito.io:

  1. Copia y pega el enlace en el navegador.
  2. Haz clic en "Add components".
  3. Añade: RTC DS3231 y 7 segment display 20mm (genérico).
  4. Sigue el diagrama y conecta cada pin con cables jumper.

Regalo de San Valentín: Contador DIY de Días Juntos

Proceso de manufactura

  1. Proyecto Dados Digitales Arduino: Construye tu Propio Generador de Números Aleatorios con LCD
  2. Construye un Iron Man animado con Arduino: componentes, sensores y guía paso a paso
  3. Find Me: Localizador Inteligente de Objetos con Arduino y Bluetooth
  4. Construye un Brazo Robótico Impreso en 3D Controlado por Arduino – Guía Paso a Paso
  5. Controlador de Humidificador DIY con Arduino y Relé: Configuración Segura de Alto Voltaje
  6. Contador Inteligente de Plazas de Aparcamiento: Seguimiento en Tiempo Real con Arduino, Processing y PHP
  7. Tacómetro Arduino de Alta Velocidad – Algoritmo "Single-Shot" para RPM Preciso
  8. Pong Neón en Matriz NeoPixel con Arduino Nano
  9. Construye un volante joystick personalizado con Arduino para gaming
  10. Construye un Receptor FM Potente con Arduino y Módulo TEA5767
  11. Arduino 101: Construye un Podómetro con Sensor DHT11 y Pantalla LCD