How to make the PIN OFF time default to 3 seconds in this code?

Sorry for my bad english, but I want this code to have the PIN OFF time to be default in 3 seconds, basically it won't ask me the PIN OFF time anymore. I can't integrate the 3 seconds off in this, maybe someone can help? I'm just a newbie and I wanted to test this code out. This code was made by Hacktuber so credits to him. Any help will be much appreciated.

In this image, I want the PIN 1-8 OFF to be default into 3 seconds, so, the program will not gonna ask me the PIN OFF time anymore. I'll provide more infos, just ask me guys

image

// ===============================
// ATR v5
// © 2016 Triyan W. Nugroho
// ===============================

#include <LiquidCrystal.h>
#include <EEPROM.h>
#include <virtuabotixRTC.h>

// relay pins
#define relay1      0
#define relay2      1
#define relay3      2
#define relay4      3
#define relay5      10
#define relay6      11
#define relay7      12
#define relay8      13

// define pins of RTC module
#define rtcVCC      A5
#define rtcGND      A4
#define rtcSCLK     A3
#define rtcIO       A2
#define rtcCE       A1

// creation of RTC object
virtuabotixRTC myRTC(rtcSCLK, rtcIO, rtcCE);

// keypad definitions
#define btnRIGHT    0
#define btnUP       1
#define btnDOWN     2
#define btnLEFT     3
#define btnSELECT   4
#define btnNONE     5

// mode definitions
#define modeSETUP   1
#define modeNORMAL  2

int mode = 1; // set default mode

// EEPROM adrressing
#define adr1ON    2
#define adr1OF    4
#define adr2ON    6
#define adr2OF    8
#define adr3ON    10
#define adr3OF    12
#define adr4ON    14
#define adr4OF    16
#define adr5ON    18
#define adr5OF    20
#define adr6ON    22
#define adr6OF    24
#define adr7ON    26
#define adr7OF    28
#define adr8ON    30
#define adr8OF    32

int eepromMin = 0;
int eepromHour = 0;

int eepromHourON = 0;
int eepromHourOF = 0;
int eepromMinON = 0;
int eepromMinOF = 0;

// pins used on LCD Keypad Shield
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
int lcd_key     = 0;
int adc_key_in  = 0;

void setup() {
	// inisialisasi serial utk debugging
	//	Serial.begin(9600);

	// jadikan semua digital pin sbg output
	for (int i = 0; i <= 13; i++) {
		pinMode(i, OUTPUT);
	}

	// activate RTC module
	pinMode(rtcVCC,  OUTPUT);
	pinMode(rtcGND,  OUTPUT);
	pinMode(rtcSCLK, OUTPUT);
	pinMode(rtcIO,   OUTPUT);
	pinMode(rtcCE,   OUTPUT);
	digitalWrite(rtcVCC, HIGH);
	digitalWrite(rtcGND, LOW);

	delay(500);

	// lcd initialization
	lcd.begin(16, 2);
}

void loop() {

	lcd.setCursor(4, 0);

	// tampilkan jam:menit:detik
	displayTime();

	// set & tampilkan relay berdasarkan data eeprom
	lcd.setCursor(0, 1); 
	lcd.print("1");
	relayAction(adr1ON, adr1OF, 1, relay1);
	lcd.setCursor(2, 1); 
	lcd.print("2");
	relayAction(adr2ON, adr2OF, 3, relay2);
	lcd.setCursor(4, 1); 
	lcd.print("3");
	relayAction(adr3ON, adr3OF, 5, relay3);
	lcd.setCursor(6, 1); 
	lcd.print("4");
	relayAction(adr4ON, adr4OF, 7, relay4);
	lcd.setCursor(8, 1); 
	lcd.print("5");
	relayAction(adr5ON, adr5OF, 9, relay5);
	lcd.setCursor(10, 1); 
	lcd.print("6");
	relayAction(adr6ON, adr6OF, 11, relay6);
	lcd.setCursor(12, 1); 
	lcd.print("7");
	relayAction(adr7ON, adr7OF, 13, relay7);
	lcd.setCursor(14, 1); 
	lcd.print("8");
	relayAction(adr8ON, adr8OF, 15, relay8);

	// jika user menekan tombol SELECT, masuk menu setting

	if (read_LCD_buttons() == btnSELECT) {
		while (read_LCD_buttons() == btnSELECT);
		lcd.clear();
		lcd.setCursor(0, 0);
		lcd.print("UP. TIME SETTING");
		lcd.setCursor(0, 1);
		lcd.print("DN. PIN SETTING");
		while (read_LCD_buttons() == btnNONE);
		if (read_LCD_buttons() == btnUP) {
			while (read_LCD_buttons() == btnUP);
			setRTC();   // jika user menekan tombol UP, masuk menu setting RTC
		}
		else if (read_LCD_buttons() == btnDOWN) {
			while (read_LCD_buttons() == btnDOWN);
			setPin();   // jika user menekan tombol DOWN, masuk menu setting PIN
		}
	}
}

