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

Arduino RTC LED-Uhr

Komponenten und Verbrauchsmaterialien

Arduino UNO
× 1
Echtzeituhr (RTC)
× 1
Widerstand 1k Ohm
× 15
Durchgangslochwiderstand, 120 Ohm
× 15
Linearregler (7805)
× 1
Kondensator 22 pF
× 1
16-MHz-Kristall
× 1
Kondensator 10 µF
× 1
Knopfzellenbatterie CR2032
× 1
Batteriehalter, Lithium CR2032
× 1
5 mm LED:Grün
× 190
Bipolar - HF-Transistor, NPN
× 10
Allzwecktransistor PNP
× 12
Tastschalter, von oben betätigt
× 4
Digilent 60W PCIe 12V 5A Netzteil
× 1

Notwendige Werkzeuge und Maschinen

Lötkolben (generisch)
Lötdraht, bleifrei
Digilent Mastech MS8217 Autorange Digitalmultimeter

Über dieses Projekt

Zuerst müssen Sie die folgenden Bibliotheken herunterladen (Link befindet sich am Ende dieser Seite) 1. Wire.h

2. RTClib.hTeileliste

Video ansehen

Dies ist das RTC-Uhrenmodul

Dies ist die Arduino-Schaltung

RTC-Kabelverbindungen

RTC-Schalter

Identifizieren Sie Anode und Kathode

Schaltplan (GEMEINSAME ANODE)

WENN SIE GEMEINSAME KATHODEN-LED VERWENDEN, WIE FOLGEN SIE DIE ÄNDERUNGEN VOR

STROMVERSORGUNG

Code

  • LED-Uhr-CODEs
