Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Valentijnscadeau: DIY Dagen-samen-teller

Onderdelen en benodigdheden

Real Time Clock (RTC) - DS3231 × 1
Arduino KYX-5461AS 4-digit 7-segment display × 1
Breadboard (standaard) × 1
Draadjes (standaard) × 1
Arduino UNO × 1
Weerstand 1k ohm × 1

Over dit project

In september 2017, toen ik net mijn tweede jaar aan de universiteit begon, leerde ik een geweldig meisje kennen. We verhuisden samen met haar vrienden en deelden een verdieping van het huis, alleen wij twee. We gingen praten, werden beste vrienden en na een paar maanden begonnen we te daten. De datum waarop we samenkwamen was 10 december 2017 (UK-notatie: 10.12.2017).

Bijna een jaar later zat ik te nadenken over wat ik voor ons verjaardag zou doen. Een idee kwakelde op: ik zou haar iets maken met behulp van mijn studie (elektronica). Ik besloot een tellsysteem te bouwen dat het aantal dagen sinds onze eerste datum telt, en dit in een fotolijstje te stoppen met een foto van ons samen.

Misschien ben je op deze pagina terechtgekomen omdat je een idee zoekt voor je verjaardag, of misschien blader je gewoon even rond. Op welke manier dan ook, het is een leuk project om te maken en ik leg hier alles uit zodat jij het zelf kunt bouwen.

De enige uitdaging bij dit project is de code. Ik heb een voorbeeldtemplate gemaakt die, wanneer je het compileert en uploadt, mijn en mijn vriendin's datum weergeeft. Ik heb commentaar in de code toegevoegd zodat je je eigen datum kunt invoeren.

Veel plezier ermee!

Code

DaysCounter.ino (C/C++)

Voor dit project heb je de volgende bibliotheken nodig:

  • Arduino IDE
  • RTC-bibliotheek (ZIP-bestand)
  • Seven Segment-bibliotheek (ZIP-bestand)

Sla beide bibliotheken op in de libraries-map waar de Arduino IDE geïnstalleerd is. Open daarna de Arduino IDE, ga naar Sketch → Bibliotheek gebruiken → .ZIP-bibliotheek toevoegen.

TIJD INSTELLEN: Op regel 7 in de haakjes staat (2017, 12, 9, 0, 0, 0). Je moet de eerste drie getallen wijzigen naar jouw datum (jaar, maand, dag). Bijvoorbeeld: 2014, 4, 6. Voer de datum in waarop jullie samenkwamen. Compileer en upload daarna de code. Als alles correct is aangesloten, toont het display het aantal dagen dat jullie samen zijn.

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

SevSeg sevseg; // Instantieer een seven-segment controller object
RTC_DS3231 rtc;
DateTime dtBegin(2017, 12, 9, 0, 0, 0); // !!!! TIJD HIER AANPASSEN !!!!
TimeSpan tsPassed;

void showInfo(const DateTime& dt) {
  Serial.print("NU:");
  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("\tVERSTREKEN:");
  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 niet gevonden");
    while (1); // Blijf hier hangen
  }
  delay(1000);

  // TIJD INSTELLEN (alleen één keer nodig):
  // 1) Haal commentaar weg bij de regel hieronder
  // 2) Upload de code
  // 3) Zet commentaar terug
  // 4) Upload nog één keer
  // rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // regel om tijd in te stellen

  byte numDigits = 4;
  byte digitPins[] = {7, 8, 9, 10};
  byte segmentPins[] = {2, 3, 4, 5, 11, 12, 13, 6};
  bool resistorsOnSegments = false; // 'false' = weerstanden op digit-pins
  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;
  }
}

Schema

Gebruik de volgende link voor het schema in Circuito.io: Circuito.io schema

  1. Kopieer en plak de link in je browser
  2. Klik op "Add components"
  3. Typ: RTC (toevoegen)
  4. Typ: 7-segment display 20mm (kies "generic", niet SparkFun)
  5. Volg het diagram en verbind elke pin met de draadjes

Valentijnscadeau: DIY Dagen-samen-teller

Productieproces

  1. Arduino Digitale Dobbelsteen: Bouw Je Eigen LCD-willekeurige Getalgenerator
  2. Een Arduino Iron Man bouwen: onderdelen, sensoren en stapsgewijze handleiding
  3. Find Me: Slimme Item Locator met Arduino en Bluetooth
  4. Bouw een Functionele, Arduino-aangedreven 3D-geprinte Robotarm – Stap-voor-Stap Handleiding
  5. DIY Arduino Luchtbevochtiger Controller met Relais – Veilige Hoogspanningsopstelling
  6. Slimme Parkeer Teller: Real-time Voertuigvolging met Arduino, Processing en PHP
  7. Hoge-Snelheid Arduino RPM Teller met Nieuw Algoritme
  8. NeoPixel Matrix Pong op Arduino Nano: Bouw je eigen neon Pong-spel
  9. Bouw een Aangepaste Arduino Joystick Stuurwiel voor Gaming
  10. Bouw een krachtige FM-radio ontvanger met Arduino en TEA5767 module
  11. Arduino 101: Bouw een teller met DHT11 sensor & LCD display