void relayAction(int adrON, int adrOF, int pos, int pin) {
	myRTC.updateTime();
	int MinToday = (myRTC.hours * 60) + myRTC.minutes;
	int MinEprON = (EEPROM.read(adrON) * 60) + EEPROM.read(adrON + 1);
	int MinEprOF = (EEPROM.read(adrOF) * 60) + EEPROM.read(adrOF + 1);

	lcd.setCursor(pos, 1);
	if (MinEprON == MinEprOF) {  // jika sama berarti tidak dipake
		lcd.print(" ");
		digitalWrite(pin, LOW);
	}
	else if (MinEprON < MinEprOF) { // kondisi ON terjadi di hari yg sama
		if ((MinEprON <= MinToday) && (MinEprOF > MinToday)) {
			lcd.print("*");
			digitalWrite(pin, LOW);
		}
		else {
			lcd.print("-");
			digitalWrite(pin, HIGH);
		}
	}
	else if (MinEprON > MinEprOF) {  // kondisi ON terjadi sampai besoknya
		if ((MinEprON >= MinToday) || (MinEprOF < MinToday)) {
			lcd.print("*");
			digitalWrite(pin, LOW);
		}
		else {
			lcd.print("-");
			digitalWrite(pin, HIGH);
		}
	}
}

/* ================================================== */
/* SETUP Functions                                    */
/* ================================================== */

void setRTC() {

	lcd.clear();
	lcd.setCursor(0, 0);
	lcd.print("TIME SETTING");
	delay(1000);

	lcd.clear();
	lcd.setCursor(0, 0);
	lcd.print("CURRENT ");
	setupShowValue(myRTC.hours, myRTC.minutes, 0);

	lcd.setCursor(0, 1);
	lcd.print("NEW ");

	myRTC.updateTime();
	setupShowValue(myRTC.hours, myRTC.minutes, 1);
	while (read_LCD_buttons() == btnNONE);
	setupChooseValueSetRTC(myRTC.hours, myRTC.minutes, 1);
	lcd.setCursor(0,0);
	lcd.print("SETTINGS SAVED   ");
	delay(1000);
	lcd.clear();
}

