// THC ARDUINO
// HEN MAX
// LCD 16X4
// #include <LiquidCrystal.h>
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
LiquidCrystal_I2C lcd(0x27,16,2);
//
// const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
// LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
#define SCALE (4.330*50/1023)
#define THRESH 5
#define MINSET 110
#define MAXSET 150
#define ADJUST A0
#define PLASMA A1
#define UP A2
#define DOWN A3
// #define BUFSIZE 512
// #define SAMP 16
// #define DISP 1024
// unsigned int shift = 0;
// unsigned int values[BUFSIZE] = {0};
float total = 0;
// unsigned long disp = 0;
float target = 0;
float toleransi = 3;
float batasatas = 150;
float batasbawah = 50;
float range = batasatas - batasbawah;
// int diff = 0;
// int mean = 0;
// int mode = -1;
unsigned long tmp = 0;
float tmp1 = 0;
// float ftmp = 0;
// float ftmp2 = 0;
// int i = 0;
// int j = 0;
char formattedValue[5];
int brightness = 255;
// unsigned long timelimit = 0;
// unsigned long ms = 0;
void setup() {
pinMode(ADJUST, INPUT);
pinMode(PLASMA, INPUT);
pinMode(UP, OUTPUT);
pinMode(DOWN, OUTPUT);
analogReference(EXTERNAL);
analogRead(ADJUST); analogRead(PLASMA); analogRead(PLASMA); analogRead(PLASMA); analogRead(PLASMA);
lcd.begin(16, 2);
lcd.init();
lcd.backlight(); // turns on the backlight
lcd.setCursor(4, 0);
lcd.print ("BAS CNC");
lcd.setCursor(2, 1);
lcd.print ("WIN Project");
delay (2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print ("Target:");
lcd.setCursor(0, 1);
lcd.print ("Plasma:");
}
void loop() {
tmp1 = analogRead(ADJUST);
tmp = analogRead(PLASMA);
target = tmp1 * range/1023 + batasbawah;
total = tmp * SCALE;
if(target < total - toleransi){
digitalWrite(UP, 0);
digitalWrite(DOWN, 1);
}
else if (target > total + toleransi ){
digitalWrite(UP, 1);
digitalWrite(DOWN, 0);
}
else {
digitalWrite(UP, 0);
digitalWrite(DOWN, 0);
}
if(target < 10){
lcd.setCursor(8, 0);
lcd.print(0);
lcd.setCursor(9, 0);
lcd.print(00);
lcd.print(target);
lcd.print(" V");
}
else if(target < 100){
lcd.setCursor(8, 0);
lcd.print(0);
lcd.print(target);
lcd.print(" V");
}
else {
lcd.setCursor(8, 0);
lcd.print(target);
lcd.print(" V");
}
if(total < 10){
lcd.setCursor(8, 1);
lcd.print(0);
lcd.setCursor(9, 1);
lcd.print(0);
lcd.print(total);
lcd.print(" V");
}
else if(total < 100){
lcd.setCursor(8, 1);
lcd.print(0);
lcd.print(total);
lcd.print(" V");
}
else {
lcd.setCursor(8, 1);
lcd.print(total);
lcd.print(" V");
}
}