#include <Keypad.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define buttonStart 13
#define relay1 4
#define relay2 3
#define relay3 2
unsigned long time_now, time_before;
unsigned long time_now1, time_before1;
const int time_sensor = 100;
const int time_relay = 300;
const byte ROWS = 4;
const byte COLS = 4;
char hexaKeys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = {12, 11, 10, 9};
byte colPins[COLS] = {8, 7, 6, 5};
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
LiquidCrystal_I2C lcd(0x27, 16, 2);
byte data_count = 10;
int counter_relay = 0;
int counter_plastik = 0;
int target = 0;
int number = 0;
int memory;
char customKey;
bool switchState = false;
char keyLock = NO_KEY;
void setup(){
Serial.begin(9600);
lcd.init();
lcd.backlight();
lcd.setCursor(0,0);
String data = String ("Target = ");
lcd.print(data + target);
lcd.setCursor(0, 1);
String data2 = String ("Plastik = ");
lcd.print(data2 + counter_plastik);
lcd.setCursor(10,0);
pinMode(buttonStart, INPUT_PULLUP);
pinMode(relay1, OUTPUT);
pinMode(relay2, OUTPUT);
pinMode(relay3, OUTPUT);
digitalWrite(relay1, LOW);
digitalWrite(relay2, LOW);
digitalWrite(relay3, LOW);
}
void loop(){
time_now = millis();
time_now1 = millis();
////////////////MENGHITUNG JUMLAH PLASTIK TERCETAK///////////
if (time_now-time_before>time_sensor){
time_before=time_now;
char key = customKeypad.getKey();
if (key) {
processInput(key);
}
int buttonStart_State = digitalRead(buttonStart);
if (buttonStart_State == LOW){
switchState = true;
} else {
switchState = false;
}
if (switchState){
counter_relay++;
if(counter_plastik==number){
counter_relay=0;
for (int i=10;i<=15;i++){
lcd.setCursor(i,1);
lcd.print(' ');
}
} else {
counter_relay++;
}
}else{
for (int ii=11;ii<=15;ii++){
lcd.setCursor(ii,1);
lcd.print(' ');
if (ii == 15){
break;
}
}
counter_relay=0;
}
lcd.setCursor(data_count,1);
lcd.print(counter_plastik);
Serial.println(counter_relay);
}
////////////////MENGHITUNG JUMLAH PLASTIK TERCETAK///////////
////////////////MENGATUR RELAY PENGGERAK PNEUMATIK///////////
if (time_now1-time_before1>time_relay){
time_before1=time_now1;
if ( counter_relay >= 1 && counter_relay <= 20 ){
digitalWrite(relay1, HIGH);
}else{
digitalWrite(relay1, LOW);
}
if ( counter_relay >= 20 && counter_relay <= 40){
digitalWrite(relay2, HIGH);
}else{
digitalWrite(relay2, LOW);
}
if (counter_relay >= 40 && counter_relay <= 60){
digitalWrite(relay3, HIGH);
}else{
digitalWrite(relay3, LOW);
}
}
if (counter_relay == 60){
counter_relay = 0;
counter_plastik++;
Serial.print(" > ");
Serial.println(counter_plastik);
}
////////////////MENGATUR RELAY PENGGERAK PNEUMATIK///////////
}
void processInput(char key){
if (key != NO_KEY){
if (key >= '0' && key <= '9'){
if (keyLock == NO_KEY) {
number = (number * 10) + (key - '0');
}
}else if (key == 'A'){
keyLock = key;
}else if (key == 'B'){
for(int i = 10; i <= 15; i++){
lcd.setCursor(i,0);
lcd.print(' ');
lcd.setCursor(i,1);
lcd.print(' ');
if(i == 16){
break;
}
}
number = 0;
counter_plastik = 0;
keyLock = NO_KEY;
}
}
lcd.setCursor(data_count,0);
lcd.print(number);
// Serial.println("Inputan monitor :" + number);
// Serial.println("Tombol :" + key);
}