void setPin() {
	lcd.clear();
	lcd.setCursor(0, 0);
	lcd.print("PIN SETTING");
	delay(1000);

	lcd.clear();
	lcd.setCursor(0, 0);
	lcd.print("PIN 1 ON");
	eepromHour = EEPROM.read(adr1ON);
	eepromMin = EEPROM.read(adr1ON + 1);
	if (eepromHour >= 24) eepromHour = 0;
	if (eepromMin  >= 60) eepromMin  = 0;
	setupShowValue(eepromHour, eepromMin, 0);
	while (read_LCD_buttons() == btnNONE);
	setupChooseValue(eepromHour, eepromMin, adr1ON, 0);

	lcd.setCursor(0, 1);
	lcd.print("PIN 1 OFF");
	eepromHour = EEPROM.read(adr1OF);
	eepromMin = EEPROM.read(adr1OF + 1);
	if (eepromHour >= 24) eepromHour = 0;
	if (eepromMin  >= 60) eepromMin  = 0;
	setupShowValue(eepromHour, eepromMin, 1);
	while (read_LCD_buttons() == btnNONE);
	setupChooseValue(eepromHour, eepromMin, adr1OF, 1);

	lcd.clear();
	lcd.setCursor(0, 0);
	lcd.print("PIN 2 ON");
	eepromHour = EEPROM.read(adr2ON);
	eepromMin = EEPROM.read(adr2ON + 1);
	if (eepromHour >= 24) eepromHour = 0;
	if (eepromMin  >= 60) eepromMin  = 0;
	setupShowValue(eepromHour, eepromMin, 0);
	while (read_LCD_buttons() == btnNONE);
	setupChooseValue(eepromHour, eepromMin, adr2ON, 0);

	lcd.setCursor(0, 1);
	lcd.print("PIN 2 OFF");
	eepromHour = EEPROM.read(adr2OF);
	eepromMin = EEPROM.read(adr2OF + 1);
	if (eepromHour >= 24) eepromHour = 0;
	if (eepromMin  >= 60) eepromMin  = 0;
	setupShowValue(eepromHour, eepromMin, 1);
	while (read_LCD_buttons() == btnNONE);
	setupChooseValue(eepromHour, eepromMin, adr2OF, 1);

	lcd.clear();
	lcd.setCursor(0, 0);
	lcd.print("PIN 3 ON");
	eepromHour = EEPROM.read(adr3ON);
	eepromMin = EEPROM.read(adr3ON + 1);
	if (eepromHour >= 24) eepromHour = 0;
	if (eepromMin  >= 60) eepromMin  = 0;
	setupShowValue(eepromHour, eepromMin, 0);
	while (read_LCD_buttons() == btnNONE);
	setupChooseValue(eepromHour, eepromMin, adr3ON, 0);

	lcd.setCursor(0, 1);
	lcd.print("PIN 3 OFF");
	eepromHour = EEPROM.read(adr3OF);
	eepromMin = EEPROM.read(adr3OF + 1);
	if (eepromHour >= 24) eepromHour = 0;
	if (eepromMin  >= 60) eepromMin  = 0;
	setupShowValue(eepromHour, eepromMin, 1);
	while (read_LCD_buttons() == btnNONE);
	setupChooseValue(eepromHour, eepromMin, adr3OF, 1);

	lcd.clear();
	lcd.setCursor(0, 0);
	lcd.print("PIN 4 ON");
	eepromHour = EEPROM.read(adr4ON);
	eepromMin = EEPROM.read(adr4ON + 1);
	if (eepromHour >= 24) eepromHour = 0;
	if (eepromMin  >= 60) eepromMin  = 0;
	setupShowValue(eepromHour, eepromMin, 0);
	while (read_LCD_buttons() == btnNONE);
	setupChooseValue(eepromHour, eepromMin, adr4ON, 0);

	lcd.setCursor(0, 1);
	lcd.print("PIN 4 OFF");
	eepromHour = EEPROM.read(adr4OF);
	eepromMin = EEPROM.read(adr4OF + 1);
	if (eepromHour >= 24) eepromHour = 0;
	if (eepromMin  >= 60) eepromMin  = 0;
	setupShowValue(eepromHour, eepromMin, 1);
	while (read_LCD_buttons() == btnNONE);
	setupChooseValue(eepromHour, eepromMin, adr4OF, 1);

	lcd.clear();
	lcd.setCursor(0, 0);
	lcd.print("PIN 5 ON");
	eepromHour = EEPROM.read(adr5ON);
	eepromMin = EEPROM.read(adr5ON + 1);
	if (eepromHour >= 24) eepromHour = 0;
	if (eepromMin  >= 60) eepromMin  = 0;
	setupShowValue(eepromHour, eepromMin, 0);
	while (read_LCD_buttons() == btnNONE);
	setupChooseValue(eepromHour, eepromMin, adr5ON, 0);

	lcd.setCursor(0, 1);
	lcd.print("PIN 5 OFF");
	eepromHour = EEPROM.read(adr5OF);
	eepromMin = EEPROM.read(adr5OF + 1);
	if (eepromHour >= 24) eepromHour = 0;
	if (eepromMin  >= 60) eepromMin  = 0;
	setupShowValue(eepromHour, eepromMin, 1);
	while (read_LCD_buttons() == btnNONE);
	setupChooseValue(eepromHour, eepromMin, adr5OF, 1);

	lcd.clear();
	lcd.setCursor(0, 0);
	lcd.print("PIN 6 ON");
	eepromHour = EEPROM.read(adr6ON);
	eepromMin = EEPROM.read(adr6ON + 1);
	if (eepromHour >= 24) eepromHour = 0;
	if (eepromMin  >= 60) eepromMin  = 0;
	setupShowValue(eepromHour, eepromMin, 0);
	while (read_LCD_buttons() == btnNONE);
	setupChooseValue(eepromHour, eepromMin, adr6ON, 0);

	lcd.setCursor(0, 1);
	lcd.print("PIN 6 OFF");
	eepromHour = EEPROM.read(adr6OF);
	eepromMin = EEPROM.read(adr6OF + 1);
	if (eepromHour >= 24) eepromHour = 0;
	if (eepromMin  >= 60) eepromMin  = 0;
	setupShowValue(eepromHour, eepromMin, 1);
	while (read_LCD_buttons() == btnNONE);
	setupChooseValue(eepromHour, eepromMin, adr6OF, 1);

	lcd.clear();
	lcd.setCursor(0, 0);
	lcd.print("PIN 7 ON");
	eepromHour = EEPROM.read(adr7ON);
	eepromMin = EEPROM.read(adr7ON + 1);
	if (eepromHour >= 24) eepromHour = 0;
	if (eepromMin  >= 60) eepromMin  = 0;
	setupShowValue(eepromHour, eepromMin, 0);
	while (read_LCD_buttons() == btnNONE);
	setupChooseValue(eepromHour, eepromMin, adr7ON, 0);

	lcd.setCursor(0, 1);
	lcd.print("PIN 7 OFF");
	eepromHour = EEPROM.read(adr7OF);
	eepromMin = EEPROM.read(adr7OF + 1);
	if (eepromHour >= 24) eepromHour = 0;
	if (eepromMin  >= 60) eepromMin  = 0;
	setupShowValue(eepromHour, eepromMin, 1);
	while (read_LCD_buttons() == btnNONE);
	setupChooseValue(eepromHour, eepromMin, adr7OF, 1);

	lcd.clear();
	lcd.setCursor(0, 0);
	lcd.print("PIN 8 ON");
	eepromHour = EEPROM.read(adr8ON);
	eepromMin = EEPROM.read(adr8ON + 1);
	if (eepromHour >= 24) eepromHour = 0;
	if (eepromMin  >= 60) eepromMin  = 0;
	setupShowValue(eepromHour, eepromMin, 0);
	while (read_LCD_buttons() == btnNONE);
	setupChooseValue(eepromHour, eepromMin, adr8ON, 0);

	lcd.setCursor(0, 1);
	lcd.print("PIN 8 OFF");
	eepromHour = EEPROM.read(adr8OF);
	eepromMin = EEPROM.read(adr8OF + 1);
	if (eepromHour >= 24) eepromHour = 0;
	if (eepromMin  >= 60) eepromMin  = 0;
	setupShowValue(eepromHour, eepromMin, 1);
	while (read_LCD_buttons() == btnNONE);
	setupChooseValue(eepromHour, eepromMin, adr8OF, 1);
	lcd.clear();
}

