#include <Wire.h> //berfungsi untuk mengimpor fungsi fungsi yang sudah didefinisikan pada file
#include <LiquidCrystal_I2C.h> // mengimpor fungsi liquid crystal display dari library

//mengatur alamat LCD ke 0x27 untuk tampilan LCD jenis 16 karakter dan 2 line
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int  buttonset = 5;   // mendeklarasikan fungsi anggota pada pin 5
int penghitungrepetisi =0; // menginisialisasi kondisi awal perhitungan adalah 0
int penghitungset =0;      //menginisialisasi kondisi awal perhitungan adalah 0
int statusrepetisi = 0;   //untuk mengidentifikasi kondisi perhitungan
int statusset = 0;        //untuk mengidentifikasi kondisi perhitungan

void setup() {              //berfungsi untuk wadah menuliskan pin sesuai setingan library(fungsi khusus)
  Serial.begin(9600);       //kecepatan dalam mengolah data 
   lcd.begin();             //memanggil fungsi LCD
   pinMode(buttonset, INPUT);//menentukan kondisi awal pada pin yang digunakan
}

void loop() {  //berfungsi untuk menjalankan code secara berulang tanpa batas
{
   lcd.setCursor(0,0);      //menentukan tata letak data yang ditampilkan
   lcd.print("Repetisi ="); //menentukan data yang akan ditampilkan
   lcd.setCursor(0,1);
   lcd.print("Set      =");
}
if (analogRead(A0) >600){     //ketika pin analog A0 mendapatkan sensor value lebih dari 700
   (statusrepetisi == HIGH);  //maka perhitungan akan dimulai dengan terpicunya kondisi statusrepetisi
      penghitungrepetisi++;   // perhitungan repetisi pada LCD akan menambah 1 setiap A0 lebih dari 700
      lcd.setCursor(11,0);   
      lcd.print(penghitungrepetisi);
      delay(750);             //waktu jeda untuk eksekusi pada setiap kolom program
     }
statusset = digitalRead(buttonset); //kondisi status set sama dengan kondisi pada button set yaitu push button pada pin digital 5
     if (statusset == HIGH)          //maka perhitungan akan dimulai dengan terpicunya kondisi
     {
      penghitungrepetisi =0;        //kondisi perhitungan repetisi menjadi 0 karena set merupakan pengelompokkan repetisi
      lcd.clear();                  //menghapus perhitungan repetisi
      penghitungset++;
      lcd.setCursor(11,1);
      lcd.print(penghitungset);
      delay(500);
     }
}
