Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

TM1637 Digitaluhr mit Zeiteinstellung & Alarm – Arduino Nano Prototyp

Komponenten und Zubehör

Arduino Nano R3 1
TM1637 4-stelliges Display 1
DS1302 RTC-Modul 1
SparkFun LilyPad LED Blau (5 Stk.) 1
Summer 1

Über dieses Projekt

Dies ist ein Prototyp des Zeit- und Alarm-Einstellmechanismus, den ich in meinen nächsten Digitaluhr-Projekten verwenden möchte. Ich hoffe, Sie finden ihn nützlich. Verbesserungsvorschläge sind herzlich willkommen – ich schaue sie mir gerne an und baue sie eventuell in meinen Code ein.

Das vollständige Tutorial sehen Sie auf [YouTube-Kanal].

Wenn Sie diese Inhalte mögen und mich bei der Erstellung ähnlicher Videos unterstützen möchten, besuchen Sie meine Patreon-Seite:

Code

Zeitanzeige vom RTC-Modul plus Zeit- und Alarm-Einstellfunktion (Arduino)

Dieser Code liest die aktuelle Zeit vom RTC-Modul. Er erlaubt auch, die aktuelle Zeit zu aktualisieren und die Alarmzeit einzustellen. Die Einstellungen erfolgen über 3 Taster.

// Mario's Ideas
// TM1637 Digital Clock with Setup and Alarm Functionality
#include <Arduino.h>
#include <TM1637Display.h>
#include <virtuabotixRTC.h>

// RTC Modul Deklaration
// PINS CLK, DAT, RST
virtuabotixRTC myRTC(A1, A2, A3);

// Variablen für vorherige RTC-Werte
int minutes;
int hours;

// Alarm-Zeit
int Alarm_minutes = 05;
int Alarm_hours = 18;

uint8_t Blank[] = {0x0};
int POSITION = 0;
int digits[3];
int interval = 0;

#define Alarm 9
#define Buzer 13
#define Led 8

boolean Alarm_set = false;
boolean Alarm_in_progress = false;
boolean Setup_on = false;

// 4-stelliges Display Pins
#define CLK 4
#define DIO 5
TM1637Display clock(CLK, DIO);

void setup() {
  attachInterrupt(digitalPinToInterrupt(2), Press_A_Button, RISING);
  attachInterrupt(digitalPinToInterrupt(3), Press_B_Button, RISING);
  pinMode(Alarm, INPUT);
  pinMode(Buzer, OUTPUT);
  pinMode(Led, OUTPUT);
  digitalWrite(Buzer, LOW);
  clock.setBrightness(0x0f);
  Serial.begin(9600);
}

void Press_A_Button() {
  if (interval > 3) {
    if (Setup_on == false) {
      Setup_on = true;
      if (Alarm_set == true) {
        digits[0] = (int)Alarm_hours / 10;
        digits[1] = Alarm_hours - ((int)Alarm_hours / 10) * 10;
        digits[2] = (int)Alarm_minutes / 10;
        digits[3] = Alarm_minutes - ((int)Alarm_minutes / 10) * 10;
      } else {
        digits[0] = (int)myRTC.hours / 10;
        digits[1] = myRTC.hours - ((int)myRTC.hours / 10) * 10;
        digits[2] = (int)myRTC.minutes / 10;
        digits[3] = myRTC.minutes - ((int)myRTC.minutes / 10) * 10;
      }
    } else {
      POSITION++;
      if (POSITION == 4) {
        if (Alarm_set == true) {
          Alarm_minutes = digits[3] + digits[2] * 10;
          Alarm_hours = digits[1] + digits[0] * 10;
        } else {
          myRTC.setDS1302Time(0, digits[3] + digits[2] * 10, digits[1] + digits[0] * 10,
                              myRTC.dayofweek, myRTC.dayofmonth, myRTC.month, myRTC.year);
          clock.showNumberDec(digits[0], false, 1, 0);
          clock.showNumberDec(digits[1], false, 1, 1);
          clock.showNumberDec(digits[2], false, 1, 2);
          clock.showNumberDec(digits[3], false, 1, 3);
        }
        POSITION = 0;
        Setup_on = false;
      }
    }
  }
  interval = 0;
}

