#include <Wire.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
/*#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4); //LiquidCrystal_I2C lcd(0x20,20,4); // set the LCD address to 0x27 for a 16 chars and 2 line display or 20 chars and 4 line display
//#include <LiquidCrystal.h>
//LiquidCrystal lcd(3,4,5,6,7,8);*/
#define up 3
#define down 2
#define input_power analogRead(A0)
#define input_reflected analogRead(A1)
#define input_rf_in analogRead(A2)
#define input_temp_1 analogRead(A3)
#define input_temp_2 analogRead(A3)
#define input_temp_3 analogRead(A3)
#define input_arus_1 analogRead(A4)
#define input_arus_2 analogRead(A4)
#define input_arus_3 analogRead(A4)
#define input_vcc_1 analogRead(A5)
#define input_vcc_2 analogRead(A5)
#define input_vcc_3 analogRead(A5)
#define input_load_1 digitalRead(4)
#define input_load_2 digitalRead(5)
#define input_load_3 digitalRead(5)
#define output_dip_1 digitalWrite(4, HIGH)
#define output_dip_2 digitalWrite(5, HIGH)
#define output_dip_3 digitalWrite(6, HIGH);
#define output_dip_4 digitalWrite(13, HIGH);
//#define res 10
//#define Clear 5
//#define FAN 9
//#define batt 8
//#define AC A3
//#define Temp A2
//#define load1 6
//#define load2 7
int power = 0;
float reflected = 0;
float rf_in = 0;
float temp_1 = 10;
float temp_2 = 10;
float temp_3 = 10;
float arus_1 = 20;
float arus_2 = 20;
float arus_3 = 20;
float vcc_1 = 30;
float vcc_2 = 30;
float vcc_3 = 30;
float load_1 = 40;
float load_2 = 40;
float load_3 = 40;
int menu = 1;
int drive = 13;
int input = 0;
int downsel=0;
void setup() {
//lcd.init(); // initialize the lcd
//lcd.backlight();
lcd.begin(20,4);
pinMode(up,INPUT_PULLUP);
pinMode(down,INPUT_PULLUP);
//pinMode(res,INPUT_PULLUP);
//pinMode(Clear,INPUT_PULLUP);
//pinMode(FAN,OUTPUT);
//pinMode(batt,INPUT);
//pinMode(AC,INPUT);
//pinMode(load1,OUTPUT);
//pinMode(load2,OUTPUT);
pinMode(input_temp_1,INPUT);
pinMode(input_power, INPUT);
pinMode(input_reflected, INPUT);
pinMode(input_rf_in, INPUT);
pinMode(input_arus_1, INPUT);
pinMode(input_arus_2, INPUT);
pinMode(input_arus_3, INPUT);
pinMode(input_vcc_1, INPUT);
pinMode(input_vcc_2, INPUT);
pinMode(input_vcc_3, INPUT);
pinMode(input_load_1, INPUT);
pinMode(input_load_2, INPUT);
pinMode(input_load_3, INPUT);
/* pinMode(A3, INPUT);
pinMode(A4, INPUT);
pinMode(A5, INPUT);
pinMode(A6, INPUT);
pinMode(A7, INPUT); */
pinMode(drive, OUTPUT);
// pinMode(led,OUTPUT);
welcome();
//lcd.setCursor(0, 0);
// lcd.write(byte(0)); // when calling lcd.write() '0' must be cast as a byte
// lcd.setCursor(0,1);
// lcd.write(1);
// lcd.setCursor(0,2);
// lcd.write(2);
// lcd.setCursor(0,3);
// lcd.write(3);
// lcd.setCursor(1,0);
//lcd.write(4);
// lcd.setCursor(1,1);
// lcd.write(5);
}
void welcome(){
lcd.setCursor(0,0);
lcd.print("WELCOME TO ");
lcd.setCursor(5,1);
lcd.print("TONY-TECH PRO");
lcd.setCursor(3,2);
lcd.print("Electrical and ");
lcd.setCursor(0,3);
lcd.print("Electronics Services");
digitalWrite(13, HIGH);
delay(1000);
lcd.clear();
}
void home(){
powers();
reflecteds();
rfpowers();
//temps();
//arusflow();
//voltages();
//loads();
//pll();
}
void powers(){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("RF POWER Status");
lcd.setCursor(0,1); //formula using for perform action power
lcd.print("POWER: WATT");
lcd.setCursor(7,1);
lcd.print(power);
}
void reflecteds(){ //formula using for perform action power
lcd.setCursor(0,2);
lcd.print("REF : WATT");
lcd.setCursor(7,2);
lcd.print(reflected);
}
void rfpowers(){
lcd.setCursor(0,3); //formula using for perform action power
lcd.print("RF IN: WATT");
lcd.setCursor(7,3);
lcd.print(rf_in);
}
void temps(){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("TEMP Status");
lcd.setCursor(0,1);//formula using for perform action power
lcd.print("TEMP 1: C");
//
lcd.setCursor(7,1);
lcd.print(temp_1);
lcd.setCursor(0,2); //formula using for perform action power
lcd.print("TEMP 2: C");
lcd.setCursor(7,2);
lcd.print(temp_2);
//
lcd.setCursor(0,3); //formula using for perform action power
lcd.print("TEMP 3: C");
lcd.setCursor(7,3);
lcd.print(temp_3);
delay(150);
}
void arusflow(){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("ARUS Status");
lcd.setCursor(0,1); //formula using for perform action power
lcd.print("ARUS 1: A");
lcd.setCursor(7,1);
lcd.print(arus_1);
//
lcd.setCursor(0,2); //formula using for perform action power
lcd.print("ARUS 2: A");
lcd.setCursor(7,2);
lcd.print(arus_2);
//
lcd.setCursor(0,3); //formula using for perform action power
lcd.print("ARUS 3: A");
lcd.setCursor(7,3);
lcd.print(arus_2);
delay(150);
}
void voltages(){
lcd.clear();
lcd.setCursor(2,0);
lcd.print("DC VOLTAGE Status");
lcd.setCursor(0,1);
lcd.print("VCC 1: V");
lcd.setCursor(7,1);
lcd.print(vcc_1);
//
lcd.setCursor(0,2);
lcd.print("VCC 2: V");
lcd.setCursor(7,2);
lcd.print(vcc_2);
//
lcd.setCursor(0,3);
lcd.print("VCC 3: V");
lcd.setCursor(7,3);
lcd.print(vcc_3);
delay(150);
}
void loads(){
lcd.clear();
lcd.setCursor(2,0);
lcd.print("DC POWER Status");
lcd.setCursor(0,1);
lcd.print("LOAD 1: WATT");
lcd.setCursor(7,1);
lcd.print(load_1);
//
lcd.setCursor(0,2);
lcd.print("LOAD 2: WATT");
lcd.setCursor(7,2);
lcd.print(load_2);
//
lcd.setCursor(0,3);
lcd.print("LOAD 3: WATT");
lcd.setCursor(7,3);
lcd.print(load_3);
delay(150);
}
void pll(){
lcd.clear();
lcd.setCursor(2,0);
lcd.print("PLL SETUP Status");
lcd.setCursor(0,1);
lcd.print("FREKUE: MHZ");
lcd.setCursor(7,1);
lcd.print(load_1);
//
lcd.setCursor(0,2);
lcd.print("LOAD 2: WATT");
lcd.setCursor(7,2);
lcd.print(load_2);
//
lcd.setCursor(0,3);
lcd.print("LOAD 3: WATT");
lcd.setCursor(7,3);
lcd.print(load_3);
delay(150);
}
void bgProses(){
//input = (input_power); //analogRead function is used to recive analog data Power
power = (input_power * 200.0) / 1024.0;
//input = analogRead(A1); //analogRead function is used to recive analog data Power
reflected = (input_reflected * 20.0) / 1024.0;
//input = analogRead(A2); //analogRead function is used to recive analog data Power
rf_in = (input_rf_in * 20.0) / 1024.0;
//input = analogRead(A2); //analogRead function is used to recive analog data Power
temp_1 = (input_temp_1 * 20.0) / 1024.0;
//input = analogRead(A2); //analogRead function is used to recive analog data Power
temp_2 = (input_temp_2 * 20.0) / 1024.0;
//input = analogRead(A2); //analogRead function is used to recive analog data Power
temp_3 = (input_temp_3 * 20.0) / 1024.0;
//input = analogRead(A3); //analogRead function is used to recive analog data Power
arus_1 = (input_arus_1 * 30.0) / 1024.0;
//input = analogRead(A3); //analogRead function is used to recive analog data Power
arus_2 = (input_arus_2 * 30.0) / 1024.0;
//input = analogRead(A3); //analogRead function is used to recive analog data Power
arus_3 = (input_arus_3 * 30.0) / 1024.0;
//input = analogRead(A3); //analogRead function is used to recive analog data Power
vcc_1 = (input_vcc_1 * 40.0) / 1024.0;
//input = analogRead(A3); //analogRead function is used to recive analog data Power
vcc_2 = (input_vcc_2 * 40.0) / 1024.0;
//input = analogRead(A3); //analogRead function is used to recive analog data Power
vcc_3 = (input_vcc_3 * 40.0) / 1024.0;
//input = analogRead(A3); //analogRead function is used to recive analog data Power
load_1 = (input_vcc_1 * 50.0) / 1024.0;
//input = analogRead(A3); //analogRead function is used to recive analog data Power
load_2 = (input_vcc_2 * 50.0) / 1024.0;
//input = analogRead(A3); //analogRead function is used to recive analog data Power
load_3 = (input_vcc_3 * 50.0) / 1024.0;
}
// TAMPILAN MENU HOME STATUS SYSTEM
void status(){
lcd.clear();
switch(downsel){
case 0:
home();
bgProses();
delay(100);
break;
case 1:
temps();
bgProses();
delay(100);
break;
case 2:
arusflow();
bgProses();
delay(100);
break;
case 3:
voltages();
bgProses();
delay(100);
break;
case 4:
loads();
bgProses();
delay(100);
break;
case 5:
pll();
bgProses();
delay(100);
break;
}
if(digitalRead(down) == LOW){
downsel++;
if(downsel > 5){
downsel = 0;
}
delay(10);
}
if(digitalRead(up)== LOW){
downsel--;
if(downsel < 0){
downsel = 5;
}
delay(10);
}
delay(100);
}
// PEMPROSESAN PROGRAM SYSTEM
// diskripsi [ jika refledted lebih besar dari 20 maka pin 13 high dan print high reflected]
// diskripsi [ jika rf in lebih besar dari 20 maka pin 13 high dan print over drive]
// diskripsi [ jika temperatur lebih besar dari 40 maka pin 13 high dan print high temperatur]
// diskripsi [ jika arus lebih besar dari 30 maka pin 13 high dan print high arus]
// diskripsi [ jika semua status dibawah nilai maka system kemali ke normal {void loop di status saja}]
void loop() {
status();
digitalWrite(13, LOW);
while(power > 900){
digitalWrite(13,HIGH);
digitalWrite(6,HIGH);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("HIGH POWER");
delay(150);
bgProses();
if(power < 900){
digitalWrite(13, LOW);
digitalWrite(6, LOW);
return 0;
}
}
while(reflected > 17){
digitalWrite(13,HIGH);
digitalWrite(6,HIGH);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("HIGH REFL");
delay(150);
bgProses();
if(reflected < 17){
digitalWrite(13, LOW);
digitalWrite(6, LOW);
return 0;
}
}
while(rf_in > 15){
digitalWrite(13,HIGH);
digitalWrite(6,HIGH);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("OVER DRIVE");
delay(150);
bgProses();
if(rf_in < 15){
digitalWrite(13, LOW);
digitalWrite(6, LOW);
return 0;
}
}
/*while(reflected > 17){
digitalWrite(13,HIGH);
digitalWrite(6,HIGH);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("HIGH REFL");
delay(150);
bgProses();
if(reflected < 17){
digitalWrite(13, LOW);
digitalWrite(6, LOW);
return 0;
}
}
while(reflected > 17){
digitalWrite(13,HIGH);
digitalWrite(6,HIGH);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("HIGH REFL");
delay(150);
bgProses();
if(reflected < 17){
digitalWrite(13, LOW);
digitalWrite(6, LOW);
return 0;
}
}
while(reflected > 17){
digitalWrite(13,HIGH);
digitalWrite(6,HIGH);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("HIGH REFL");
delay(150);
bgProses();
if(reflected < 17){
digitalWrite(13, LOW);
digitalWrite(6, LOW);
return 0;
}
}*/
}