#include <LiquidCrystal_I2C.h> //ของ wokwi
#define I2C_ADDR 0x27 //ของ wokwi
#define LCD_COLUMNS 16 //ของ wokwi
#define LCD_LINES 2 //ของ wokwi
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES); //ของ wokwi
unsigned long prevtime=0;
unsigned long elapetime=0;
unsigned long currentMillis ;
unsigned long seconds;
unsigned long minutes;
unsigned long hours;
int loadin_sensor=2;
int sw_stop=5;
int sw_start=6;
unsigned long settime=120000;
bool mcstatus=0;
bool prevmcstatus=0;
void setup() {
Serial.begin(9600);
pinMode(loadin_sensor, INPUT);
pinMode(sw_stop, OUTPUT);
pinMode(sw_start, OUTPUT);
lcd.begin(16, 2);
lcd.clear();
// Print a message to the lcd.
//lcd.print("Custom Character");
}
void loop() {
//Serial.println(digitalRead(2));
if(digitalRead(loadin_sensor)==1){
prevtime=millis();
}
else{
//Serial.println(millis()-prevtime);
elapetime=millis()-prevtime;
//delay(200);
}
if(elapetime > settime){
//Serial.println("Stop MC");
lcd.setCursor(0, 1);
lcd.print("STATUS:STOP ");
//mcstatus=0;
//digitalWrite(7, LOW);
if(prevmcstatus==1){
digitalWrite(sw_stop, HIGH);
delay(500);
digitalWrite(sw_stop, LOW);
Serial.println("Switch Stop Trig");
}
prevmcstatus=0;
}
else{
//Serial.println("Start MC");
lcd.setCursor(0, 1);
lcd.print("STATUS:START");
//mcstatus=1;
if(prevmcstatus==0){
digitalWrite(sw_start, HIGH);
delay(500);
digitalWrite(sw_start, LOW);
Serial.println("Switch Start Trig");
}
prevmcstatus=1;
showtime();
}
}
void showtime(){
currentMillis = elapetime;
currentMillis=settime-currentMillis; // นับเวลาถอยหลัง
seconds = currentMillis / 1000;
minutes = seconds / 60;
hours = minutes / 60;
//unsigned long days = hours / 24;
currentMillis %= 1000;
seconds %= 60;
minutes %= 60;
hours %= 24;
lcd.setCursor(0, 0);
if (minutes < 10) {
lcd.print("0");
}
lcd.print(minutes);
lcd.print(":");
if (seconds < 10) {
lcd.print("0");
}
lcd.print(seconds);
}