Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "SevSeg.h"
- #include <Wire.h>
- #include <DS3231.h>
- DS3231 clock;
- RTCDateTime dt;
- SevSeg sevseg;
- const int dots = 10;
- const int trigPin = A2;
- const int echoPin = 9;
- unsigned long duration;
- unsigned long distance;
- int sensed;
- //set the alarm here:
- //the hour
- int alarmHour = 16;
- //the minute
- int alarmMinute = 17;
- //do you want the alarm to go off? (true = yes, false = no)
- int alarm = true;
- void setup(){
- pinMode(dots, OUTPUT);
- pinMode(trigPin, OUTPUT);
- pinMode(echoPin, INPUT);
- digitalWrite(dots, HIGH);
- clock.begin();
- byte numDigits = 4;
- byte digitPins[] = {16,14,15,A0};
- byte segmentPins[] = {0,1,4,5,6,7,8,A3};
- bool resistorsOnSegments = false;
- bool updateWithDelaysIn = true;
- byte hardwareConfig = COMMON_CATHODE;
- sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments);
- sevseg.setBrightness(90);
- }
- void loop(){
- dt = clock.getDateTime();
- if(dt.hour > 12) {
- sevseg.setNumber((dt.hour - 12) * 100 + dt.minute);
- sevseg.refreshDisplay();
- }
- else if(dt.hour == 0) {
- sevseg.setNumber(1200 + dt.minute);
- sevseg.refreshDisplay();
- }
- else {
- sevseg.setNumber(dt.hour * 100 + dt.minute);
- sevseg.refreshDisplay();
- }
- if(dt.hour == alarmHour && dt.minute == alarmMinute && alarm == true && dt.second % 2 == 0 && sensed == false) {
- tone(A1, 500);
- digitalWrite(trigPin, HIGH);
- delayMicroseconds(10);
- digitalWrite(trigPin, LOW);
- duration = pulseIn(echoPin, HIGH);
- distance = duration * 0.0375 / 2;
- if(distance < 20) {
- sensed = true;
- }
- }
- else {
- noTone(A1);
- }
- if(dt.minute > alarmMinute) {
- sensed = false;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement