Wouldn't let me post straight away
Part 2/2:
void setup()
{
Serial.begin(9600);
lcd.begin(16, 2);
Wire.begin();
Serial.begin(9600);
pinMode(9, OUTPUT);
analogWrite(9, 150);
pinMode(alarmpin,OUTPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
// Attaching interrupting
attachInterrupt(0,modechange, CHANGE); //pin 2
attachInterrupt(1,set, CHANGE);//
// Calibrate during the first ten seconds
while (millis() < 15000) {
hourvalue = analogRead(hourpin);
minutevalue = analogRead(minutepin);
// record the maximum sensor value for hours
if (hourvalue > hourmax) {
hourmax = hourvalue;
}
// record the minimum sensor value for hours
if (hourvalue < hourmin) {
hourmin = hourvalue;
}
// record the maximum sensor value for minutes
if (minutevalue > minutemax){
minutemax = minutevalue;
}
// record the minimum sensor value for minutes
if (minutevalue < minutemin) {
minutemin = minutevalue;
}
}
setDS3231time(00,30,17);
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
pinMode(echoPin, INPUT);
duration = pulseIn(echoPin, HIGH);
cm = microsecondsToCentimeters(duration);
Serial.print("-------------------");
Serial.print('\n');
Serial.print(cm);
Serial.print("cm and alarm_switch is ");
Serial.print(alarm_switch);
Serial.print('\n');
Serial.print('\n');
delay(2000);
Serial.print("hour_check and minute_check is ");
Serial.print(hour_check);
Serial.print(" ");
Serial.print(minute_check);
Serial.print('\n');
Serial.print('\n');
delay(2000);
Serial.print("alarm_hour and alarm_minute is ");
Serial.print(alarm_hour);
Serial.print(" ");
Serial.print(alarm_min);
Serial.print("\n");
Serial.print('\n');
delay(2000);
Serial.print("alarmtime_past and alarmtime_current is ");
Serial.print(alarmtime_past);
Serial.print(" ");
Serial.print(alarmtime_current);
Serial.print("\n");
Serial.print('\n');
delay(2000);
// read the sensor:
hourvalue = analogRead(hourpin);
minutevalue = analogRead(minutepin);
// apply the calibration to the sensor reading
hourvalue = map(hourvalue, hourmin, hourmax, 0, 24);
minutevalue = map(minutevalue,minutemin,minutemax,0,60);
// in case the sensor value is outside the range seen during calibration
hourvalue = constrain(hourvalue, 0, 24);
minutevalue = constrain(minutevalue, 0, 59);
// SET TIME
if (mode == 1){
if (lcdmode == 2 || lcdmode == 3 || lcdmode == 4){
lcdmode = 1;
lcd.clear();
}
if(hourvalue < 9){
lcd.setCursor(1, 0);
}
else {
lcd.setCursor(0,0);
}
lcd.print(hourvalue);
lcd.setCursor(2,0);
lcd.print(":");
lcd.setCursor(3,0);
if (minutevalue < 10){
lcd.print("0");
lcd.setCursor(4,0);
lcd.print(minutevalue);
}
else{
lcd.print(minutevalue);
}
lcd.setCursor(6,0);
lcd.print("SET TIME");
if (set_time == 1){
clock_hour = hourvalue;
clock_min = minutevalue;
CLOCK_HOUR = (byte)hourvalue;
CLOCK_MIN = (byte)minutevalue;
setDS3231time(00,CLOCK_MIN,CLOCK_HOUR);
delay(2000);
set_time =0;
}
}
// SET ALARM
if (mode == 2){
if (lcdmode == 1 || lcdmode == 3 || lcdmode == 4){
lcdmode = 2;
lcd.clear();
}
if(hourvalue < 9){
lcd.setCursor(1, 0);
}
else {
lcd.setCursor(0,0);
}
lcd.print(hourvalue);
lcd.setCursor(2,0);
lcd.print(":");
lcd.setCursor(3,0);
if (minutevalue < 10){
lcd.print("0");
lcd.setCursor(4,0);
lcd.print(minutevalue);
}
else{
lcd.print(minutevalue);
}
lcd.setCursor(6,0);
lcd.print("SET ALARM");
if (set_time == 1){
alarm_hour = hourvalue;
alarm_min = minutevalue;
delay(2000);
set_time = 0;
}
}
// DISPLAY TIME
if (mode == 3){
set_time = 0;
if (lcdmode == 1 || lcdmode == 2 || lcdmode == 4){
lcdmode = 3;
lcd.clear();
}
displayLCDTime();
lcd.setCursor(6,0);
lcd.print("24H CLOCK");
}
// DISPLAY ALARM
if (mode == 4){
set_time = 0;
if (lcdmode == 1 || lcdmode == 2 || lcdmode == 3){
lcdmode = 4;
lcd.clear();
}
if(alarm_hour < 9){
lcd.setCursor(1, 0);
}
else {
lcd.setCursor(0,0);
}
lcd.print(alarm_hour);
lcd.setCursor(2,0);
lcd.print(":");
lcd.setCursor(3,0);
if (alarm_min < 10){
lcd.print("0");
lcd.setCursor(4,0);
lcd.print(alarm_min);
}
else{
lcd.print(alarm_min);
}
lcd.setCursor(6,0);
lcd.print("ALARM TIME");
}
checktime ();
if (hour_check == alarm_hour && minute_check == alarm_min && (alarm_switch == 2 || alarm_switch == 1)){
alarm();
alarm_switch = 1;
}
if (alarm_switch == 1 && cm < 20){
alarmoff();
alarm_switch = 0;
alarmtime_past = alarmtime_current;
}
if(alarm_switch == 1 && alarmtime_current - alarmtime_past >= 60000){
alarm_switch = 2;
}
}