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

Hauptuhr

Komponenten und Verbrauchsmaterialien

Arduino UNO
× 1
Freetronics DMD-Display
× 1
RTC-Modul
× 1
Momentaner Druckknopf
× 1
Ein-/Ausschalter
× 1

Apps und Onlinedienste

Arduino-IDE

Über dieses Projekt

Über

Dies ist ein Projekt für alle, die eine schöne große Uhr haben möchten, die aus 12 Metern Entfernung oder aus der Nähe sichtbar ist. Sie können es so groß machen, wie Sie möchten. Es enthält auch einen eingebauten Wecker, der als Event-Handler verwendet werden kann, beispielsweise für ein automatisches Bewässerungssystem für einen Garten oder um Sie an das wöchentliche Treffen zu erinnern, zu dem Sie gehen möchten, oder alles andere, was Sie an ein Relais anschließen können .

Sie benötigen:

● Freetronics DMD-Display

● Echtzeituhrmodul für Arduino 

● Summer (optional – etwas laut genug, um dich morgens aufzuwecken)

● Kurzzeitig eingeschalteter Druckknopf

● 2x Ein-Aus-Tasten (Power One ist optional)

● Arduino UNO oder Arduino-kompatibles Board

● Proto-Shield für Arduino (optional)

● Netzteil für Arduino

● Ein 5 V DC geregeltes Netzteil mit 4 – 30 Ampere (optional für hohe Helligkeit – nicht für den normalen Betrieb erforderlich)

Konstruktion:

Teil 1 – Elektronik:

Schritt 1:Verbinden Sie den Summer, die Stummschalttaste und den Alarmschalter mit dem Steckbrett

Schritt 2:Verbinden Sie einen der Schalterstifte mit Masse und den Buzzer-GND-Pin mit dem GND-Pin des Arduino (wie in der Abbildung gezeigt)

Schritt 3:Verbinden Sie den anderen Pin des Alarmset-Schalters mit D2, den Stumm-Pin mit D3 und den Summer mit D4

Schritt 4:Verbinden Sie Ihr RTC-Modul je nach Typ mit dem Arduino (lesen Sie die Herstellerdaten – folgen Sie in den meisten Fällen dem Diagramm)

Schritt 5:Verbinden Sie den DMDCON mit Arduino und stecken Sie DMD ein

Schritt 6:Für volle Helligkeit von DMD schließen Sie eine 5V-Quelle an die High Brightness-Anschlüsse an

Schritt 7:Wenn Sie dies auf einer Proto-Abschirmung machen möchten, löten Sie alle Teile an die Abschirmung und schließen Sie sie entsprechend an

Teil 2 – Software:

Zuerst müssen Sie die hier verfügbare DMD-Bibliothek installieren und in Ihrem Bibliotheksordner installieren.

Die Software kann von Prototyping Corner oder unten auf dieser Seite heruntergeladen werden. Dies enthält die grundlegenden Operationen für die Master Clock.

Um die Uhrzeit am RTC-Modul einzustellen, suchen Sie die Zeilen 117 bis 124 und passen Sie diese an die aktuelle Uhrzeit an. Entkommentieren Sie nun Zeile 124 und laden Sie sie auf den Arduino hoch. Jetzt Zeile 124 erneut kommentieren und erneut hochladen. Wenn dies nicht geschieht, bleibt die RTC gleich.

In den Zeilen 593 und 594 stellen Sie die Uhrzeit und die Tage ein, an denen der Alarm auftreten soll. Zeile 593 ist der Wochentag, an dem dies erfolgen soll. Die Tage entsprechen den Zahlen wie folgt:

1 =Sonntag

2 =Montag

3 =Dienstag

4 =Mittwoch

5 =Donnerstag

6 =Freitag

7 =Samstag

Stellen Sie dann in Zeile 594 die Uhrzeit ein, zu der der Wecker im 24-Stunden-Format ertönt.

Weiter gehen:

Weitere Displays hinzufügen:

Sie können weitere DMD-Displays hinzufügen, um die Uhr zu vergrößern. Lesen Sie dies für weitere Informationen.

Weitere Alarme hinzufügen:

Um weitere Alarme hinzuzufügen, füge die folgenden Codezeilen zur Skizze hinzu und rufe die void in der Hauptschleife auf:

CheckAlarm-ALARM-NEIN-() ungültig machen {

AlarmSet =digitalRead(AlarmSetPin);

Snooze =digitalRead(SnoozePin);

Byte Sekunde, Minute, Stunde, dayOfWeek, dayOfMonth, Monat, Jahr;

getDateDs1307(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year);

/* Nur Alarm auslösen, wenn es sich um einen unten aufgeführten Tag handelt. Dies kann geändert werden, indem Sie die Zahlen in eine der folgenden ändern:

1 =Sonntag

2 =Montag

3 =Dienstag

4 =Mittwoch

5 =Donnerstag

6 =Freitag

7 =Samstag

*/

if(dayOfWeek ==2 || dayOfWeek ==3 || dayOfWeek ==4 || dayOfWeek ==5 ||dayOfWeek ==6) { //Dies sind Tage ERLAUBT um den Alarm zu läuten

if(hour ==18 &&minute ==05) {//Setze die Zeit hier (in 24 Stunden)

if(AlarmSet ==LOW) {//Wenn der Alarm-Pin eingeschaltet ist

Snooze =digitalRead(SnoozePin);

while(Snooze ==HIGH)

{

Snooze =digitalRead(SnoozePin);

//Hier hinzufügen, was passiert

}

}

}

}

Code

  • Code für Hauptuhr
Code für HauptuhrC/C++
/* Master Clock-Skizze. Erstellt am 26.03.14 Dies ist ein Arduino-Programm, das das Freetronics DMD als Ausgabe für die Anzeige verwendet. Es enthält eine Alarmfunktion. Tag, Datum und Uhrzeit werden auf das DMD gedruckt. Die Alarmfunktionstaste befindet sich an den Pins 2 für den Alarmsatz, 3 für die Schlummerfunktion und 4 für den Ausgangsalarm. Die Alarmzeit und die Wochentage können in den Zeilen 551 und 552 eingestellt werden. Jed Hodson 2014 */byte dayOfWeek=4;byte dayOfMonth=1;#include  //SPI.h muss beim Schreiben von DMD enthalten sein by SPI (die IDE beschwert sich anders)#include  //#include  //#include "SystemFont5x7.h"#include "Wire.h"#define DS1307_I2C_ADDRESS 0x68int AlarmSetPin =2;int SnoozePin =3;int Alarm =4;int AlarmSet =0;int Snooze =0;// Konvertiert normale Dezimalzahlen in binär codiertes Dezimalbyte decToBcd(byte val){ return ( (val/10*16) + (val%10) );}// Binärcodierte Dezimalzahlen in normale Dezimalzahlen umwandelnbyte bcdToDec(byte val){ return ( (val/16*10) + (val%16) );}// 1) Setzt Datum und Uhrzeit auf dem ds1307// 2) Startet die Uhr // 3) Setzt den Stundenmodus auf die 24-Stunden-Uhr // Geht davon aus, dass Sie gültige Zahlen eingebenvoid setDateDs1307 (Byte Sekunde, // 0-59 Byte Minute, // 0-59 Byte Stunde, // 1-23 Byte dayOfWeek, // 1-7 Byte dayOfMonth, // 1-28/29/30/31 Byte Monat, // 1-12 Byte Jahr) // 0-99{ Wire.beginTransmission(DS1307_I2C_AD KLEID); Wire.write(0); Wire.write (decToBcd (zweite)); // 0 bis Bit 7 startet die Uhr Wire.write (decToBcd (minute)); Wire.write (decToBcd (Stunde)); Wire.write (decToBcd (dayOfWeek)); Wire.write (decToBcd (dayOfMonth)); Wire.write (decToBcd (Monat)); Wire.write (decToBcd (Jahr)); Wire.write(00010000); // sendet 0x10 (hex) 00010000 (binär) an das Kontrollregister - schaltet die Rechteckwelle ein Wire.endTransmission();} // Ruft Datum und Uhrzeit vom ds1307void ab getDateDs1307 (Byte *Sekunde,Byte *Minute,Byte *Stunde, byte *dayOfWeek,byte *dayOfMonth,byte *Monat,Byte *Jahr){ // Zurücksetzen des Registerzeigers Wire.beginTransmission(DS1307_I2C_ADDRESS); Wire.write(0); Wire.endTransmission(); Wire.requestFrom(DS1307_I2C_ADDRESS, 7); // Einige davon benötigen Masken, da bestimmte Bits Kontrollbits sind *second =bcdToDec(Wire.read() &0x7f); *Minute =bcdToDec(Wire.read()); *Stunde =bcdToDec(Wire.read() &0x3f); // Muss dies ändern, wenn 12 Stunden am/pm *dayOfWeek =bcdToDec(Wire.read()); *dayOfMonth =bcdToDec(Wire.read()); *Monat =bcdToDec(Wire.read()); *Jahr =bcdToDec(Wire.read());}//DMD-Bibliothek als dmdDMD starten dmd(1,1);void ScanDMD(){ dmd.scanDisplayBySPI();}void setup(){ Byte Sekunde, Minute , Stunde, TagOfWoche, TagOfMonat, Monat, Jahr; // Initialisieren der Interrupt-/CPU-Nutzung von TimerOne, die zum Scannen und Aktualisieren der Anzeige verwendet wird Timer1.initialize( 5000 ); // Periode in Mikrosekunden zum Aufrufen von ScanDMD. Alles, was länger als 5000 (5 ms) ist, und Sie können Flimmern sehen. Timer1.attachInterrupt (ScanDMD); // den Timer1-Interrupt an ScanDMD anhängen, der zu dmd.scanDisplayBySPI() geht // die DMD-Pixel im RAM löschen/initiieren dmd.clearScreen (true); //true ist normal (alle Pixel aus), false ist negativ (alle Pixel an) dmd.selectFont(System5x7); Wire.begin(); // Ändern Sie diese Werte auf das, was Sie für Ihre Uhr einstellen möchten. // Sie möchten Ihre Uhr wahrscheinlich nur einmal einstellen und dann // den setDateDs1307-Aufruf entfernen. zweite =0; Minute =35; Stunde =11; // 24-Stunden-Zeit verwenden, sonst werden Tag/Datum-Berechnungen deaktiviert dayOfWeek =1; dayOfMonth =23; Monat =3; Jahr =14; // Kommentieren Sie den setDateDs1307-Aufruf unten, um die Zeit auf die Intervalle oben einzustellen. Denken Sie daran, wenn Sie die Zeit einstellen // müssen Sie die Zeile unten wieder auskommentieren, sonst bleibt die Skizze nur zu der eingestellten Zeit. //setDateDs1307(Sekunde, Minute, Stunde, dayOfWeek, dayOfMonth, Monat, Jahr); pinMode (AlarmSetPin, INPUT_PULLUP); pinMode (SnoozePin, INPUT_PULLUP); pinMode (Alarm, AUSGANG); digitalWrite(Alarm, LOW);}void drawDay()// zeigt Wochentag an { Byte Sekunde, Minute, Stunde, dayOfWeek, dayOfMonth, month, year; getDateDs1307(&Sekunde, &Minute, &Stunde, &TagOfWoche, &TagOfMonat, &Monat, &Jahr); switch(dayOfWeek) { Fall 1:dmd.drawString( 1,0, "Sun", 3, GRAPHICS_NORMAL); brechen; Fall 2:dmd.drawString( 1,0, "Mon,", 3, GRAPHICS_NORMAL ); brechen; Fall 3:dmd.drawString( 1,0, "Di,", 3, GRAPHICS_NORMAL ); brechen; Fall 4:dmd.drawString( 1,0, "Mi", 3, GRAPHICS_NORMAL ); brechen; Fall 5:dmd.drawString( 1,0, "Do,", 3, GRAPHICS_NORMAL ); brechen; Fall 6:dmd.drawString( 1,0, "Fr,", 3, GRAPHICS_NORMAL ); brechen; Fall 7:dmd.drawString( 1,0, "Sat,", 3, GRAPHICS_NORMAL ); brechen; }}void drawDate()// zeigt numerisches Datum { Byte Sekunde, Minute, Stunde, TagOfWoche, TagOfMonth, Monat, Jahr; getDateDs1307(&Sekunde, &Minute, &Stunde, &TagOfWoche, &TagOfMonat, &Monat, &Jahr); switch(dayOfMonth) { Fall 1:dmd.drawString( 20,0, "01", 2, GRAPHICS_NORMAL ); brechen; Fall 2:dmd.drawString( 20,0, "02", 2, GRAPHICS_NORMAL ); brechen; Fall 3:dmd.drawString( 20,0, "03", 2, GRAPHICS_NORMAL ); brechen; Fall 4:dmd.drawString( 20,0, "04", 2, GRAPHICS_NORMAL ); brechen; Fall 5:dmd.drawString( 20,0, "05", 2, GRAPHICS_NORMAL ); brechen; Fall 6:dmd.drawString( 20,0, "06", 2, GRAPHICS_NORMAL ); brechen; Fall 7:dmd.drawString( 20,0, "07", 2, GRAPHICS_NORMAL ); brechen; Fall 8:dmd.drawString( 20,0, "08", 2, GRAPHICS_NORMAL ); brechen; Fall 9:dmd.drawString( 20,0, "09", 2, GRAPHICS_NORMAL ); brechen; Fall 10:dmd.drawString( 20,0, "10", 2, GRAPHICS_NORMAL ); brechen; Fall 11:dmd.drawString( 20,0, "11", 2, GRAPHICS_NORMAL ); brechen; Fall 12:dmd.drawString( 20,0, "12", 2, GRAPHICS_NORMAL ); brechen; Fall 13:dmd.drawString( 20,0, "13", 2, GRAPHICS_NORMAL ); brechen; Fall 14:dmd.drawString( 20,0, "14", 2, GRAPHICS_NORMAL ); brechen; Fall 15:dmd.drawString( 20,0, "15", 2, GRAPHICS_NORMAL ); brechen; Fall 16:dmd.drawString( 20,0, "16", 2, GRAPHICS_NORMAL ); brechen; Fall 17:dmd.drawString( 20,0, "17", 2, GRAPHICS_NORMAL ); brechen; Fall 18:dmd.drawString( 20,0, "18", 2, GRAPHICS_NORMAL ); brechen; Fall 19:dmd.drawString( 20,0, "19", 2, GRAPHICS_NORMAL ); brechen; Fall 20:dmd.drawString( 20,0, "20", 2, GRAPHICS_NORMAL ); brechen; Fall 21:dmd.drawString( 20,0, "21", 2, GRAPHICS_NORMAL ); brechen; Fall 22:dmd.drawString( 20,0, "22", 2, GRAPHICS_NORMAL ); brechen; Fall 23:dmd.drawString( 20,0, "23", 2, GRAPHICS_NORMAL ); brechen; Fall 24:dmd.drawString( 20,0, "24", 2, GRAPHICS_NORMAL ); brechen; Fall 25:dmd.drawString( 20,0, "25", 2, GRAPHICS_NORMAL ); brechen; Fall 26:dmd.drawString( 20,0, "26", 2, GRAPHICS_NORMAL ); brechen; Fall 27:dmd.drawString( 20,0, "27", 2, GRAPHICS_NORMAL ); brechen; Fall 28:dmd.drawString( 20,0, "28", 2, GRAPHICS_NORMAL ); brechen; Fall 29:dmd.drawString( 20,0, "29", 2, GRAPHICS_NORMAL ); brechen; Fall 30:dmd.drawString( 20,0, "30", 2, GRAPHICS_NORMAL ); brechen; Fall 31:dmd.drawString( 20,0, "31", 2, GRAPHICS_NORMAL ); brechen; }}void drawHour()// zeichnet den Stundenzeiger{ Byte Sekunde, Minute, Stunde, dayOfWeek, dayOfMonth, month, year; getDateDs1307(&Sekunde, &Minute, &Stunde, &TagOfWoche, &TagOfMonat, &Monat, &Jahr); if (Stunde>12) // Entfernen Sie diesen if-Befehl für die 24-Stunden-Zeit {Stunde =Stunde-12; // Dies ist eine 12-Stunden-Uhr} switch(hour) { case 1:dmd.drawString( 1,8, "01", 2, GRAPHICS_NORMAL ); brechen; Fall 2:dmd.drawString( 1,8, "02", 2, GRAPHICS_NORMAL ); brechen; Fall 3:dmd.drawString( 1,8, "03", 2, GRAPHICS_NORMAL ); brechen; Fall 4:dmd.drawString( 1,8, "04", 2, GRAPHICS_NORMAL ); brechen; Fall 5:dmd.drawString( 1,8, "05", 2, GRAPHICS_NORMAL ); brechen; Fall 6:dmd.drawString( 1,8, "06", 2, GRAPHICS_NORMAL ); brechen; Fall 7:dmd.drawString( 1,8, "07", 2, GRAPHICS_NORMAL ); brechen; Fall 8:dmd.drawString( 1,8, "08", 2, GRAPHICS_NORMAL ); brechen; Fall 9:dmd.drawString( 1,8, "09", 2, GRAPHICS_NORMAL ); brechen; Fall 10:dmd.drawString( 1,8, "10", 2, GRAPHICS_NORMAL ); brechen; Fall 11:dmd.drawString( 1,8, "11", 2, GRAPHICS_NORMAL ); brechen; Fall 12:dmd.drawString( 1,8, "12", 2, GRAPHICS_NORMAL ); brechen; Fall 13:dmd.drawString( 1,8, "13", 2, GRAPHICS_NORMAL ); brechen; Fall 14:dmd.drawString( 1,8, "14", 2, GRAPHICS_NORMAL ); brechen; Fall 15:dmd.drawString( 1,8, "15", 2, GRAPHICS_NORMAL ); brechen; Fall 16:dmd.drawString( 1,8, "16", 2, GRAPHICS_NORMAL ); brechen; Fall 17:dmd.drawString( 1,8, "17", 2, GRAPHICS_NORMAL ); brechen; Fall 18:dmd.drawString( 1,8, "18", 2, GRAPHICS_NORMAL ); brechen; Fall 19:dmd.drawString( 1,8, "19", 2, GRAPHICS_NORMAL ); brechen; Fall 20:dmd.drawString( 1,8, "20", 2, GRAPHICS_NORMAL ); brechen; Fall 21:dmd.drawString( 1,8, "21", 2, GRAPHICS_NORMAL ); brechen; Fall 22:dmd.drawString( 1,8, "22", 2, GRAPHICS_NORMAL ); brechen; Fall 23:dmd.drawString( 1,8, "23", 2, GRAPHICS_NORMAL ); brechen; Fall 24:dmd.drawString( 1,8, "24", 2, GRAPHICS_NORMAL ); brechen; }}void drawMinute(){ Byte Sekunde, Minute, Stunde, TagOfWoche, TagOfMonth, Monat, Jahr; getDateDs1307(&Sekunde, &Minute, &Stunde, &TagOfWoche, &TagOfMonat, &Monat, &Jahr); switch(minute) { case 0:dmd.drawString( 20,8, "00", 2, GRAPHICS_NORMAL ); brechen; Fall 1:dmd.drawString( 20,8, "01", 2, GRAPHICS_NORMAL ); brechen; Fall 2:dmd.drawString( 20,8, "02", 2, GRAPHICS_NORMAL ); brechen; Fall 3:dmd.drawString( 20,8, "03", 2, GRAPHICS_NORMAL ); brechen; Fall 4:dmd.drawString( 20,8, "04", 2, GRAPHICS_NORMAL ); brechen; Fall 5:dmd.drawString( 20,8, "05", 2, GRAPHICS_NORMAL ); brechen; Fall 6:dmd.drawString( 20,8, "06", 2, GRAPHICS_NORMAL ); brechen; Fall 7:dmd.drawString( 20,8, "07", 2, GRAPHICS_NORMAL ); brechen; Fall 8:dmd.drawString( 20,8, "08", 2, GRAPHICS_NORMAL ); brechen; Fall 9:dmd.drawString( 20,8, "09", 2, GRAPHICS_NORMAL ); brechen; Fall 10:dmd.drawString( 20,8, "10", 2, GRAPHICS_NORMAL ); brechen; Fall 11:dmd.drawString( 20,8, "11", 2, GRAPHICS_NORMAL ); brechen; Fall 12:dmd.drawString( 20,8, "12", 2, GRAPHICS_NORMAL ); brechen; Fall 13:dmd.drawString( 20,8, "13", 2, GRAPHICS_NORMAL ); brechen; Fall 14:dmd.drawString( 20,8, "14", 2, GRAPHICS_NORMAL ); brechen; Fall 15:dmd.drawString( 20,8, "15", 2, GRAPHICS_NORMAL ); brechen; Fall 16:dmd.drawString( 20,8, "16", 2, GRAPHICS_NORMAL ); brechen; Fall 17:dmd.drawString( 20,8, "17", 2, GRAPHICS_NORMAL ); brechen; Fall 18:dmd.drawString( 20,8, "18", 2, GRAPHICS_NORMAL ); brechen; Fall 19:dmd.drawString( 20,8, "19", 2, GRAPHICS_NORMAL ); brechen; Fall 20:dmd.drawString( 20,8, "20", 2, GRAPHICS_NORMAL ); brechen; Fall 21:dmd.drawString( 20,8, "21", 2, GRAPHICS_NORMAL ); brechen; Fall 22:dmd.drawString( 20,8, "22", 2, GRAPHICS_NORMAL ); brechen; Fall 23:dmd.drawString( 20,8, "23", 2, GRAPHICS_NORMAL ); brechen; Fall 24:dmd.drawString( 20,8, "24", 2, GRAPHICS_NORMAL ); brechen; Fall 25:dmd.drawString( 20,8, "25", 2, GRAPHICS_NORMAL ); brechen; Fall 26:dmd.drawString( 20,8, "26", 2, GRAPHICS_NORMAL ); brechen; Fall 27:dmd.drawString( 20,8, "27", 2, GRAPHICS_NORMAL ); brechen; Fall 28:dmd.drawString( 20,8, "28", 2, GRAPHICS_NORMAL ); brechen; Fall 29:dmd.drawString( 20,8, "29", 2, GRAPHICS_NORMAL ); brechen; Fall 30:dmd.drawString( 20,8, "30", 2, GRAPHICS_NORMAL ); brechen; Fall 31:dmd.drawString( 20,8, "31", 2, GRAPHICS_NORMAL ); brechen; Fall 32:dmd.drawString( 20,8, "32", 2, GRAPHICS_NORMAL ); brechen; Fall 33:dmd.drawString( 20,8, "33", 2, GRAPHICS_NORMAL ); brechen; Fall 34:dmd.drawString( 20,8, "34", 2, GRAPHICS_NORMAL ); brechen; Fall 35:dmd.drawString( 20,8, "35", 2, GRAPHICS_NORMAL ); brechen; Fall 36:dmd.drawString( 20,8, "36", 2, GRAPHICS_NORMAL ); brechen; Fall 37:dmd.drawString( 20,8, "37", 2, GRAPHICS_NORMAL ); brechen; Fall 38:dmd.drawString( 20,8, "38", 2, GRAPHICS_NORMAL ); brechen; Fall 39:dmd.drawString( 20,8, "39", 2, GRAPHICS_NORMAL ); brechen; Fall 40:dmd.drawString( 20,8, "40", 2, GRAPHICS_NORMAL ); brechen; Fall 41:dmd.drawString( 20,8, "41", 2, GRAPHICS_NORMAL ); brechen; Fall 42:dmd.drawString( 20,8, "42", 2, GRAPHICS_NORMAL ); brechen; Fall 43:dmd.drawString( 20,8, "43", 2, GRAPHICS_NORMAL ); brechen; Fall 44:dmd.drawString( 20,8, "44", 2, GRAPHICS_NORMAL ); brechen; Fall 45:dmd.drawString( 20,8, "45", 2, GRAPHICS_NORMAL ); brechen; Fall 46:dmd.drawString( 20,8, "46", 2, GRAPHICS_NORMAL ); brechen; Fall 47:dmd.drawString( 20,8, "47", 2, GRAPHICS_NORMAL ); brechen; Fall 48:dmd.drawString( 20,8, "48", 2, GRAPHICS_NORMAL ); brechen; Fall 49:dmd.drawString( 20,8, "49", 2, GRAPHICS_NORMAL ); brechen; Fall 50:dmd.drawString( 20,8, "50", 2, GRAPHICS_NORMAL ); brechen; Fall 51:dmd.drawString( 20,8, "51", 2, GRAPHICS_NORMAL ); brechen; Fall 52:dmd.drawString( 20,8, "52", 2, GRAPHICS_NORMAL ); brechen; Fall 53:dmd.drawString( 20,8, "53", 2, GRAPHICS_NORMAL ); brechen; Fall 54:dmd.drawString( 20,8, "54", 2, GRAPHICS_NORMAL ); brechen; Fall 55:dmd.drawString( 20,8, "55", 2, GRAPHICS_NORMAL ); brechen; Fall 56:dmd.drawString( 20,8, "56", 2, GRAPHICS_NORMAL ); brechen; Fall 57:dmd.drawString( 20,8, "57", 2, GRAPHICS_NORMAL ); brechen; Fall 58:dmd.drawString( 20,8, "58", 2, GRAPHICS_NORMAL ); brechen; Fall 59:dmd.drawString( 20,8, "59", 2, GRAPHICS_NORMAL ); brechen; }}void drawCol(){ dmd.drawString( 14,8, ":", 1, GRAPHICS_NORMAL);}void runClock(){ drawDay(); Ziehungsdatum(); drawStunde(); drawCol(); drawMinute(); CheckAlarm();}void AlarmSequence() { drawDay(); Ziehungsdatum(); drawStunde(); drawCol(); drawMinute(); digitalWrite (Alarm, HOCH); Verzögerung (1000); dmd.clearScreen(wahr); digitalWrite (Alarm, NIEDRIG); delay(1000);}void CheckAlarm() { AlarmSet =digitalRead (AlarmSetPin); Snooze =digitalRead (SnoozePin); Byte Sekunde, Minute, Stunde, DayOfWeek, DayOfMonth, Monat, Jahr; getDateDs1307(&Sekunde, &Minute, &Stunde, &TagOfWoche, &TagOfMonat, &Monat, &Jahr); /* Nur Alarm auslösen, wenn es sich um einen unten aufgeführten Tag handelt. Dies kann durch Ändern der Zahlen wie folgt geändert werden:1 =Sonntag 2 =Montag 3 =Dienstag 4 =Mittwoch 5 =Donnerstag 6 =Freitag 7 =Samstag */ if(dayOfWeek ==2 || dayOfWeek ==3 | | dayOfWeek ==4 || dayOfWeek ==5 ||dayOfWeek ==6) {//Dies sind Tage, an denen der Alarm klingeln darf, wenn (Stunde ==18 &&Minute ==05) {//Zeit hier einstellen (in 24 Stunden) Zeit) if (AlarmSet ==LOW) {// Wenn der Alarm-Pin eingeschaltet ist Snooze =digitalRead (SnoozePin); while (Snooze ==HIGH) { Snooze =digitalRead (SnoozePin); Alarmsequenz(); } } }}}void loop () { runClock (); }

Schaltpläne


Herstellungsprozess

  1. Kuckucksuhr
  2. Arduino-Pov-Vision-Uhr
  3. DIY einfachste IV9 Numitron-Uhr mit Arduino
  4. Einfache Wordclock (Arduino)
  5. Arduino-Uhr mit islamischen Gebetszeiten
  6. Arduino Spybot
  7. FlickMote
  8. Selbstgemachter Fernseher B-Gone
  9. Arduino-Temp. Monitor und Echtzeituhr mit 3.2 Display
  10. Einfacher Wecker mit DS1302 RTC