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

TM1637 Digitale Klok met Tijdinstelling & Alarm – Arduino Nano Prototype

Onderdelen en benodigdheden

Arduino Nano R3 1
TM1637 4-digit display 1
DS1302 RTC module 1
SparkFun LilyPad LED Blauw (5 stuks) 1
Buzzer 1

Over dit project

Dit is een prototype van het tijd- en alarm-instelmechanisme dat ik van plan ben te gebruiken in mijn volgende digitale klokprojecten. Ik hoop dat je het nuttig vindt. Als je verbeteringen bedenkt, laat het me weten. Ik kijk er graag naar en werk ze mogelijk in mijn code in.

Je kunt de volledige tutorial bekijken op mijn kanaal. Als je deze content leuk vindt en me wilt ondersteunen bij het maken van dergelijke video's, ga dan naar mijn Patreon pagina: https://www.patreon.com/MariosIdeas Of via PayPal: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=7PD67JWZ9S3EJ&source=url

Code

Deze code leest de huidige tijd van de RTC module. Het stelt je ook in staat om de huidige tijd bij te werken en de alarmtijd in te stellen. Instelacties worden uitgevoerd met 3 knoppen.

// Mario's Ideas
// TM1637 Digitale Klok met Instel- en Alarm Functionaliteit
#include 
#include 
#include 

// RTC module declaratie
// PINS CLK, DAT, RST
virtuabotixRTC myRTC(A1, A2, A3);

// Variabelen om vorige waarden van RTC op te slaan
int minutes;
int hours;

// Variabelen voor alarmtijd
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;

#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++;
}

Schema

Schema beschikbaar in de projectbestanden.

Productieproces

  1. Fiix & IDC tonen hoe digitale transformatie productiebetrouwbaarheid boost
  2. Grote Downtime Voorkomen: Hoe Akoestische Emissie Monitoring Een Voedingsmiddelenfabrikant Tijd en Geld Bespaarde
  3. 8 Bewezen Manieren om Onderhoudskosten te Verlagen en Omzet te Verhogen met Digitale Onderhoudssoftware
  4. Een Headless Raspberry Pi 2 Wateralarm Bouwen met Adafruit T-Cobbler Plus
  5. Een Robot Bouwen met Raspberry Pi en Python: Een Complete Gids
  6. Integreren van een thermocouple-sensor met de Arduino Portenta H7 via de MAX6675 IC
  7. Precisie Woordklok: Minuutnauwkeurige Tijdweergave in Woorden
  8. Bouw een betrouwbare wekker met DS1302 RTC en Arduino UNO
  9. Begrip van Lagerfuncties en Innovaties in Moderne Machines
  10. Analoge vs Digitale Sensoren: Typen, Toepassingen en Praktische Voorbeelden
  11. Digitale Transformatie Versnellen: Cisco & IBM's Edge-to-Cloud IoT-platform