Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Cadeau de Saint-Valentin : Compteur DIY des jours passés ensemble

Composants et fournitures

Composant Quantité
Horloge temps réel (RTC) DS3231 1
Arduino KYX-5461AS 4 chiffres 7 segments 1
Plaque d'essai (breadboard) 1
Fils de connexion (jumper wires) 1
Arduino UNO 1
Résistance 1 kΩ 1

À propos de ce projet

En septembre 2017, j'ai rencontré une fille formidable lors de ma deuxième année d'université. Nous avons emménagé ensemble dans un logement partagé et avons fini par partager un étage, juste tous les deux. Nous avons discuté, sommes devenus les meilleurs amis, et après quelques mois, nous avons commencé à sortir ensemble. Le jour où nous nous sommes mis en couple était le 10 décembre 2017 (format UK).

Presque un an plus tard, je cherchais une idée pour notre anniversaire. L'idée m'est venue de lui fabriquer quelque chose en lien avec mes études (l'électronique) : un compteur qui affiche le nombre de jours depuis notre rencontre, intégré dans un cadre photo avec une photo de nous deux.

Que vous cherchiez une idée d'anniversaire ou que vous naviguiez par curiosité, c'est un projet amusant à réaliser. Je partage ici toutes les étapes pour que vous puissiez le reproduire vous-même.

La seule partie délicate est le code. J'ai préparé un modèle commenté qui, une fois compilé et téléversé, affiche ma date et celle de ma copine. Les commentaires vous guideront pour y insérer votre propre date.

Amusez-vous bien !

Code

DaysCounter.ino (C/C++)

Vous aurez besoin de :

Enregistrez les deux bibliothèques dans le dossier libraries de l'IDE Arduino. Puis dans l'IDE : Croquis → Inclure une bibliothèque → Ajouter la bibliothèque .ZIP.

Pour régler la date : à la ligne 7, dans les parenthèses (2017, 12, 9, 0, 0, 0), modifiez les trois premiers nombres selon votre date (année, mois, jour). Par exemple : 2014, 4, 6 pour le 6 avril 2014.

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

SevSeg sevseg;
RTC_DS3231 rtc;
DateTime dtBegin(2017, 12, 9, 0, 0, 0); // !!!! AJUSTEZ LA DATE ICI !!!!
TimeSpan tsPassed;

void showInfo(const DateTime& dt) {
  Serial.print("MAINTENANT:");
  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("\tECOULE:");
  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("RTC introuvable");
    while (1);
  }
  delay(1000);

  // Pour régler l'heure sur le RTC (décommenter, téléverser, recommenter, re-téléverser) :
  // 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);
  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);
  }

  sevseg.refreshDisplay();

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

Schéma de câblage

Utilisez le lien suivant pour visualiser le schéma sur Circuito.io :

https://www.circuito.io/app?components=512,11021

Copiez-collez le lien, cliquez sur "Add components", puis ajoutez :

Suivez le schéma et connectez chaque broche avec les fils de connexion.

Processus de fabrication

  1. Dé numérique Arduino sur écran LCD 16x2 – Générateur aléatoire à bouton poussoir
  2. Construire un Iron Man animé avec Arduino : capteurs, sons et relais
  3. Find Me : Localisateur d'objets intelligent avec Arduino et Bluetooth
  4. Construire un bras robotique 3D fonctionnel piloté par Arduino – Guide pas à pas
  5. Contrôleur d'humidificateur DIY avec Arduino et relais – Installation haute tension sécurisée
  6. Compteur de stationnement intelligent : Suivi véhicule en temps réel avec Arduino, Processing et PHP
  7. Compteur RPM Haute Vitesse Arduino – Algorithme « Single Shot » Novelty
  8. Jeu Pong sur Matrice NeoPixel avec Arduino Nano
  9. Volant Joystick Arduino Personnalisé pour Jeux Vidéo