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

Arduino RTC LED-klok

Componenten en benodigdheden

Arduino UNO
× 1
Real Time Clock (RTC)
× 1
Weerstand 1k ohm
× 15
Through Hole Resistor, 120 ohm
× 15
Lineaire regelaar (7805)
× 1
Condensator 22 pF
× 1
16 MHz kristal
× 1
Condensator 10 µF
× 1
Knoopcelbatterij CR2032
× 1
Batterijhouder, lithium CR2032
× 1
5 mm LED:groen
× 190
Bipolair - RF-transistor, NPN
× 10
Transistor PNP voor algemeen gebruik
× 12
Tactiele schakelaar, bovenkant bediend
× 4
Digilent 60W PCIe 12V 5A voeding
× 1

Benodigde gereedschappen en machines

Soldeerbout (algemeen)
Soldeerdraad, loodvrij
Digilent Mastech MS8217 Autorange digitale multimeter

Over dit project

Eerst moet u de volgende bibliotheken downloaden (link staat aan het einde van deze pagina) 1. Draad.h

2. RTClib.hOnderdelenlijst

Bekijk de video

Dit is de RTC-klokmodule

Dit is het Arduino-circuit

RTC-bedradingverbindingen

RTC-schakelaars

Identificeer anode en kathode

Schakelschema (GEMEENSCHAPPELIJKE ANODE)

ALS U GEMEENSCHAPPELIJKE KATHODE-LED GEBRUIKT, VERANDER DAN ALS VOLGT

STROOMVOORZIENING

Code

  • LED klok CODE's