void setupChooseValue(int HourNew, int MinNew, byte Address, byte Pos) {
	while (read_LCD_buttons() != btnSELECT) {
		if (read_LCD_buttons() == btnRIGHT) {
			if (HourNew < 23) {
				HourNew++;
			}
		}
		else if (read_LCD_buttons() == btnLEFT) {
			if (HourNew > 0) {
				HourNew--;
			}
		}
		else if (read_LCD_buttons() == btnUP) {
			if (MinNew < 59) {
				MinNew++;
			}
		}
		else if (read_LCD_buttons() == btnDOWN) {
			if (MinNew > 0) {
				MinNew--;
			}
		}
		setupShowValue(HourNew, MinNew, Pos);
		delay(150);
	}
	while (read_LCD_buttons() != btnNONE);  // tunggu sampai tombol rilis
	EEPROM.write(Address, HourNew);
	EEPROM.write(Address + 1, MinNew);
	delay(150);
}

void setupChooseValueSetRTC(int HourNew, int MinNew, byte Pos) {
	while (read_LCD_buttons() != btnSELECT) {
		if (read_LCD_buttons() == btnRIGHT) {
			if (HourNew < 23) {
				HourNew++;
			}
		}
		else if (read_LCD_buttons() == btnLEFT) {
			if (HourNew > 0) {
				HourNew--;
			}
		}
		else if (read_LCD_buttons() == btnUP) {
			if (MinNew < 59) {
				MinNew++;
			}
		}
		else if (read_LCD_buttons() == btnDOWN) {
			if (MinNew > 0) {
				MinNew--;
			}
		}
		setupShowValue(HourNew, MinNew, Pos);
		delay(150);
	}
	while (read_LCD_buttons() != btnNONE);  // tunggu sampai tombol rilis
	myRTC.setDS1302Time(00, MinNew, HourNew, 6, 10, 1, 2014);
	delay(150);
}

