PROJECT SMART HYDROPONIC VERSI-0
PROJECT SMART HYDROPONIC VERSI-0
//By M. Afdal Zikri || BPVP Belitung
#include <Keypad.h>
#include <LiquidCrystal_I2C.h>
#include <EEPROM.h>
byte pinBaris[4] = {13,12,11,10};
byte pinKolom[4] = {9,8,7,6};
char kar[4][4] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
LiquidCrystal_I2C lcd(0x27,16,2);
Keypad keypad(makeKeymap(kar), pinBaris, pinKolom, 4,4);
bool ledLcd = true;
String dataTDS = "";
int setTDS = 0;
int bintang = 0;
bool pompaIrigasi = false;
bool pompaNutrisi = false;
int barisLcd = 11;
bool kedip = false;
bool suruhKedip = false;
unsigned long lastKedip = 0L;
void setup() {
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
lcd.init();
lcd.backlight();
lcd.setCursor(0,0);
lcd.print(" HIDROPONIK ");
lcd.setCursor(0,1);
lcd.print(" PINTAR ");
EEPROM.get(0, setTDS);
delay(2000);
lcd.clear();
}
void loop() {
char key = keypad.getKey();
if(key != NO_KEY){
switch(key){
case 'A' :
pompaIrigasi = !pompaIrigasi;
digitalWrite(4, pompaIrigasi);
break;
case 'B' :
pompaNutrisi = !pompaNutrisi;
digitalWrite(5, pompaNutrisi);
break;
case 'C' :
ledLcd = !ledLcd;
if (ledLcd) lcd.backlight();
else lcd.noBacklight();
break;
case 'D' :
setTDS = 0;
EEPROM.put(0, setTDS);
break;
case '*' :
lcd.clear();
suruhKedip = true;
bintang++;
if (bintang > 1) {
bintang = 0;
suruhKedip = false;
}
break;
}
}
if(bintang == 0) utama();
if (suruhKedip) berkedip();
else lcd.display();
if(bintang == 1) satu(key);
}
void utama(){
int sensor = analogRead(A0);
int nilaiTDS = map(sensor, 0, 1023, 0, 2000);
lcd.setCursor(0,0);
lcd.print("Nilai TDS: " + String(nilaiTDS) + " ");
lcd.setCursor(0,1);
lcd.print("Batas TDS: " + String(setTDS) + " ");
}
void satu(char tomb){
lcd.setCursor(0,0);
lcd.print("Set Batas: ");
lcd.setCursor(0,1);
lcd.print("Simpan -> #");
if (tomb >= '0' && tomb <= '9' ){
lcd.setCursor(barisLcd, 0);
lcd.print(tomb);
dataTDS += tomb;
barisLcd++;
}
if (tomb == '#'){
suruhKedip = false;
barisLcd = 11;
if(dataTDS.length() <= 4) {
setTDS = dataTDS.toInt();
EEPROM.put(0, setTDS);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" Data Tersimpan ");
delay(500);
lcd.clear();
dataTDS = "";
bintang = 0;
}
else {
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" Format Salah!! ");
lcd.setCursor(0,1);
lcd.print(" Set Ulang ");
delay(500);
lcd.clear();
dataTDS = "";
bintang = 0;
}
}
}
void berkedip(){
if(millis() - lastKedip >= 500) {
lastKedip = millis();
kedip = !kedip;
}
if (kedip) lcd.noDisplay();
else lcd.display();
}