//stop if true
#define trig 6
#define echo 7
//cek millis berkerja tanpa hambatan/delay
#define milliscek 10
unsigned long Ptmilliscek = 0;
int intervalmilliscek = 1000;
bool milliscekstate = false;
//defining pin
#define relay1 3
#define relay2 4
#define relay3 5
//state low or high relay
bool relay1state = LOW;
bool relay2state = LOW;
bool relay3state = LOW;
//penyimpanan waktu
unsigned long PTime1 = 0;
unsigned long PTime2 = 0;
unsigned long PTime3 = 0;
//Pengaturan waktu arduino relay
//relay1set
const long intervalrelay1on = 3000;
const long intervalrelay1off = 1000;
//relay2set
const long intervalrelay2on = 1000;
const long intervalrelay2off = 3000;
//relay3set
const long intervalrelay3on = 5000;
const long intervalrelay3off = 2000;
void setup() {
// put your setup code here, to run once:
pinMode(relay1, OUTPUT);
pinMode(relay2, OUTPUT);
pinMode(relay3, OUTPUT);
pinMode(milliscek, OUTPUT);
pinMode(echo, INPUT);
pinMode(trig, OUTPUT);
Serial.begin(9600);
}
float j(){
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
int durasi = pulseIn(echo, HIGH);
return durasi / 58.475;
}
void loop() {
unsigned long time = millis();
//relay1
if (time - PTime1 >= (relay1state == HIGH ? intervalrelay1on : intervalrelay1off)) {
digitalWrite(relay1, !relay1state);
relay1state = !relay1state;
PTime1 = time;
}
//relay2
if (time - PTime2 >= (relay2state == HIGH ? intervalrelay2on : intervalrelay2off)) {
digitalWrite(relay2, !relay2state);
relay2state = !relay2state;
PTime2 = time;
}
//relay3
if (time - PTime3 >= (relay3state == HIGH ? intervalrelay3on : intervalrelay3off)) {
digitalWrite(relay3, !relay3state);
relay3state = !relay3state;
PTime3 = time;
}
//sensor jarak hcsr-04
int jarak = j();
while(jarak <= 200){
jarak = j();
}
//cek millis berkerja tanpa hambatan
if (time - Ptmilliscek > intervalmilliscek) {
milliscekstate = !milliscekstate;
if (milliscekstate) {
digitalWrite(milliscek, HIGH);
} else if (!milliscekstate) {
digitalWrite(milliscek, LOW);
}
Ptmilliscek = time;
}
}