TM1637 digitale klok met tijdinstelling en alarmfunctie
Componenten en benodigdheden
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Over dit project
Dit is een prototype van het tijd- en alarminstellingsmechanisme 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 dan weten. Ik zou ze graag onderzoeken en mogelijk in mijn code opnemen.
Je kunt de hele tutorial bekijken op
Als je deze inhoud leuk vindt en je wilt me ondersteunen bij het maken van soortgelijke video's, ga dan naar mijn Patreon-webpagina
https://www.patreon.com/MariosIdeas
Of
https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=7PD67JWZ9S3EJ&source=url
Code
- Tijd weergeven van RTC-module plus tijdinstelling en alarminstellingsfunctionaliteit
Tijd weergeven van RTC-module plus tijdinstelling en alarminstellingsfunctionaliteitArduino
Deze code leest de huidige tijd van de RTC-module. Dan kunt u ook de huidige tijd bijwerken en ook de alarmtijd instellen.Setup-acties worden uitgevoerd met behulp van 3 knoppen.
// Mario's Ideas// TM1637 digitale klok met setup- en alarmfunctionaliteit#include#include #include //// RTC module declaratie// PINS CLK, DAT, RSTvirtuabotixRTC myRTC(A1,A2,A3);// Variabelen om vorige waarden op te slaan Lees RTC module in minuten;int uren;// Variabelen om de tijd op te slaan waarop het alarm af moet gaan int Alarm_minutes=05;int Alarm_hours=18;uint8_t Blank[] ={0x0};int POSITION=0;//Tabel om 4 cijfers op te slaan, gebruikt in tijd en alarminstellingsprocedureint digits[3];int interval=0;#define Alarm 9 // Knop om de alarmmodus in of uit te schakelen#define Buzer 13#define Led 8//Statusesboolean Alarm_set=false;boolean Alarm_in_progress=false;boolean Setup_on=false;// 4-cijferige displayverbindingspinnen (digitale pinnen)#define CLK 4#define DIO 5// 4-cijferige display-aangifteTM1637Weergave klok (CLK, DIO); ongeldige setup() { attachInterrupt(digitalPinToInterrupt(2), Press_A_Button,RISING); attachInterrupt(digitalPinToInterrupt(3), Press_B_Button,RISING); pinMode (Alarm, INGANG); pinMode (Buzer, UITGANG); pinMode (Led, UITGANG); digitalWrite (Buzer, LAAG); klok.setHelderheid (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; cijfers[1]=Alarm_uren-((int)Alarm_hours/10)*10; cijfers[2]=(int)Alarm_minutes/10; cijfers[3]=Alarm_minuten-((int)Alarm_minutes/10)*10; } else { digits[0]=(int)myRTC.hours/10; cijfers[1]=mijnRTC.uren-((int)mijnRTC.uren/10)*10; cijfers[2]=(int)mijnRTC.minuten/10; cijfers[3]=mijnRTC.minuten-((int)mijnRTC.minuten/10)*10; } } anders{ POSITIE++; if (POSITIE==4){ if (Alarm_set==true){ Alarm_minuten=cijfers[3]+cijfers[2]*10; Alarm_uren=cijfers[1]+cijfers[0]*10; } else { myRTC.setDS1302Time( 0, digits[3]+digits[2]*10, digits[1]+digits[0]*10,myRTC.dayofweek, myRTC.dayofmonth, myRTC.month, myRTC.year); klok.showNumberDec(cijfers[0],false,1,0); klok.showNumberDec(cijfers[1],false,1,1); klok.showNumberDec(cijfers[2],false,1,2); klok.showNumberDec(cijfers[3],false,1,3); } POSITIE=0; Setup_on=false; } } } interval=0;}void Press_B_Button(){ if (interval>3){ if(Setup_on){ digits[POSITION]=digits[POSITION]+1; if (POSITIE==0 en cijfers[POSITIE]==3) cijfers[POSITIE]=0; if (POSITIE!=0 en cijfers[POSITIE]==10) cijfers[POSITIE]=0; interval=0; } } interval=0;}void loop() {if (digitalRead(Alarm)==HIGH and Alarm_set==false){ if (interval>30){ digitalWrite(Led,HIGH); Alarm_set=waar; vertraging (300); } } else{ if (digitalRead(Alarm)==HIGH and Alarm_set==true){ if (interval>30){ Alarm_set=false; Alarm_in_progress=false; digitalWrite (Led, LAAG); vertraging (300); } } } mijnRTC.updateTime(); if (Setup_on==true){ clock.showNumberDec(digits[0],false,1,0); klok.showNumberDec(cijfers[1],false,1,1); klok.showNumberDec(cijfers[2],false,1,2); klok.showNumberDec(cijfers[3],false,1,3); vertraging (200); klok.setSegments(Blanco, 1,POSITIE); vertraging (200); klok.showNumberDec(cijfers[0],false,1,0); klok.showNumberDec(cijfers[1],false,1,1); klok.showNumberDec(cijfers[2],false,1,2); klok.showNumberDec(cijfers[3],false,1,3); } else{ if (myRTC.minutes==Alarm_minutes en myRTC.hours==Alarm_hours and Alarm_set==true en Setup_on==false){ Alarm_in_progress=true; } if (Alarm_in_progress){ digitalWrite(Buzer,HIGH); vertraging (1000); digitalWrite (Buzer, LAAG); vertraging (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); minuten=mijnRTC.minuten; uren=mijnRTC.uren; } } if (interval<200) interval++;}
Schema's
Productieproces
- Soorten analoge en digitale sensoren met toepassingen
- Raspberry pi 2 wateralarm met t cobbler plus
- Botten bouwen met Raspberry Pi en Python
- Digitale transformatie verkennen met Fiix en IDC
- Tijd en geld besparen met conditiebewaking
- 8 manieren om onderhoudskosten te verlagen en inkomsten te verhogen met onderhoudssoftware
- Portenta- en thermokoppelsensor (met MAX6675)
- Digitale transformatie versnellen met IoT-gegevens, dankzij Cisco en IBM
- Word Clock met minutenresolutie van tijd in woorden
- Eenvoudige wekker met DS1302 RTC
- De functionaliteit en vooruitgang van lagers