void setupShowValue(int Hour, int Min, int Pos) {
	lcd.setCursor(11, Pos);
	print2digits(Hour);
	lcd.print(":");
	print2digits(Min);
}

/* ================================================== */
/* LCD Functions                                      */
/* ================================================== */

int read_LCD_buttons()
{
	adc_key_in = analogRead(0);       // read the value from the sensor

	if (adc_key_in > 1000) return btnNONE; 
	if (adc_key_in < 50)   return btnRIGHT;  
	if (adc_key_in < 150)  return btnUP; 
	if (adc_key_in < 300)  return btnDOWN; 
	if (adc_key_in < 500)  return btnLEFT; 
	if (adc_key_in < 850)  return btnSELECT;  
	return btnNONE;                // when all others fail, return this.
}

void eeprom_write_int(int p_address, int p_value) {
	byte lowByte = ((p_value >> 0) & 0xFF);
	byte highByte = ((p_value >> 8) & 0xFF);

	EEPROM.write(p_address, lowByte);
	EEPROM.write(p_address + 1, highByte);
}

unsigned int eeprom_read_int(int p_address) {
	byte lowByte = EEPROM.read(p_address);
	byte highByte = EEPROM.read(p_address + 1);

	return ((lowByte << 0) & 0xFF) + ((highByte << 8) & 0xFF00);
}

void displayTime() {
	myRTC.updateTime();
	print2digits(myRTC.hours);
	lcd.print(":");
	print2digits(myRTC.minutes);
	lcd.print(":");
	print2digits(myRTC.seconds);
}

void print2digits(int number) {
	if (number >= 0 && number < 10)
		lcd.print('0');
	lcd.print(number, DEC);
}



Please edit your post, select all code and click the <CODE/> button to apply code tags to your code; see How to get the best out of this forum

Code tags make your code easier to read and easier to copy; the forum software will also display it correctly.

Nevermind, I see that you figured it out.

yes sir, I already figured it out. Thank you.

you want to remove the PIN Xnumber OFF from the menu and have it defualt to 3 after menu start time is finished?

This person is clearly trying to solve an XY problem.

Actually I want the PIN Xnumber OFF to be settable based on what the user wants. If the user want it to set to 3 seconds, then it can be set to 3 seconds, but the PIN Xnumber OFF can be only set from 1-59 seconds. But I think it is pretty hard to integrate, so, I just want it to be default by 3 seconds. But anyway, yes sir, I want to remove the PIN Xnumber OFF from the menu and have it defualt to 3 after menu start time is finished

that post of the code adr10F -adr8OF can be changed to a new user set time instead and you can remove the menu items you don't need and add a new user menu time option

I tried sir, but I still don't get it :sob: maybe you can provide me an example to enlighten me :pray:

Why are you using code which was so poorly written? Clearly it should use arrays, but for some strange reason, it doesn't. If I were you, I would rewrite the whole thing over again, rather than just trying to modify it.

If you don't know what arrays are or how to use them, then this is an excellent reason to learn.

I got it guys! thanks for the help. I modified "void relayAction()" and it works.


The asterisks indicates that the relays are ON state

void relayAction(int adrON, int pos, int pin) {
	myRTC.updateTime();
	int MinToday = (myRTC.hours * 60) + myRTC.minutes;
	int MinEprON = (EEPROM.read(adrON) * 60) + EEPROM.read(adrON + 1);

	lcd.setCursor(pos, 1);
  if (MinToday != MinEprON) {
    lcd.print("-");
    digitalWrite(pin, LOW);
  }
  else if (MinToday == MinEprON) {
    if (myRTC.seconds >= 3) {
      lcd.print("-");
      digitalWrite(pin, LOW);
    }
    else {
      lcd.print("*");
      digitalWrite(pin, HIGH);
    }
  }
}