// NILAI LEVEL AIR
// HIGH = 21500
// MEDIUM = 22200
// LOW = 23000
#include <LiquidCrystal_I2C.h> //library lcd
#include <FreqCount.h>
#include <EEPROM.h> //library eeprom
#include "Countimer.h" //library counter timer
Countimer tdown;
Countimer toff;
#include <avr/wdt.h> //Library untuk reset otomatis ketika arduino hank
// Setting alamat lcd
LiquidCrystal_I2C lcd(0x27, 16, 2);
byte kotak[8] = {
B00000,
B11111,
B11111,
B11111,
B11111,
B11111,
B11111,
B00000
};
byte panah[8] = {
B11000,
B01100,
B00110,
B00011,
B00011,
B00110,
B01100,
B11000
};
// MILLIS
byte ledState = LOW;
unsigned long previousMillis = 0;
long OnTime = 1800;
long OffTime = 1000;
int milis = 0;
int k = 0;
// SEIMBANGKAN
byte ledimbang = LOW;
unsigned long previousMillisimbang = 0;
long Onimbang = 300;
long Offimbang = 500;
int imbang = 0;
// BUZZ SOS
byte buzz_sos = LOW;
unsigned long previousMillisos = 0;
long Onsos = 300;
long Offsos = 300;
int so = 0;
// in AIR
byte in_water = LOW;
unsigned long previousMillinwater = 0;
long OninWater = 3000;
long OffinWater = 3000;
int inWater = 0;
// out AIR
byte out_water = LOW;
unsigned long previousMillioutwater = 0;
long OnoutWater = 3000;
long OffoutWater = 3000;
int outWater = 0;
// out waiting
byte out_waiting = LOW;
unsigned long previousMillioutwaiting = 0;
long OnoutWaiting = 2000;
long OffoutWaiting = 300;
int outWaiting = 0;
// KERING BILAS
byte ledkering_bilas = LOW;
unsigned long previousMilliskering_bilas = 0;
long Onkering_bilas = 10000;
long Offkering_bilas = 100;
int kering_bilas = 0;
int kb = 0;
int henti = 0;
int kali = 0;
int wash = 0;
//------------------------------------------
// Button UP
// Button DOWN
// Button OK
// Button SET
//----------------------------------------
int wl = A1;
int nilai = 0;
// define output
#define r1 6 // SSR 1 (Putar Kanan)
#define r2 7 // SSR 2 (Putar Kiri)
#define sld1 12 // SSR 3 (pengisian)
#define sld2 13 // SSR 4 (pembuangan)
#define mtr_spin 5 // SSR 5 (motor spin)
//#define l1 A3 // LED INDIKATOR PUTAR KANAN
//#define l2 A2 // LED INDIKATOR PUTAR KIRI
#define buzz A0 // BUZZER
// define input
#define ol 2 // Switch Keseimbangan
#define door 3 // Switch Pintu
#define up 9
#define down 10
#define sett 8
#define ok 11
int menu = 0;
int mode = 0, level = 0, waktu = 0, custom = 0;
int ketinggian = 0;
// Variable Timer
int time_scuci = 0;
int time_mcuci = 0;
int time_sbilas = 0;
int time_mbilas = 0;
int time_skering = 0;
int time_mkering = 0;
int time_kering_bilas = 0;
int flag1 = 0, flag2 = 0;
void setup() {
Serial.begin(9600);
// put your setup code here, to run once:
lcd.init();
lcd.backlight();
FreqCount.begin(1000);
lcd.createChar(3, kotak);
lcd.createChar(2, panah);
// INPUT
pinMode(up, INPUT_PULLUP);
pinMode(down, INPUT_PULLUP);
pinMode(ok, INPUT_PULLUP);
pinMode(sett, INPUT_PULLUP);
// OUTPUT
pinMode(r1, OUTPUT);
pinMode(r2, OUTPUT);
pinMode(sld1, OUTPUT);
pinMode(sld2, OUTPUT);
pinMode(buzz, OUTPUT);
//pinMode(l1, OUTPUT);
//pinMode(l2, OUTPUT);
pinMode(13, OUTPUT);
pinMode(door, OUTPUT);
pinMode(mtr_spin, OUTPUT);
eeprom_write();
digitalWrite(buzz, LOW);
/*
lcd.setCursor(0,0);
lcd.print(" AUTOMATIC ");
lcd.setCursor(0,1);
lcd.print("WASHING MACHINE");
delay(2000);
for (int x=1; x<=2; x++){
digitalWrite(buzz, HIGH);
delay(100);
digitalWrite(buzz, LOW);
delay(300);
}
*/
tdown.setInterval(print_time, 999);
eeprom_read();
delay(100);
lcd.clear();
// EEPROM
int ketinggian;
ketinggian = EEPROM.read(100);
level = EEPROM.read(101);
time_kering_bilas = 5;
EEPROM.write(7, time_kering_bilas);
EEPROM.read(7);
mode = 1;
level = 1;
waktu = 1;
henti = 0;
time_scuci = 0;
time_sbilas = 0;
time_skering = 0;
EEPROM.write(1, time_scuci);
EEPROM.write(3, time_sbilas);
EEPROM.write(5, time_skering);
}// Void Setup
//######################################
void print_time() {
time_scuci = time_scuci - 1;
time_sbilas = time_sbilas - 1;
time_skering = time_skering - 1;
time_kering_bilas = time_kering_bilas - 1;
if (time_scuci < 0) {
time_scuci = 59;
time_mcuci = time_mcuci - 1;
}
if (time_mcuci < 0) {
time_mcuci = 59;
}
if (time_sbilas < 0) {
time_sbilas = 59;
time_mbilas = time_mbilas - 1;
}
if (time_mbilas < 0) {
time_mbilas = 59;
}
if (time_skering < 0) {
time_skering = 59;
time_mkering = time_mkering - 1;
}
if (time_mkering < 0) {
time_mkering = 59;
}
if (time_kering_bilas < 0) {
time_kering_bilas = 59;
time_kering_bilas = time_kering_bilas - 1;
}
if (time_kering_bilas < 0) {
time_kering_bilas = 59;
}
}
//######################################
void loop() {
// put your main code here, to run repeatedly:
//masukan counter
lcd.clear();
//=======================================
if (menu == 0) {
while (menu == 0) {
if (digitalRead(sett) == LOW) {
for (int x = 1; x <= 1; x++)
{
digitalWrite(buzz, HIGH);
delay(100);
digitalWrite(buzz, LOW);
}
if (mode >= 4) {
mode = 0;
}
mode++;
delay(100);
lcd.clear();
}
Serial.println(mode);
lcd.setCursor(0, 0);
lcd.write(byte(3));
lcd.print(" PILIH MODE ");
lcd.write(byte(3));
lcd.setCursor(0, 1);
switch (mode) {
case 1:
lcd.write(byte(2));
lcd.print(" Cuci Saja");
if (digitalRead(ok) == LOW) {
for (int x = 1; x <= 2; x++)
{
digitalWrite(buzz, HIGH);
delay(60);
digitalWrite(buzz, LOW);
delay(60);
}
menu = 20; // setting water level
lcd.clear();
delay(250);
level = EEPROM.read(101);
}
break;
case 2:
lcd.write(byte(2));
lcd.print(" Kering Saja");
if (digitalRead(ok) == LOW) {
for (int x = 1; x <= 2; x++)
{
digitalWrite(buzz, HIGH);
delay(60);
digitalWrite(buzz, LOW);
delay(60);
}
menu = 36;
lcd.clear();
delay(250);
level = EEPROM.read(101);
}
break;
case 3:
lcd.write(byte(2));
lcd.print(" Cuci - Bilas");
if (digitalRead(ok) == LOW) {
for (int x = 1; x <= 2; x++)
{
digitalWrite(buzz, HIGH);
delay(60);
digitalWrite(buzz, LOW);
delay(60);
}
menu = 46;
lcd.clear();
delay(250);
level = EEPROM.read(101);
}
break;
case 4:
lcd.write(byte(2));
lcd.print(" Set tinggi Air ");
if (digitalRead(ok) == LOW) {
for (int x = 1; x <= 2; x++)
{
digitalWrite(buzz, HIGH);
delay(60);
digitalWrite(buzz, LOW);
delay(60);
}
menu = 90;
lcd.clear();
delay(250);
}
break;
}
}
}
if (menu == 36) {
henti = 0;
while (menu == 36) {
if (digitalRead(up) == LOW) {
time_mkering++;
if (time_mkering > 60) {
time_mkering = 1;
}
delay(200);
}
if (digitalRead(down) == LOW) {
time_mkering--;
if (time_mkering < 1) {
time_mkering = 60;
}
delay(200);
}
if (digitalRead(ok) == LOW) {
for (int x = 1; x <= 2; x++)
{
digitalWrite(buzz, HIGH);
delay(60);
digitalWrite(buzz, LOW);
delay(60);
}
eeprom_write();
mulai();
lcd.clear();
delay(250);
}
lcd.setCursor(0, 0);
lcd.write(byte(3));
lcd.print(" WAKTU KERING ");
lcd.write(byte(3));
lcd.setCursor(3, 1);
lcd.write(byte(2));
lcd.print(" ");
if (time_mkering <= 9) {
lcd.print("0");
}
lcd.print(time_mkering);
lcd.print(" Menit");
if (henti == 2) {
menu = 22;
lcd.clear();
}
}
}
/* if (menu == 85) {
while (1) {
lcd.setCursor(0, 0);
lcd.print(" Tekan 'START' ");
lcd.setCursor(0, 1);
lcd.print(" Untuk Mulai ");
if (digitalRead(up) == LOW) {
digitalWrite(buzz, HIGH);
delay(100);
digitalWrite(buzz, LOW);
flag2 = 1;
menu = 99;
tdown.start();
lcd.clear();
delay(250);
break;
}
}
} */
// PENGISISAN AIR WASH ONLY
//==================================
if (menu == 22) {
henti = 0;
while (menu == 22) {
waiting();
if (henti == 1) {
berhenti();
}
if (henti == 2) {
menu = 18;
tdown.start();
flag2 = 1;
eeprom_read();
lcd.clear();
}
}
}
//=======================================
// PROSES KERING
//=======================================
if (menu == 18) {
tdown.start();
// time_skering = 20;
while (menu == 18) {
tdown.run();
lcd.setCursor(0, 0);
lcd.print(" PROSES KERING ");
if (henti == 1) {
tdown.start();
flag2 = 1;
}
if (digitalRead(sett) == LOW) {
kembali();
k = 1;
delay(200);
break;
}
if (digitalRead (down) == 0) {
berhenti();
henti = 1;
tdown.stop();
flag2 = 0;
delay(200);
}
if (digitalRead (door) == LOW) {
sos();
henti = 1;
tdown.stop();
flag2 = 0;
delay(200);
}
lcd.setCursor(4, 1);
lcd.write(byte(2));
lcd.print(" ");
if (time_mkering <= 9) {
lcd.print("0");
}
lcd.print(time_mkering);
lcd.print(":");
if (time_skering <= 9) {
lcd.print("0");
}
lcd.print(time_skering);
// Timer Jatuh Tempo
if (time_mkering == 0 && time_skering == 0) {
flag2 = 0;
tdown.stop();
digitalWrite(mtr_spin, LOW);
delay(1000);
menu = 19;
lcd.clear();
}
if (flag2 == 1) {
kering();
}
delay(1);
}
}
if (menu == 19) {
digitalWrite(r1, LOW);
digitalWrite(r2, LOW);
digitalWrite(mtr_spin, LOW);
//digitalWrite(l2, LOW);
digitalWrite(sld1, LOW);
digitalWrite(sld2, LOW);
lcd.setCursor(0, 0);
lcd.print(" PROSES TELAH ");
lcd.setCursor(0, 1);
lcd.print(" SELESAI !! ");
for (int i = 1; i <= 15; i++)
{
digitalWrite(buzz, HIGH);
lcd.backlight();
delay(300);
digitalWrite(buzz, LOW);
lcd.noBacklight();
delay(300);
}
lcd.backlight();
while (menu == 19) {
lcd.setCursor(0, 0);
lcd.print(" TEKAN TOMBOL ");
lcd.setCursor(0, 1);
lcd.print(" [OK] -> MENU ");
if (digitalRead(ok) == LOW) {
for (int x = 1; x <= 2; x++)
{
digitalWrite(buzz, HIGH);
delay(100);
digitalWrite(buzz, LOW);
delay(100);
}
menu = 0;
delay(200);
lcd.backlight();
lcd.clear();
}
}
}
// SET LEVEL AIR WASH ONLY
//===================================
if (menu == 20) {
while (menu == 20) {
level_air();
if (digitalRead(ok) == LOW) {
for (int x = 1; x <= 2; x++)
{
digitalWrite(buzz, HIGH);
delay(60);
digitalWrite(buzz, LOW);
delay(60);
}
EEPROM.write(100, ketinggian);
EEPROM.write(101, level);
lcd.clear();
menu = 21;
eeprom_read();
delay(250);
}
}
}
//================================================================
// SET TIME WASH ONLY
//==============================================
if (menu == 21) {
while (menu == 21) {
if (digitalRead(up) == LOW) {
time_mcuci++;
if (time_mcuci > 60) {
time_mcuci = 1;
}
delay(200);
}
if (digitalRead(down) == LOW) {
time_mcuci--;
if (time_mcuci < 1) {
time_mcuci = 60;
}
delay(200);
}
if (digitalRead(ok) == LOW) {
for (int x = 1; x <= 2; x++)
{
digitalWrite(buzz, HIGH);
delay(60);
digitalWrite(buzz, LOW);
delay(60);
}
eeprom_write();
mulai();
lcd.clear();
delay(250);
}
lcd.setCursor(0, 0);
lcd.write(byte(3));
lcd.print(" WAKTU CUCI ");
lcd.write(byte(3));
lcd.setCursor(3, 1);
lcd.write(byte(2));
lcd.print(" ");
if (time_mcuci <= 9) {
lcd.print("0");
}
lcd.print(time_mcuci);
lcd.print(" Menit");
if (henti == 2) {
menu = 22;
lcd.clear();
}
}
}
//=================================================================
if (menu == 22) {
henti = 0;
while (menu == 22) {
inwater();
if (henti == 1) {
berhenti();
}
if (henti == 2) {
menu = 23;
tdown.start();
flag2 = 1;
eeprom_read();
lcd.clear();
}
}
}
if (menu == 23) {
tdown.start();
henti = 0;
time_scuci = 0;
while (menu == 23) {
lcd.setCursor(0, 0);
lcd.print("PROSES CUCI SAJA");
tdown.run();
if (henti == 1) {
tdown.start();
flag2 = 1;
}
if (digitalRead(sett) == LOW) {
kembali();
k = 1;
delay(200);
break;
}
if (digitalRead (down) == 0) {
berhenti();
henti = 1;
tdown.stop();
flag2 = 0;
delay(200);
}
if (digitalRead (door) == HIGH) {
openned();
henti = 1;
tdown.stop();
flag2 = 0;
delay(200);
}
lcd.setCursor(4, 1);
lcd.write(byte(2));
lcd.print(" ");
if (time_mcuci <= 9) {
lcd.print("0");
}
lcd.print(time_mcuci);
lcd.print(":");
if (time_scuci <= 9) {
lcd.print("0");
}
lcd.print(time_scuci);
// Timer Jatuh Tempo
if (time_scuci == 0 && time_mcuci == 0) {
flag2 = 0;
tdown.stop();
delay(1000);
digitalWrite(r1, LOW);
digitalWrite(r2, LOW);
digitalWrite(sld2, HIGH);
menu = 61;
lcd.clear();
}
if (flag2 == 1) {
kanan_kiri();
}
delay(1);
}
}
if (menu == 61) {
henti = 0;
while (menu == 61) {
outwater();
if (henti == 1) {
berhenti();
}
if (henti == 2) {
menu = 19;
digitalWrite(r1, LOW);
}
}
}
}
//#######################################
void eeprom_write() {
EEPROM.write(1, time_scuci);
EEPROM.write(2, time_mcuci);
EEPROM.write(3, time_sbilas);
EEPROM.write(4, time_mbilas);
EEPROM.write(5, time_skering);
EEPROM.write(6, time_mkering);
}
void eeprom_read() {
//time_scuci = EEPROM.read(1);
time_mcuci = EEPROM.read(2);
//time_sbilas = EEPROM.read(3);
time_mbilas = EEPROM.read(4);
time_skering = EEPROM.read(5);
time_mkering = EEPROM.read(6);
}
//#######################################
//===========================================================================
//===========================================================================
//#######################################
void berhenti() {
while (1) {
lcd.backlight();
if (digitalRead(sett) == LOW) {
kembali();
tdown.stop();
delay(200);
lcd.clear();
break;
}
if (digitalRead(up) == LOW) {
digitalWrite(buzz, HIGH);
delay(100);
digitalWrite(buzz, LOW);
henti = 0;
lcd.clear();
delay(200);
break;
}
lcd.setCursor(0, 0);
lcd.print("PROSES BERHENTI");
lcd.setCursor(0, 1);
lcd.print(" Tekan [Start] ");
digitalWrite(r1, LOW);
digitalWrite(r2, LOW);
digitalWrite(sld1, LOW);
//digitalWrite(l1, LOW);
//digitalWrite(l2, LOW);
}
}
void kembali() {
while (1) {
for (int x = 1; x <= 1; x++)
{
digitalWrite(buzz, HIGH);
delay(100);
digitalWrite(buzz, LOW);
}
lcd.backlight();
digitalWrite(r1, LOW);
digitalWrite(r2, LOW);
//digitalWrite(l1, LOW);
//digitalWrite(l2, LOW);
digitalWrite(sld1, LOW);
// digitalWrite(sld2, LOW);
tdown.stop();
eeprom_read();
flag2 = 0;
menu = 0;
k = 1;
lcd.clear();
break;
}
}
void kering() {
if (kering_bilas == 0) {
unsigned long currentMillis = millis();
if ((ledkering_bilas == LOW) && (currentMillis - previousMilliskering_bilas >= Offkering_bilas))
{
ledkering_bilas = HIGH; // turn it on
previousMilliskering_bilas = currentMillis; // Remember the time
digitalWrite(mtr_spin, ledkering_bilas); // Update the actual LED
kering_bilas = 1;
}
}
if (kering_bilas == 1) {
unsigned long currentMillis = millis();
if ((ledkering_bilas == HIGH) && (currentMillis - previousMilliskering_bilas >= Onkering_bilas))
{
ledkering_bilas = LOW; // turn it on
previousMilliskering_bilas = currentMillis; // Remember the time
digitalWrite(mtr_spin, ledkering_bilas); // Update the actual LED
kering_bilas = 0;
}
}
}
void sos() {
while (1) {
lcd.backlight();
if (digitalRead(sett) == LOW) {
lcd.backlight();
kembali();
delay(200);
lcd.clear();
break;
}
if (digitalRead(up) == LOW) {
lcd.backlight();
digitalWrite(buzz, HIGH);
delay(100);
digitalWrite(buzz, LOW);
henti = 0;
lcd.clear();
delay(200);
break;
}
if (digitalRead(ol) == HIGH) {
buzz_so();
} else {
digitalWrite(buzz, LOW);
}
lcd.setCursor(0, 0);
lcd.print(" Error DE ");
lcd.setCursor(0, 1);
lcd.print("Tutup Pintu >|< ");
digitalWrite(r1, LOW);
digitalWrite(r2, LOW);
digitalWrite(sld1, LOW);
}
}
void buzz_so() {
if (so == 0) {
unsigned long currentMillis = millis();
if ((buzz_sos == LOW) && (currentMillis - previousMillisos >= Offsos))
{
buzz_sos = HIGH; // turn it on
previousMillisos = currentMillis; // Remember the time
digitalWrite(buzz, buzz_sos); // Update the actual LED
lcd.backlight();
so = 1;
}
}
if (so == 1) {
unsigned long currentMillis = millis();
if ((buzz_sos == HIGH) && (currentMillis - previousMillisos >= Onsos))
{
buzz_sos = LOW; // turn it on
previousMillisos = currentMillis; // Remember the time
digitalWrite(buzz, buzz_sos); // Update the actual LED
so = 2;
lcd.noBacklight();
}
}
if (so == 2) {
so = 0;
lcd.backlight();
}
}
void inwater () {
while (1) {
if (inWater == 0) {
unsigned long currentMillis = millis();
if ((in_water == LOW) && (currentMillis - previousMillinwater >= OffinWater))
{
in_water = HIGH; // turn it on
previousMillinwater = currentMillis; // Remember the time
// digitalWrite(buang, buzz_sos1); // Update the actual LED
inWater = 1;
}
}
if (inWater == 1) {
unsigned long currentMillis = millis();
if ((in_water == HIGH) && (currentMillis - previousMillinwater >= OninWater))
{
in_water = LOW; // turn it on
previousMillinwater = currentMillis; // Remember the time
// digitalWrite(buang, buzz_sos1); // Update the actual LED
//digitalWrite(sld2, LOW);
delay(1000);
inWater = 0;
henti = 2;
lcd.clear();
}
}
unsigned long currentMillis = millis();
float wktu = (currentMillis / 1000) % 60;
lcd.setCursor(0, 0);
lcd.print(" Masukkan Air ");
lcd.setCursor(0, 1);
lcd.write(byte(2));
lcd.print(" * < == > * ");
break;
}
}
void outwater () {
while (1) {
if (outWater == 0) {
unsigned long currentMillis = millis();
if ((out_water == LOW) && (currentMillis - previousMillioutwater >= OffoutWater))
{
out_water = HIGH; // turn it on
previousMillioutwater = currentMillis; // Remember the time
// digitalWrite(buang, buzz_sos1); // Update the actual LED
outWater = 1;
}
}
if (outWater == 1) {
unsigned long currentMillis = millis();
if ((out_water == HIGH) && (currentMillis - previousMillioutwater >= OnoutWater))
{
out_water = LOW; // turn it on
previousMillioutwater = currentMillis; // Remember the time
// digitalWrite(buang, buzz_sos1); // Update the actual LED
digitalWrite(sld2, LOW);
delay(1000);
outWater = 0;
henti = 2;
lcd.clear();
}
}
unsigned long currentMillis = millis();
float wktu = (currentMillis / 1000) % 60;
lcd.setCursor(0, 0);
lcd.print(" lagi buang ");
lcd.setCursor(0, 1);
lcd.write(byte(2));
lcd.print(" * < == > * ");
break;
}
}
void waiting () {
while (1) {
if (outWaiting == 0) {
unsigned long currentMillis = millis();
if ((out_waiting == LOW) && (currentMillis - previousMillioutwaiting >= OffoutWaiting))
{
out_waiting = HIGH; // turn it on
previousMillioutwaiting = currentMillis; // Remember the time
outWaiting = 1;
}
}
if (outWaiting == 1) {
unsigned long currentMillis = millis();
if ((out_waiting == HIGH) && (currentMillis - previousMillioutwaiting >= OnoutWaiting))
{
out_waiting = LOW; // turn it on
previousMillioutwaiting = currentMillis; // Remember the time
delay(1000);
outWaiting = 0;
henti = 2;
lcd.clear();
}
}
lcd.setCursor(0, 0);
lcd.print(" Waiting. ");
lcd.setCursor(0, 1);
lcd.print("================");
break;
}
}
void mulai() {
while (1) {
lcd.setCursor(0, 0);
lcd.print(" Tekan 'START' ");
lcd.setCursor(0, 1);
lcd.print(" Untuk Mulai ");
if (digitalRead(up) == LOW) {
digitalWrite(buzz, HIGH);
delay(100);
digitalWrite(buzz, LOW);
flag2 = 1;
henti = 2;
tdown.start();
lcd.clear();
delay(250);
break;
}
}
}
void level_air() {
if (digitalRead(sett) == LOW) {
for (int x = 1; x <= 1; x++)
{
digitalWrite(buzz, HIGH);
delay(100);
digitalWrite(buzz, LOW);
}
if (level >= 5) {
level = 0;
}
level++;
delay(100);
lcd.clear();
}
lcd.setCursor(0, 0);
lcd.write(byte(3));
lcd.print("ATUR LEVEL AIR");
lcd.write(byte(3));
lcd.setCursor(0, 1);
switch (level) {
case 1:
lcd.write(byte(2));
lcd.print(" Paling Tinggi");
//ketinggian=21700;
ketinggian = 19900;
level = 1;
break;
case 2:
lcd.write(byte(2));
lcd.print(" Tinggi");
//ketinggian=22000;
ketinggian = 20600;
level = 2;
break;
case 3:
lcd.write(byte(2));
lcd.print(" Setengah");
//ketinggian=22400;
ketinggian = 21000;
level = 3;
break;
case 4:
lcd.write(byte(2));
lcd.print(" Rendah");
//ketinggian=22800;
ketinggian = 21800;
level = 4;
break;
case 5:
lcd.write(byte(2));
lcd.print(" Paling Rendah");
//ketinggian=23200;
ketinggian = 22500;
level = 5;
break;
}
}
void openned() {
while (1) {
lcd.backlight();
if (digitalRead(sett) == LOW) {
lcd.backlight();
kembali();
delay(200);
lcd.clear();
break;
}
if (digitalRead(up) == LOW) {
lcd.backlight();
digitalWrite(buzz, HIGH);
delay(100);
digitalWrite(buzz, LOW);
henti = 0;
lcd.clear();
delay(200);
break;
}
if (digitalRead(door) == HIGH) {
buzz_so();
} else {
digitalWrite(buzz, LOW);
}
lcd.setCursor(0, 0);
lcd.print(" TUTUP PINTU !! ");
lcd.setCursor(0, 1);
lcd.print(" Tekan [Start] ");
digitalWrite(r1, LOW);
digitalWrite(r2, LOW);
digitalWrite(sld1, LOW);
// digitalWrite(l1, LOW);
// digitalWrite(l2, LOW);
}
}
void kanan_kiri() {
if (milis == 0) {
unsigned long currentMillis = millis();
if ((ledState == LOW) && (currentMillis - previousMillis >= OffTime))
{
ledState = HIGH; // turn it on
previousMillis = currentMillis; // Remember the time
digitalWrite(r1, ledState); // Update the actual LED
// digitalWrite(l1, HIGH);
milis = 1;
}
}
if (milis == 1) {
unsigned long currentMillis = millis();
if ((ledState == HIGH) && (currentMillis - previousMillis >= OnTime))
{
ledState = LOW; // Turn it off
previousMillis = currentMillis; // Remember the time
digitalWrite(r1, ledState); // Update the actual LED
// digitalWrite(l1, LOW);
milis = 2;
}
}
if (milis == 2) {
unsigned long currentMillis = millis();
if ((ledState == LOW) && (currentMillis - previousMillis >= OffTime))
{
ledState = HIGH; // turn it on
previousMillis = currentMillis; // Remember the time
digitalWrite(r2, ledState); // Update the actual LED
// digitalWrite(l2, HIGH);
milis = 3;
}
}
if (milis == 3) {
unsigned long currentMillis = millis();
if ((ledState == HIGH) && (currentMillis - previousMillis >= OnTime))
{
ledState = LOW; // Turn it off
previousMillis = currentMillis; // Remember the time
digitalWrite(r2, ledState); // Update the actual LED
// digitalWrite(l2, LOW);
milis = 0;
}
}
}
//#######################################