LED-Uhr CODEsArduino
Laden Sie diesen Code herunter und laden Sie ihn in das Projekt hoch
/* 4-stellige 7-Segment-Anzeige:http://www.sparkfun.com/products/9483 Datenblatt:http://www.sparkfun.com/datasheets/Components/LED/ 7-Segment/YSD-439AR6B-35.pdf */// Modified connexion by niq_ro from http://nicuflorica.blogspot.com// dataseet:http://www.tme.eu/ro/Document/dfc2efde2e22005fd28615e298ea2655/KW4 -563XSA.pdf// Code geändert von BMIAK Basnayaka// http://www.setnfix.comint digit1 =11; int-Ziffer2 =10;int-Ziffer3 =9; int-Ziffer4 =6;int-Ziffer5 =5; int digit6 =3; // Pin-Mapping von Arduino zum ATmega DIP28, wenn Sie es brauchen // http://www.arduino.cc/en/Hacking/PinMappingint segA =0; // Anzeigestift 11int segB =1; // Anzeigestift 7int segC =2; // Anzeigestift 4int segD =4; // Anzeigestift 2int segE =7; // Anzeigestift 1int segF =8; // Anzeigestift 10int segG =12; // Anzeigestift 5int segDP =13; // Display-Pin 3#include #include "RTClib.h"RTC_DS1307 RTC;// Datums- und Uhrzeitfunktionen mit einer DS1307 RTC, die über I2C und Wire lib verbunden ist// Original-Sketck von http://learn.adafruit .com/ds1307-real-time-clock-breakout-board-kit/// Teil mit SQW=1Hz hinzufügen von http://tronixstuff.wordpress.com/2010/10/20/tutorial-arduino-and-the- i2c-bus/// Teil mit manueller Anpassung hinzufügen http://www.bristolwatch.com/arduino/arduino_ds1307.htmbyte SW0 =A0;Byte SW1 =A2;Byte SW2 =A1;Byte SWT =A3;int Adhr=0; int Admnt=0;int D =0;int Z =0; // use for hexa in zecimal Conversionlong zh, uh, ore;long zm, um, miniti;void setup() { //Serial.begin(57600); Wire.begin(); RTC.begin(); // RTC.adjust(DateTime(F(__DATE__), F(__TIME__))); // Wenn Sie die Uhr einstellen müssen ... entfernen Sie einfach // aus der Zeile darüber // Teilecode zum Blinken von LEDWire.beginTransmission (0x68);Wire.write(0x07); // Zeiger auf SQW-Adresse verschieben // Wire.write (0x00); // schaltet den SQW-Pin aus Wire.write (0x10); // sendet 0x10 (hex) 00010000 (binär) an das Steuerregister - schaltet die Rechteckwelle mit 1 Hz ein // Wire.write (0x13); // sendet 0x13 (hex) 00010011 (binär) 32kHzWire.endTransmission(); pinMode (segA, AUSGANG); pinMode (segB, AUSGANG); pinMode (segC, AUSGANG); pinMode (segD, AUSGANG); pinMode (segE, AUSGANG); pinMode (segF, AUSGANG); pinMode (segG, AUSGANG); pinMode (segDP, AUSGANG); pinMode (Ziffer1, AUSGANG); pinMode (Ziffer2, AUSGANG); PinMode (Digit3, AUSGANG); PinMode (Ziffer4, AUSGANG); PinMode (Ziffer5, AUSGANG); pinMode (digit6, OUTPUT); // Serial.begin (9600); pinMode (SW0, INPUT); // NEIN. DruckknopfschalterpinMode (SW1, INPUT); // NEIN. DruckknopfschalterpinMode (SW2, INPUT); // NEIN. DruckknopfschalterpinMode (SWT, INPUT); // NEIN. DruckknopfschalterdigitalWrite (SW0, HIGH); // Pull-ups ondigitalWrite (SW1, HIGH); digitalWrite (SW2, HIGH); digitalWrite (segDP, LOW);}void loop () { DateTime now =RTC.now (); lange HR =jetzt.Stunde () * 1000; lange Zeit =(HR*10)+jetzt.Minute()*100+jetzt.Sekunde(); Adhr =jetzt.Stunde(); Admnt=now.minute();int DIM =0;if (timp>
=250000)timp=timp-240000;//------------------------ -------------------//12/24 Stunden Scheiße //--------- ---------------------------------------------------------wenn (timp <130000 ) {digitalWrite (segDP, LOW);} if (digitalRead (SWT) ==0) {delay (300); if (D ==0) { D =1;delay (200);} else{D =0;}}if (D ==0){ if (timp>
=130000){timp=timp-120000;digitalWrite( segDP, HIGH);}}if (timp>
=130000){ digitalWrite(segDP, LOW);}if ((D==1)&(timp <130000))digitalWrite(segDP, LOW); //--- -------------------------------------------------- - //int timp =(now.minute(), DEC); // displayNumber (12); // Dies ist die anzuzeigende Zahl für (int i =100; i> 0; i--) { if (timp>
=100000) displayNumber01 (timp); sonst displayNumber02(timp); } for(int i =100; i> 0; i--) { if (timp>
=100000) displayNumber03 (timp); sonst displayNumber04(timp); } for(int i =100; i> 0; i--) { if (timp>
=100000) displayNumber05 (timp); sonst displayNumber06(timp); aufrechtzuerhalten. Wenn (digitalRead (SW0) ==0) {Verzögerung (100); Z =1; Zeit einstellen(); } // Halten Sie den Schalter gedrückt, um die Zeit einzustellen}void set_time () { Byte Minuten1 =0; Byte Stunden1 =0; Byte-Minuten =0; Bytestunden =0; Stunden =Adhr; Minuten=Admnt; if ((Stunden &0x0f)> 9) Stunden =Stunden + 6; if (Stunden> 0x24) Stunden =1; // Mitternacht 12.00 wird als 12:00 (mit eingeschalteter PM-LED) oder 24:00 angezeigt // wenn (Stunden> 0x24) Stunden =1; // Mitternacht 12.00 wird als 0:00 angezeigt, wenn ((Minuten &0x0f)> 9) Minuten =Minuten + 6; if (Minuten> 0x59) Minuten =0; Während (!(Z==0)) {// Zeitschalter muss losgelassen werden, um zu beenden Int TST =digitalRead (SW2); while (TST==0) // Stunden setzen { Stunden++; // Hexa in Zecimal umwandeln:zh =Stunden / 16; äh =Stunden - 16 * zh; Erz =10 * zh + uh; zm =Minuten / 16; um =Minuten - 16 * zm; miniti =10 * zm + um; if ((Stunden &0x0f)> 9) Stunden =Stunden + 6; if (Stunden> 0x24) Stunden =1; // Mitternacht 12.00 wird als 12:00 (mit eingeschalteter PM-LED) oder 24:00 angezeigt // wenn (Stunden> 0x24) Stunden =1; // Mitternacht 12.00 wird als 0:00 angezeigt if (hours <=9) delay(1); for(int i =400; i> 0; i--) { displayNumber01 (ore*10000+miniti*100); } TST =digitalRead (SW2); aufrechtzuerhalten. Während (!(digitalRead(SW1))) // Minuten einstellen {minutes++; // Hexa in Zecimal umwandeln:zh =Stunden / 16; äh =Stunden - 16 * zh; Erz =10 * zh + uh; zm =Minuten / 16; um =Minuten - 16 * zm; miniti =10 * zm + um; for(int i =400; i> 0; i--) { displayNumber01 (ore*10000+miniti*100); } if ((Minuten &0x0f)> 9) Minuten =Minuten + 6; if (Minuten> 0x59) Minuten =0; if (Minuten>=9) Verzögerung (1); } Wire.beginTransmission(0x68); // DS1307 aktivieren Wire.write (0); // wo beginnen Wire.write (0x00); // Sekunden Wire.write (Minuten); // Minuten Wire.write (0x80 | Stunden); // Stunden (24-Stunden-Zeit) Wire.write (0x06); // Tag 01-07 Wire.write (0x01); // Datum 0-31 Wire.write (0x05); // Monat 0-12 Wire.write (0x09); // Jahr 00-99 Wire.write (0x10); // Control 0x10 erzeugt eine 1 Hz Rechteckwelle an Pin 7. Wire.endTransmission(); // Hexa in Zecimal umwandeln:zh =Stunden / 16; äh =Stunden - 16 * zh; Erz =10 * zh + uh; zm =Minuten / 16; um =Minuten - 16 * zm; miniti =10 * zm + um; for(int i =400; i> 0; i--) { displayNumber01 (ore*10000+miniti*100); } Verzögerung (100); // Serial.print (digitalRead (SW0)); if (digitalRead (SW0) ==0) Z =0; Verzögerung (300); } // Serial.print (SW2);}void displayNumber01 (long toDisplay) {#define DISPLAY_BRIGHTNESS 25#define DIGIT_ON HIGH#define DIGIT_OFF LOW for(int digit =6; digit> 0; digit--) {//einschalten eine Ziffer für eine kurze Zeitschaltuhr (Ziffer) { Fall 1:digitalWrite (Ziffer1, DIGIT_ON); brechen; Fall 2:digitalWrite (Ziffer2, DIGIT_ON); // digitalWrite (segDP, LOW); brechen; Fall 3:digitalWrite (Ziffer3, DIGIT_ON); brechen; Fall 4:digitalWrite (Ziffer4, DIGIT_ON); brechen; Fall 5:digitalWrite(digit5, DIGIT_ON); brechen; Fall 6:digitalWrite(digit6, DIGIT_ON); brechen; } lightNumber(toDisplay % 10); toDisplay /=10; VerzögerungMikrosekunden (DISPLAY_BRIGHTNESS); // Alle Segmente ausschalten lightNumber (10); // Alle Ziffern ausschalten DigitalWrite (Digit1, DIGIT_OFF); digitalWrite (Ziffer2, DIGIT_OFF); digitalWrite (Digit3, DIGIT_OFF); digitalWrite (Ziffer4, DIGIT_OFF); digitalWrite (Ziffer5, DIGIT_OFF); digitalWrite(digit6, DIGIT_OFF);}} void displayNumber02(long toDisplay) {#define DISPLAY_BRIGHTNESS 25#define DIGIT_ON HIGH#define DIGIT_OFF LOW for(int digit =6; digit> 0; digit--) {//Eine Ziffer einschalten für kurze Zeit switch(digit) { case 1:lightNumber(10); brechen; Fall 2:digitalWrite (Ziffer2, DIGIT_ON); // digitalWrite (segDP, LOW); brechen; Fall 3:digitalWrite (Ziffer3, DIGIT_ON); brechen; Fall 4:digitalWrite (Ziffer4, DIGIT_ON); brechen; Fall 5:digitalWrite(digit5, DIGIT_ON); brechen; Fall 6:digitalWrite(digit6, DIGIT_ON); brechen; } lightNumber(toDisplay % 10); toDisplay /=10; VerzögerungMikrosekunden (DISPLAY_BRIGHTNESS); // Alle Segmente ausschalten lightNumber (10); // Alle Ziffern ausschalten DigitalWrite (Digit1, DIGIT_OFF); digitalWrite (Ziffer2, DIGIT_OFF); digitalWrite (Digit3, DIGIT_OFF); digitalWrite (Ziffer4, DIGIT_OFF); digitalWrite (Ziffer5, DIGIT_OFF); digitalWrite(digit6, DIGIT_OFF);}} void displayNumber03(long toDisplay) {#define DISPLAY_BRIGHTNESS 25#define DIGIT_ON HIGH#define DIGIT_OFF LOW for(int digit =6; digit> 0; digit--) {//Eine Ziffer einschalten für kurze Zeit switch(digit) { Fall 1:digitalWrite(digit1, DIGIT_ON); brechen; Fall 2:digitalWrite (Ziffer2, DIGIT_ON); brechen; Fall 3:digitalWrite (Ziffer3, DIGIT_ON); brechen; Fall 4:digitalWrite (Ziffer4, DIGIT_ON); brechen; Fall 5:digitalWrite(digit5, DIGIT_ON); brechen; Fall 6:digitalWrite(digit6, DIGIT_ON); brechen; } lightNumber(toDisplay % 10); toDisplay /=10; VerzögerungMikrosekunden (DISPLAY_BRIGHTNESS); // Alle Segmente ausschalten lightNumber (10); // Alle Ziffern ausschalten DigitalWrite (Digit1, DIGIT_OFF); digitalWrite (Ziffer2, DIGIT_OFF); digitalWrite (Digit3, DIGIT_OFF); digitalWrite (Ziffer4, DIGIT_OFF); digitalWrite (Ziffer5, DIGIT_OFF); digitalWrite(digit6, DIGIT_OFF);}} void displayNumber04(long toDisplay) {#define DISPLAY_BRIGHTNESS 25#define DIGIT_ON HIGH#define DIGIT_OFF LOW for(int digit =6; digit> 0; digit--) {//Eine Ziffer einschalten für kurze Zeit switch(digit) { case 1:lightNumber(10); brechen; Fall 2:digitalWrite (Ziffer2, DIGIT_ON); brechen; Fall 3:digitalWrite (Ziffer3, DIGIT_ON); brechen; Fall 4:digitalWrite (Ziffer4, DIGIT_ON); brechen; Fall 5:digitalWrite(digit5, DIGIT_ON); brechen; Fall 6:digitalWrite(digit6, DIGIT_ON); brechen; } lightNumber(toDisplay % 10); toDisplay /=10; VerzögerungMikrosekunden (DISPLAY_BRIGHTNESS); // Alle Segmente ausschalten lightNumber (10); // Alle Ziffern ausschalten DigitalWrite (Digit1, DIGIT_OFF); digitalWrite (Ziffer2, DIGIT_OFF); digitalWrite (Digit3, DIGIT_OFF); digitalWrite (Ziffer4, DIGIT_OFF); digitalWrite (Ziffer5, DIGIT_OFF); digitalWrite(digit6, DIGIT_OFF);}} void displayNumber05(long toDisplay) {#define DISPLAY_BRIGHTNESS 25#define DIGIT_ON HIGH#define DIGIT_OFF LOW for(int digit =6; digit> 0; digit--) {//Eine Ziffer einschalten für kurze Zeit switch(digit) { Fall 1:digitalWrite(digit1, DIGIT_ON); brechen; Fall 2:digitalWrite (Ziffer2, DIGIT_ON); brechen; Fall 3:digitalWrite (Ziffer3, DIGIT_ON); brechen; Fall 4:digitalWrite (Ziffer4, DIGIT_ON); brechen; Fall 5:digitalWrite(digit5, DIGIT_ON); brechen; Fall 6:digitalWrite(digit6, DIGIT_ON); brechen; } lightNumber(toDisplay % 10); toDisplay /=10; VerzögerungMikrosekunden (DISPLAY_BRIGHTNESS); // Alle Segmente ausschalten lightNumber (10); // Alle Ziffern ausschalten DigitalWrite (Digit1, DIGIT_OFF); digitalWrite (Ziffer2, DIGIT_OFF); digitalWrite (Digit3, DIGIT_OFF); digitalWrite (Ziffer4, DIGIT_OFF); digitalWrite (Ziffer5, DIGIT_OFF); digitalWrite(digit6, DIGIT_OFF);}} void displayNumber06(long toDisplay) {#define DISPLAY_BRIGHTNESS 25#define DIGIT_ON HIGH#define DIGIT_OFF LOW for(int digit =6; digit> 0; digit--) {//Eine Ziffer einschalten für kurze Zeit switch(digit) { case 1://digitalWrite(digit1, DIGIT_ON); brechen; Fall 2:digitalWrite (Ziffer2, DIGIT_ON); brechen; Fall 3:digitalWrite (Ziffer3, DIGIT_ON); brechen; Fall 4:digitalWrite (Ziffer4, DIGIT_ON); brechen; Fall 5:digitalWrite(digit5, DIGIT_ON); brechen; Fall 6:digitalWrite(digit6, DIGIT_ON); brechen; } lightNumber(toDisplay % 10); toDisplay /=10; VerzögerungMikrosekunden (DISPLAY_BRIGHTNESS); // Alle Segmente ausschalten lightNumber (10); // Alle Ziffern ausschalten DigitalWrite (Digit1, DIGIT_OFF); digitalWrite (Ziffer2, DIGIT_OFF); digitalWrite (Digit3, DIGIT_OFF); digitalWrite (Ziffer4, DIGIT_OFF); digitalWrite (Ziffer5, DIGIT_OFF); digitalWrite (digit6, DIGIT_OFF);}} // Bei einer Zahl werden diese Segmente eingeschaltet // Wenn Zahl ==10, dann schalte numbervoid lightNumber (int numberToDisplay) aus {//Common Anode ********* **************#define SEGMENT_ON HIGH#define SEGMENT_OFF LOW/* Gemeinsame Kathode ***************** #define SEGMENT_ON LOW # Definiere SEGMENT_OFF HIGH*/ switch (numberToDisplay){ case 0:digitalWrite(segA, SEGMENT_ON); digitalWrite(segB, SEGMENT_ON); digitalWrite(segC, SEGMENT_ON); digitalWrite(segD, SEGMENT_ON); digitalWrite(segE, SEGMENT_ON); digitalWrite(segF, SEGMENT_ON); digitalWrite(segG, SEGMENT_OFF); brechen; Fall 1:digitalWrite(segA, SEGMENT_OFF); digitalWrite(segB, SEGMENT_ON); digitalWrite(segC, SEGMENT_ON); digitalWrite(segD, SEGMENT_OFF); digitalWrite(segE, SEGMENT_OFF); digitalWrite(segF, SEGMENT_OFF); digitalWrite(segG, SEGMENT_OFF); brechen; Fall 2:digitalWrite(segA, SEGMENT_ON); digitalWrite(segB, SEGMENT_ON); digitalWrite(segC, SEGMENT_OFF); digitalWrite(segD, SEGMENT_ON); digitalWrite(segE, SEGMENT_ON); digitalWrite(segF, SEGMENT_OFF); digitalWrite(segG, SEGMENT_ON); brechen; Fall 3:digitalWrite(segA, SEGMENT_ON); digitalWrite(segB, SEGMENT_ON); digitalWrite(segC, SEGMENT_ON); digitalWrite(segD, SEGMENT_ON); digitalWrite(segE, SEGMENT_OFF); digitalWrite (segF, SEGMENT_OFF); digitalWrite(segG, SEGMENT_ON); brechen; Fall 4:digitalWrite(segA, SEGMENT_OFF); digitalWrite(segB, SEGMENT_ON); digitalWrite(segC, SEGMENT_ON); digitalWrite(segD, SEGMENT_OFF); digitalWrite(segE, SEGMENT_OFF); digitalWrite(segF, SEGMENT_ON); digitalWrite(segG, SEGMENT_ON); brechen; Fall 5:digitalWrite(segA, SEGMENT_ON); digitalWrite(segB, SEGMENT_OFF); digitalWrite(segC, SEGMENT_ON); digitalWrite(segD, SEGMENT_ON); digitalWrite(segE, SEGMENT_OFF); digitalWrite(segF, SEGMENT_ON); digitalWrite(segG, SEGMENT_ON); brechen; Fall 6:digitalWrite(segA, SEGMENT_ON); digitalWrite(segB, SEGMENT_OFF); digitalWrite(segC, SEGMENT_ON); digitalWrite(segD, SEGMENT_ON); digitalWrite(segE, SEGMENT_ON); digitalWrite(segF, SEGMENT_ON); digitalWrite(segG, SEGMENT_ON); brechen; Fall 7:digitalWrite(segA, SEGMENT_ON); digitalWrite(segB, SEGMENT_ON); digitalWrite(segC, SEGMENT_ON); digitalWrite(segD, SEGMENT_OFF); digitalWrite(segE, SEGMENT_OFF); digitalWrite (segF, SEGMENT_OFF); digitalWrite(segG, SEGMENT_OFF); brechen; Fall 8:digitalWrite(segA, SEGMENT_ON); digitalWrite(segB, SEGMENT_ON); digitalWrite(segC, SEGMENT_ON); digitalWrite(segD, SEGMENT_ON); digitalWrite(segE, SEGMENT_ON); digitalWrite(segF, SEGMENT_ON); digitalWrite(segG, SEGMENT_ON); brechen; Fall 9:digitalWrite(segA, SEGMENT_ON); digitalWrite(segB, SEGMENT_ON); digitalWrite(segC, SEGMENT_ON); digitalWrite(segD, SEGMENT_ON); digitalWrite(segE, SEGMENT_OFF); digitalWrite(segF, SEGMENT_ON); digitalWrite(segG, SEGMENT_ON); brechen; // alle Segmente sind EIN Fall 10:digitalWrite(segA, SEGMENT_OFF); digitalWrite(segB, SEGMENT_OFF); digitalWrite(segC, SEGMENT_OFF); digitalWrite(segD, SEGMENT_OFF); digitalWrite(segE, SEGMENT_OFF); digitalWrite (segF, SEGMENT_OFF); digitalWrite(segG, SEGMENT_OFF); brechen; }// Ende der Codierung, BUDHUSARANAI, Viel Glück. }

Schaltpläne

Dies ist die Verkabelung von SSD mit LED

Herstellungsprozess

  1. Arduino-Pov-Vision-Uhr
  2. Einfache Wordclock (Arduino)
  3. DIY Einfaches 20-kHz-Arduino-Oszilloskop auf Nokia 5110 LCD
  4. Hauptuhr
  5. Smart Blinds
  6. italienische Wordclock
  7. Arduino mit Bluetooth zur Steuerung einer LED!
  8. Arduino-Vierbeiner
  9. 7-Segment-Array-Uhr
  10. Ein isolierter Analogeingang für Arduino