LED-klok CODE'sArduino
Download deze code en upload naar het project
/* 4-cijferig 7-segments display:http://www.sparkfun.com/products/9483 Gegevensblad:http://www.sparkfun.com/datasheets/Components/LED/ 7-Segment/YSD-439AR6B-35.pdf */// gewijzigde verbinding door niq_ro van http://nicuflorica.blogspot.com// dataseet:http://www.tme.eu/ro/Document/dfc2efde2e22005fd28615e298ea2655/KW4 -563XSA.pdf// Code gewijzigd door BMIAK Basnayaka// http://www.setnfix.comint digit1 =11; int cijfer2 =10;int cijfer3 =9; int cijfer4 =6;int cijfer5 =5; int cijfer6 =3; //Pin mapping van Arduino naar de ATmega DIP28 als je het nodig hebt//http://www.arduino.cc/en/Hacking/PinMappingint segA =0; // Toon pin 11int segB =1; // Toon pin 7int segC =2; // Toon pin 4int segD =4; // Toon pin 2int segE =7; // Toon pin 1int segF =8; // Toon pin 10int segG =12; //Display pin 5int segDP =13; // Display pin 3#include #include "RTClib.h"RTC_DS1307 RTC;// Datum- en tijdfuncties met behulp van een DS1307 RTC aangesloten via I2C en Wire lib// originele schets van http://learn.adafruit .com/ds1307-real-time-clock-breakout-board-kit/// voeg een onderdeel toe met SQW=1Hz van http://tronixstuff.wordpress.com/2010/10/20/tutorial-arduino-and-the- i2c-bus/// onderdeel toevoegen met handmatige aanpassing 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;// gebruik voor hexa in zecimale conversielong zh, uh, ore;long zm, um, miniti;void setup() { //Serial.begin(57600); Draad.begin(); RTC.begin(); // RTC.adjust(DateTime(F(__DATE__), F(__TIME__)));// als je de klok moet instellen... verwijder gewoon // van de regel erboven// deelcode voor knipperende LEDWire.beginTransmission (0x68);Wire.write(0x07); // verplaats de aanwijzer naar het SQW-adres// Wire.write (0x00); // schakelt de SQW-pin uit Wire.write (0x10); // stuurt 0x10 (hex) 00010000 (binair) naar het controleregister - schakelt blokgolf in op 1Hz// Wire.write (0x13); // verzendt 0x13 (hex) 00010011 (binair) 32 kHzWire.endTransmission (); pinMode (segA, UITGANG); pinMode (segB, UITGANG); pinMode (segC, UITGANG); pinMode (segD, UITGANG); pinMode (segE, UITGANG); pinMode (segF, UITGANG); pinMode (segG, UITGANG); pinMode (segDP, UITGANG); pinMode(cijfer1, UITGANG); pinMode(cijfer2, UITGANG); pinMode(cijfer3, UITGANG); pinMode(cijfer4, UITGANG); pinMode (cijfer 5, UITGANG); pinMode(digit6, OUTPUT);//Serial.begin(9600);pinMode(SW0, INPUT); // NEE. drukknop switchpinMode (SW1, INPUT); // NEE. drukknop switchpinMode (SW2, INPUT); // NEE. drukknop switchpinMode (SWT, INPUT); // NEE. drukknop switchdigitalWrite (SW0, HOOG); // pull-ups opdigitalWrite(SW1, HIGH);digitalWrite(SW2, HIGH);digitalWrite(segDP, LOW);}void loop() {DateTime now =RTC.now(); lange HR =nu.uur()*1000; lange timp =(HR*10)+nu.minuut()*100+nu.seconden(); Adhr =nu.uur(); Admnt=nu.minuut();int DIM =0;if (timp>
=250000)timp=timp-240000;//---------------------- --------------------------------//12/24 uur schijten //--------- ---------------------------------------------if (timp <130000 ){digitalWrite(segDP, LOW);}if (digitalRead(SWT)==0){vertraging (300); if (D ==0) { D =1;vertraging(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); // dit is het nummer om voor te tonen (int i =100; i>0; i--) {if (timp>
=100000) displayNumber01(timp); anders displayNumber02(timp); } for(int i =100; i>0; i--) { if (timp>
=100000) displayNumber03(timp); anders displayNumber04(timp); } for(int i =100; i>0; i--) { if (timp>
=100000) displayNumber05(timp); anders displayNumber06(timp); } if (digitalRead(SW0)==0){delay(100);Z=1; tijd instellen(); }// houd de schakelaar ingedrukt om de tijd in te stellen} void set_time() { byte minutes1 =0; byte-uren1 =0; byte minuten =0; byte-uren =0; uur=Adhr; minuten=Advertentie; if ((uren &0x0f)> 9) uur =uur + 6; als (uren> 0x24) uur =1; // Middernacht 12.00 wordt weergegeven als 12:00 (Met PM LED aan) of 24:00 //if (hours> 0x24) hours =1; // Middernacht 12.00 wordt weergegeven als 0:00 als ((minuten &0x0f)> 9) minuten =minuten + 6; als (minuten> 0x59) minuten =0; while (!(Z==0)){ // de ingestelde tijdschakelaar moet worden losgelaten om int TST =digitalRead (SW2) af te sluiten; while (TST==0) // stel uren in { hours++; // omzetten van hexa in zecimaal:zh =uur / 16; uh =uur - 16 * zh; erts =10 * zh + uh; zm =minuten / 16; um =minuten - 16 * zm; miniti =10 * zm + um; if ((uren &0x0f)> 9) uur =uur + 6; als (uren> 0x24) uur =1; // Middernacht 12.00 wordt weergegeven als 12:00 (Met PM LED aan) of 24:00 //if (hours> 0x24) hours =1; // Middernacht 12.00 wordt weergegeven als 0:00 als (uren <=9) vertraging(1); for(int i =400; i>0; i--) { displayNumber01(ore*10000+miniti*100); } TST =digitaal lezen (SW2); } while (!(digitalRead(SW1))) // stel minuten in {minuten++; // omzetten van hexa in zecimaal:zh =uur / 16; uh =uur - 16 * zh; erts =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; als (minuten> 0x59) minuten =0; if (minuten>=9) vertraging(1); } Wire.beginTransmission (0x68); // activeer DS1307 Wire.write (0); // waar te beginnen Wire.write (0x00); //seconden Wire.write (minuten); //minuten Wire.write (0x80 | uur); // uur (24 uur tijd) Wire.write (0x06); // Dag 01-07 Wire.write (0x01); // Datum 0-31 Wire.write (0x05); // maand 0-12 Wire.write (0x09); // Jaar 00-99 Wire.write (0x10); // Control 0x10 produceert een 1 HZ blokgolf op pin 7. Wire.endTransmission(); // omzetten van hexa in zecimaal:zh =uur / 16; uh =uur - 16 * zh; erts =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); }vertraging(100); //Serial.print(digitalRead(SW0));if (digitalRead(SW0)==0) Z =0; vertraging (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--) {//Turn on een cijfer voor een korte tijdschakelaar (cijfer) { geval 1:digitalWrite (cijfer1, DIGIT_ON); pauze; geval 2:digitalWrite(digit2, DIGIT_ON); //digitalWrite (segDP, LAAG); pauze; geval 3:digitalWrite(digit3, DIGIT_ON); pauze; geval 4:digitalWrite(digit4, DIGIT_ON); pauze; geval 5:digitalWrite(digit5, DIGIT_ON); pauze; geval 6:digitalWrite(digit6, DIGIT_ON); pauze; } lightNumber (naar Display % 10); naarWeergeven /=10; vertraging Microseconden (DISPLAY_BRIGHTNESS); // Schakel alle segmenten lightNumber (10) uit; // Schakel alle cijfers digitalWrite (digit1, DIGIT_OFF) uit; digitalWrite(cijfer2, DIGIT_OFF); digitalWrite(cijfer3, DIGIT_OFF); digitalWrite(digit4, DIGIT_OFF); digitalWrite(digit5, 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--) {//Schakel een cijfer in voor een korte tijd schakelen (cijfer) { geval 1:lightNumber (10); pauze; geval 2:digitalWrite(digit2, DIGIT_ON); //digitalWrite (segDP, LAAG); pauze; geval 3:digitalWrite(digit3, DIGIT_ON); pauze; geval 4:digitalWrite(digit4, DIGIT_ON); pauze; geval 5:digitalWrite(digit5, DIGIT_ON); pauze; geval 6:digitalWrite(digit6, DIGIT_ON); pauze; } lightNumber (naar Display % 10); naarWeergeven /=10; vertraging Microseconden (DISPLAY_BRIGHTNESS); // Schakel alle segmenten lightNumber (10) uit; // Schakel alle cijfers digitalWrite (digit1, DIGIT_OFF) uit; digitalWrite(cijfer2, DIGIT_OFF); digitalWrite(cijfer3, DIGIT_OFF); digitalWrite(digit4, DIGIT_OFF); digitalWrite(digit5, 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--) {//Schakel een cijfer in voor een korte tijd schakelen (cijfer) { geval 1:digitalWrite (cijfer1, DIGIT_ON); pauze; geval 2:digitalWrite(digit2, DIGIT_ON); pauze; geval 3:digitalWrite(digit3, DIGIT_ON); pauze; geval 4:digitalWrite(digit4, DIGIT_ON); pauze; geval 5:digitalWrite(digit5, DIGIT_ON); pauze; geval 6:digitalWrite(digit6, DIGIT_ON); pauze; } lightNumber (naar Display % 10); naarWeergeven /=10; vertraging Microseconden (DISPLAY_BRIGHTNESS); // Schakel alle segmenten lightNumber (10) uit; // Schakel alle cijfers digitalWrite (digit1, DIGIT_OFF) uit; digitalWrite(cijfer2, DIGIT_OFF); digitalWrite(cijfer3, DIGIT_OFF); digitalWrite(digit4, DIGIT_OFF); digitalWrite(digit5, 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--) {//Schakel een cijfer in voor een korte tijd schakelen (cijfer) { geval 1:lightNumber (10); pauze; geval 2:digitalWrite(digit2, DIGIT_ON); pauze; geval 3:digitalWrite(digit3, DIGIT_ON); pauze; geval 4:digitalWrite(digit4, DIGIT_ON); pauze; geval 5:digitalWrite(digit5, DIGIT_ON); pauze; geval 6:digitalWrite(digit6, DIGIT_ON); pauze; } lightNumber (naar Display % 10); naarWeergeven /=10; vertraging Microseconden (DISPLAY_BRIGHTNESS); // Schakel alle segmenten lightNumber (10) uit; // Schakel alle cijfers digitalWrite (digit1, DIGIT_OFF) uit; digitalWrite(cijfer2, DIGIT_OFF); digitalWrite(cijfer3, DIGIT_OFF); digitalWrite(digit4, DIGIT_OFF); digitalWrite(digit5, 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--) {//Schakel een cijfer in voor een korte tijd schakelen (cijfer) { geval 1:digitalWrite (cijfer1, DIGIT_ON); pauze; geval 2:digitalWrite(digit2, DIGIT_ON); pauze; geval 3:digitalWrite(digit3, DIGIT_ON); pauze; geval 4:digitalWrite(digit4, DIGIT_ON); pauze; geval 5:digitalWrite(digit5, DIGIT_ON); pauze; geval 6:digitalWrite(digit6, DIGIT_ON); pauze; } lightNumber (naar Display % 10); naarWeergeven /=10; vertraging Microseconden (DISPLAY_BRIGHTNESS); // Schakel alle segmenten lightNumber (10) uit; // Schakel alle cijfers digitalWrite (digit1, DIGIT_OFF) uit; digitalWrite(cijfer2, DIGIT_OFF); digitalWrite(cijfer3, DIGIT_OFF); digitalWrite(digit4, DIGIT_OFF); digitalWrite(digit5, 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--) {//Schakel een cijfer in voor een korte tijd schakelen (cijfer) { geval 1://digitalWrite (cijfer1, DIGIT_ON); pauze; geval 2:digitalWrite(digit2, DIGIT_ON); pauze; geval 3:digitalWrite(digit3, DIGIT_ON); pauze; geval 4:digitalWrite(digit4, DIGIT_ON); pauze; geval 5:digitalWrite(digit5, DIGIT_ON); pauze; geval 6:digitalWrite(digit6, DIGIT_ON); pauze; } lightNumber (naar Display % 10); naarWeergeven /=10; vertraging Microseconden (DISPLAY_BRIGHTNESS); // Schakel alle segmenten lightNumber (10) uit; // Schakel alle cijfers digitalWrite (digit1, DIGIT_OFF) uit; digitalWrite(cijfer2, DIGIT_OFF); digitalWrite(cijfer3, DIGIT_OFF); digitalWrite(digit4, DIGIT_OFF); digitalWrite(digit5, DIGIT_OFF); digitalWrite (digit6, DIGIT_OFF);}} //Gegeven een nummer, zet die segmenten aan // Als nummer ==10, schakel dan numbervoid lightNumber (int numberToDisplay) {// Common Anode ********** uit ****************#define SEGMENT_ON HIGH#define SEGMENT_OFF LOW/* Gemeenschappelijke kathode **************** #define SEGMENT_ON LOW # definieer 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); pauze; geval 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); pauze; geval 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); pauze; geval 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); pauze; geval 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); pauze; geval 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); pauze; geval 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); pauze; geval 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); pauze; geval 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); pauze; geval 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); pauze; // alle segmenten zijn AAN case 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); pauze; }// Einde van de codering, BUDHUSARANAI, Veel succes. }

Schema's

Dit is de bedrading van SSD met LED

Productieproces

  1. Arduino pov vision-klok
  2. Eenvoudige Word Clock (Arduino)
  3. DIY Eenvoudige 20 kHz Arduino-oscilloscoop op Nokia 5110 LCD
  4. Hoofdklok
  5. Slimme jaloezieën
  6. Italiaanse Word Clock
  7. Arduino met Bluetooth om een ​​LED te bedienen!
  8. Arduino Quadruped
  9. 7-segment arrayklok
  10. Sigfox kWh-meter
  11. Een geïsoleerde analoge ingang voor Arduino