#include <Wire.h>
#include <LiquidCrystal_I2C.h>
int x = 0;
int lastCount = 0; // Menyimpan nilai terakhir hitungan
int input = 7;
int state = 0;
int resetButton = 6;
int startButton = 3;
int stopButton = 2;
const int ledPin = 5;
const int resetLedPin = 4;
const int ledStartPin = 8;
bool counting = false;
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("fusion splice");
lcd.setCursor(0, 1);
lcd.print(" Project");
delay(5000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("fusion splice ");
lcd.setCursor(0, 1);
lcd.print(x);
lcd.print(" = Finish ");
pinMode(resetButton, INPUT_PULLUP);
pinMode(startButton, INPUT_PULLUP);
pinMode(stopButton, INPUT_PULLUP);
pinMode(ledPin, OUTPUT);
pinMode(resetLedPin, OUTPUT);
pinMode(ledStartPin, OUTPUT);
}
void loop() {
int counter = digitalRead(input);
int resetButtonState = digitalRead(resetButton);
int startButtonState = digitalRead(startButton);
int stopButtonState = digitalRead(stopButton);
if (resetButtonState == LOW) {
resetCounter();
}
if (startButtonState == LOW && !counting) {
counting = true;
digitalWrite(ledStartPin, HIGH);
lcd.setCursor(0, 1);
lcd.print("Start Pressed ");
delay(1000);
lcd.setCursor(0, 1);
lcd.print(" = Finish ");
}
if (stopButtonState == LOW && counting) {
counting = false;
digitalWrite(ledStartPin, LOW);
lcd.setCursor(0, 1);
lcd.print("Stop Pressed ");
delay(1000);
lcd.setCursor(0, 1);
lcd.print("Last Count = "); // Pesan "Last Count = " sebelum nilai terakhir hitungan
lcd.print(lastCount); // Menampilkan nilai terakhir hitungan pada layar
}
if (counting) {
if (counter == HIGH) {
if (state == 0) {
incrementCounter();
state = 1;
}
} else {
state = 0;
}
}
}
void resetCounter() {
x = 0;
lastCount = 0;
counting = false; // Atur status counting ke false setelah reset
lcd.setCursor(0, 1);
lcd.print(" Reset ");
digitalWrite(resetLedPin, HIGH);
delay(2000);
lcd.setCursor(0, 1);
lcd.print(" ");
digitalWrite(resetLedPin, LOW);
}
void incrementCounter() {
x++;
lastCount = x; // Menyimpan nilai terakhir hitungan
lcd.setCursor(0, 1);
lcd.print(" ");
lcd.setCursor(0, 1);
lcd.print(x);
digitalWrite(ledPin, HIGH);
delay(500);
digitalWrite(ledPin, LOW);
}