void Press_B_Button() {
  if (interval > 3) {
    if (Setup_on) {
      digits[POSITION] = digits[POSITION] + 1;
      if (POSITION == 0 && digits[POSITION] == 3) digits[POSITION] = 0;
      if (POSITION != 0 && digits[POSITION] == 10) digits[POSITION] = 0;
      interval = 0;
    }
  }
  interval = 0;
}

void loop() {
  if (digitalRead(Alarm) == HIGH && Alarm_set == false) {
    if (interval > 30) {
      digitalWrite(Led, HIGH);
      Alarm_set = true;
      delay(300);
    }
  } else {
    if (digitalRead(Alarm) == HIGH && Alarm_set == true) {
      if (interval > 30) {
        Alarm_set = false;
        Alarm_in_progress = false;
        digitalWrite(Led, LOW);
        delay(300);
      }
    }
  }

  myRTC.updateTime();

  if (Setup_on == true) {
    clock.showNumberDec(digits[0], false, 1, 0);
    clock.showNumberDec(digits[1], false, 1, 1);
    clock.showNumberDec(digits[2], false, 1, 2);
    clock.showNumberDec(digits[3], false, 1, 3);
    delay(200);
    clock.setSegments(Blank, 1, POSITION);
    delay(200);
    clock.showNumberDec(digits[0], false, 1, 0);
    clock.showNumberDec(digits[1], false, 1, 1);
    clock.showNumberDec(digits[2], false, 1, 2);
    clock.showNumberDec(digits[3], false, 1, 3);
  } else {
    if (myRTC.minutes == Alarm_minutes && myRTC.hours == Alarm_hours && Alarm_set == true && Setup_on == false) {
      Alarm_in_progress = true;
    }
    if (Alarm_in_progress) {
      digitalWrite(Buzer, HIGH);
      delay(1000);
      digitalWrite(Buzer, LOW);
      delay(1000);
    }
    if (myRTC.minutes != minutes) {
      clock.showNumberDecEx((int)myRTC.hours / 10 * 1000 + (myRTC.hours - ((int)myRTC.hours / 10) * 10) * 100 +
                            (int)myRTC.minutes / 10 * 10 + myRTC.minutes - ((int)myRTC.minutes / 10) * 10,
                            (0x80 >> 1), true);
      minutes = myRTC.minutes;
      hours = myRTC.hours;
    }
  }
  if (interval < 200) interval++;
}

Schaltplan

TM1637 Digitaluhr mit Zeiteinstellung & Alarm – Arduino Nano Prototyp

Herstellungsprozess

  1. Analoge vs. digitale Sensoren: Typen, Anwendungen und Praxisbeispiele
  2. Headless Raspberry Pi 2 Wasser-Alarm mit Adafruit T‑Cobbler Plus bauen
  3. Roboter mit Raspberry Pi und Python bauen: Komplette Anleitung
  4. Fiix & IDC: Wie digitale Transformation die Fertigungszuverlässigkeit steigert
  5. Große Stillstände verhindern: Wie akustische Emissionsüberwachung einem Lebensmittelhersteller Zeit und Geld sparte
  6. 8 bewährte Wege, Wartungskosten zu senken und Umsatz mit digitaler Wartungssoftware zu steigern
  7. Thermofühler (Thermocouple) mit Arduino Portenta H7 über MAX6675 IC integrieren
  8. Digital Transformation beschleunigen: Cisco & IBMs Edge-to-Cloud IoT-Plattform
  9. Zuverlässigen Wecker mit DS1302 RTC und Arduino UNO bauen
  10. Lagerfunktionalität & Innovation in moderner Maschinenbau verstehen