/*-------------------------------------------------------------------------------------*/
/* Program Multi Tasks ควบคุมระบบปั๊มน้ำบาดาล 1 ตัว */
/* ARDUINO UNO R3 */
/*-------------------------------------------------------------------------------------*/
#include <SPI.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4); //IC PCF8574T USE 0x27 0x3F
#include <EEPROM.h> //Library บันทึกข้อมูลลใน EEPROM มีมาพร้อม Board Arduino ไม่ต้อง Load เพิ่ม
#define EEPROM_SIZE 1024
const int led_system = 2; // กำหนดขา 2 (led_system) เป็นชนิด const int (จำนวนเต็ม คงที่)
int sw_start = 3; // กำหนดขา 3 (sw_start) เป็นชนิด int (จำนวนเต็ม)
int pump1 = 4; // กำหนดขา 4 (pump1) เป็นชนิด int (จำนวนเต็ม)
int pump2 = 5; // กำหนดขา 5 (pump2) เป็นชนิด int (จำนวนเต็ม)
int led_lowtank = 8; // กำหนดขา 8 (led_lowtank) เป็นชนิด int (จำนวนเต็ม)
int led_fulltank = 9; // กำหนดขา 9 (led_fulltank) เป็นชนิด int (จำนวนเต็ม)
int led_darin = 6;
int temp01 = A0; // กำหนดขา A0 (temp01) เป็นชนิด int (จำนวนเต็ม)
int pressure_01 = A1; // กำหนดขา A1 (pressure_01) เป็นชนิด int (จำนวนเต็ม)
const float BETA = 3950; // should match the Beta Coefficient of the thermistor
int tricker = 13; // กำหนดขา 2 (Tricker) เป็นชนิด int (จำนวนเต็ม)
int echo = 12; // กำหนดขา 3 (Echo) เป็นชนิด int (จำนวนเต็ม)
int led_untarsonic = 10; // กำหนดขา 13 (LED) เป็นชนิด int (จำนวนเต็ม)
int pizo = 11; // กำหนดขา 12 (Pizo) เป็นชนิด int (จำนวนเต็ม)
float cm = 0; // กำหนดค่า cm (เซ็นติเมตร) เป็นชนิด int (จำนวนเต็ม)และให้มีค่าเริ่มต้นที่ 0
int inch = 0; // กำหนดค่า inch (นิ้ว) เป็นชนิด int (จำนวนเต็ม)และให้มีค่าเริ่มต้นที่ 0
long distance = 0; // กำหนดค่าระยะทาง (distance) เป็นชนิด long (มีทศนิยม)
float celsius = 0;
float val_psi = 0;
float val_bar = 0;
float val_kcm = 0;
float val_kpa = 0;
unsigned long C = 0; // Continune กำหนดเวลาปัจจุบัน เป็นชนิด unsing long โดยเริ่มต้นมีค่า = 0
unsigned long P_01 = 0; // P_01 ค่าเวลาทีผ่านมา LED System Blink มีค่าเท่ากับ 0
unsigned long P_02 = 0; // P_02 ค่าเวลาทีผ่านมา NTC Temperature Sensor มีค่าเท่ากับ 0
unsigned long P_03 = 0; // P_03 ค่าเวลาทีผ่านมา Push Button ON-OFF มีค่าเท่ากับ 0
unsigned long P_04 = 0; // P_04 ค่าเวลาทีผ่านมา Untarsonic Sensor มีค่าเท่ากับ 0
unsigned long P_05 = 0; // P_05 ค่าเวลาทีผ่านมา pressure Sensor มีค่าเท่ากับ 0
unsigned long P_06 = 0; // P_06 ค่าเวลาที่ผ่านมา ON darin Water มีค่าเท่ากับ 0
unsigned long P_07 = 0; // P_07 ค่าเวลาที่ผ่านมา OFF darin Water มีค่าเท่ากับ 0
unsigned long P_08 = 0;
unsigned long P_09 = 0;
unsigned long P_10 = 0;
int state_01 = 1; // state_01 LED System Blink มีค่าเท่ากับ 1
int state_02 = 1; // state_02 NTC Temperature Sensor มีค่าเท่ากับ 1
int state_03 = 1; // state_03 Push Button ON-OFF มีค่าเท่ากับ 1
int state_04 = 1; // state_04 Untarsonic Sensor มีค่าเท่ากับ 1
int state_05 = 1; // state_05 pressure Sensor มีค่าเท่ากับ 1
int state_06 = 1; // state_06 ON darin water มีค่าเท่ากับ 1
int state_07 = 1; // state_07 OFF darin water มีค่าเท่ากับ 1
int state_08 = 1;
int state_09 = 1;
int state_10 = 1;
int flag_01 = 0; // flag_01 LED System Blink มีค่าเท่ากับ 0
int flag_02 = 0; // flag_02 NTC Temperature Sensor มีค่าเท่ากับ 0
int flag_03 = 0; // flag_03 Push Button ON-OFF มีค่าเท่ากับ 0
int flag_04 = 0; // flag_04 Untarsonic Sensor มีค่าเท่ากับ 0
int flag_05 = 0; // flag_05 pressure Sensor มีค่าเท่ากับ 0
int flag_06 = 0; // flag_06 ON drain water มีค่าเท่ากับ 0
int flag_07 = 0; // flag_07 OFF drain water มีค่าเท่ากับ 0
int flag_08 = 0;
int flag_09 = 0;
int flag_10 = 0;
int pump1_status = LOW; // กำหนดให้ pump1_stasus มีสถานะเป็น LOW
int pump2_status = LOW; // กำหนดให้ pump2_stasus มีสถานะเป็น LOW
int sw_status = LOW; // กำหนดให้ sw_stasus มีสถานะเป็น LOW
void setup() {
Serial.begin(9600);
lcd.begin(20, 4);
lcd.clear();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.display();
pinMode(led_system, OUTPUT); // กำหนดขา led_system (ขา 2) เป็นขา output; (กระพริบแสดงสถานะทำงาน CPU)
pinMode(pump1, OUTPUT); // กำหนดขา pump1 (ขา 4) เป็นขา output; (เมื่อกด sw_start ให้ pump1 ทำงาน จำลองสถานะโดยใช้ LED)
pinMode(pump2, OUTPUT); // กำหนดขา led_system (ขา 2) เป็นขา output; (กระพริบแสดงสถานะทำงาน CPU)
pinMode(temp01, INPUT); // กำหนดขา temp01 (ขา A0) เป็นขา INPUT; (รับสัญญาณ Analog จาก NTC Termisistor 10K)
pinMode(sw_start, INPUT_PULLUP); // กำหนดขา sw_start (ขา 3) เป็นขา input ชนิด pullup; (รับสัญญาณจาก sw_start)
pinMode(tricker, OUTPUT); // กำหนดขา tricker (ขา 13) เป็นขา output; (ส่งสัญญาณไป Untarsonic)
pinMode(echo, INPUT); // กำหนดงขา echco (ขา 12) เป็นขา input; (รับสัญญาณจาก Untarsonic)
pinMode(led_untarsonic, OUTPUT); // กำหนดขา led_Untarsonic (ขา 10) เป็นขา output; (แสดงสถานะปํ๊มกำลังทำงาน)
pinMode(led_lowtank, OUTPUT); // กำหนดงขา led_lowtank (ขา 8) เป็นขา output; (แสดงสถานะระดับน้ำในแท็งค์ต่ำกว่าที่กำหนด)
pinMode(led_fulltank, OUTPUT); // กำหนดงขา led_fulltank (ขา 9) เป็นขา output; (แสดงสถานะระดับน้ำในแท็งค์เต็ม)
pinMode(pizo, OUTPUT); // กำหนดงขา pizo (ขา 11) เป็นขา output; (ส่งสัญญาณแจ้งเตือนเมื่อระดับน้ำต่ำกว่าที่กำหนด)
pinMode(pressure_01, INPUT); // กำหนดงขา pressure_01 (ขา A1) เป็นขา output; (sensor แรงดัน)
pinMode(led_darin, OUTPUT); // กำหนดงขา led_darin (ขา 6) เป็นขา output; (darin ทำความสะอาดกรองทราย)
}
void loop() {
C = millis(); // ตัวแปรเก็บค่าเวลาปัจจุบัน กำหนดให้เป็น millis()
led_sys(); // เรียกใช้ Function led_sys() ไฟบอกสถานะการทำงาน (กระพริบ)
temp_x1(); // เรียกใช้ Function temp_x1() ตรวจจับอุณหภูมิ
push_start1(); // เรียกใช้ Function push_start1() ปุ่มกดติด-กดดับ START MOTOR PUMP
untarsonic(); // เรียกใช้ Function untarsonic() ตรวจจับระดับน้ำในแท็งค์
pressure_s1(); // เรียกใช้ Function pressure_01() ตรวจจับแรงดันในท่อ
display_01(); // เรียกใช้ Function LCD
}
/*-------------------------- Function System LED Brink Program ---------------------------*/
void led_sys() {
if (C - P_01 >= 200) { // ถ้าค่าของเวลาปัจุบัน (C) - เวลา P_01 มีค่ามากกว่า 200 mS ถ้าค่าเป็นจริง
P_01 = C; // ให้ค่าเวลาที่ผ่านมา (P_01) = เวลาปัจจุบัน (C)
flag_01 = 1; // ให้ flag_01 มีค่า = 1 (เปลี่ยนสถานะจาก 0 ให้เป็น 1)
if (flag_01 == 1) { // ถ้า flag_01 = 1
flag_01 = 0; // Clear flag_01 = 0
if (state_01 == 1) {
state_01 = 0; // ถ้าค่าของ state_01 = 1 ให้ Clear ค่า state_01 = 0
}
else if (state_01 == 0) {
state_01 = 1; // ถ้าค่าของ state_01 = 0 ให้ Clear ค่า state_01 = 1
}
digitalWrite(led_system, state_01);
}
}
}
/*--------------------------- Function NTC Temperature Program ----------------------------*/
/*----- Assumes a 10K@25℃ NTC thermistor connected in series with a 10K resistor. ---------*/
void temp_x1() {
if (C - P_02 >= 500) { // ถ้าค่าของเวลาปัจุบัน (C) - เวลา P_02 มีค่ามากกว่า 500 mS ถ้าค่าเป็นจริง
P_02 = C; // ให้ค่าเวลาที่ผ่านมา (P_02) = เวลาปัจจุบัน (C)
flag_02 = 1; // ให้ flag_02 มีค่า = 1 (เปลี่ยนสถานะจาก 0 ให้เป็น 1)
if (flag_02 == 1) { // ถ้า flag_02 = 1
flag_02 = 0; // Clear flag_02 = 0
if (state_02 == 1) {
state_02 == 0; // ถ้าค่าของ state_02 = 1 ให้ Clear ค่า state_02 = 0
}
else if (state_02 == 0) {
state_02 == 1; // ถ้าค่าของ state_02 = 0 ให้ Clear ค่า state_02 = 1
}
int analogValue_00 = analogRead(temp01);
celsius = 1 / (log(1 / (1023. / analogValue_00 - 1)) / BETA + 1.0 / 298.15) - 273.15;
//Serial.print("Temperature: ");
//Serial.print(celsius);
//Serial.println(" ℃");
}
}
}
/******************* Function Switch Push ON Push OFF ********************/
void push_start1() {
if (C - P_03 >= 500) { // ถ้าค่าของเวลาปัจุบัน (C) - เวลา P_03 มีค่ามากกว่า 1000 mS ถ้าค่าเป็นจริง
P_03 = C; // ให้ค่าเวลาที่ผ่านมา (P_03) = เวลาปัจจุบัน (C)
flag_03 = 1; // เให้ flag_03 มีค่า = 1 (เปลี่ยนสถานะจาก 0 ให้เป็น 1)
if (flag_03 == 1) { // ถ้า flag_03 มีค่า = 1
flag_03 = 0; // Clear flag_03 ให้กลับไปอยู่ในสถานะ = 0 ตามเดิม
if (state_03 == 1) {
state_03 = 0; // ถ้าค่าของ state_03 = 1 ให้ Clear ค่า state_03 = 0
}
else if (state_03 == 0) {
state_03 = 1; // ถ้าค่าของ state_03 = 0 ให้ Clear ค่า state_03 = 1
}
}
if (digitalRead(sw_start) == LOW) { // อ่านค่าใน sw_start ว่าเป็น LOW หรือไม่
if (pump1_status == LOW) { // ถ้ามีการกด sw_start สถานะ pump1_status = LOW
digitalWrite(pump1, HIGH); // สั่งให้ pump1 pin 4 มีค่าเป็น HIGH
pump1_status = HIGH; // และให้ pump1_status มีค่าเป็น HIGH
} else { // มิฉะนั้น
digitalWrite(pump1, LOW); // สั่งให้ pump1 pin 4 มีค่าเป็น LOW
pump1_status = LOW; // และให้ pump1_status มีค่าเป็น LOW
}
}
}
}
/********************** Function Untarsonic Sensor Watter Level *********************/
/*** เงื่อนไข ถ้าระดับน้ำอยู่ห่างจาก Sensor มากกว่า 35 cm. ให้ปั๊มเริ่มทำงาน จนถึงระดับน้ำ ***/
/*** อยู่ห่างจาก Sensor เท่ากับ 30 cm. ให้ปั๊มหยุดการทำงาน เมื่อมีการใช้น้ำ ปั๊มยังคงไม่ทำงาน ***/
/*** จนกระทั้งระดับน้ำลดง และอยู่ห่างจาก Sensor เป็นระยะทาง มากกว่า 35 cm. ปั๊มจึงจะทำงานอีกครั้ง ***/
void untarsonic() {
digitalWrite(tricker, LOW); //สั่งให้ขา tricker (ขา 2) เป็น LOW
digitalWrite(tricker, HIGH); //สั่งให้ขา tricker (ขา 2) เป็น HIGH
digitalWrite(tricker, LOW); //สั่งให้ขา tricker (ขา 2) เป็น LOW
distance = pulseIn(echo, HIGH); //รับสัญญาณ HIGH จากขา echco แล้วไปเก็บไว้ที่ duration
// เสียงเดินทางด้วยความเร็ว (ในอากาศ)
// 325.5 m/S ที่อุณหภูมิ -10C
// 325.5 m/S ที่อุณหภูมิ -5C
// 331.5 m/S ที่อุณหภูมิ 0C
// 334.5 m/S ที่อุณหภูมิ +5C
// 337.5 m/S ที่อุณหภูมิ +10C
// 340.5 m/S ที่อุณหภูมิ +15C
// 343.4 m/S ที่อุณหภูมิ +20C
// 346.3 m/S ที่อุณหภูมิ +25C
// 349.2 m/S ที่อุณหภูมิ +30C
// 352.1 m/S ที่อุณหภูมิ +35C (จากการคำนวณผลต่างของอุณหภูมิ ความเร็วจะเพิ่มขึ้น 0.58 m/S เมื่ออุณหภูมิสูงขึ้น +1C)
// 355.0 m/S ที่อุณหภูมิ +40C (จากการคำนวณผลต่างของอุณหภูมิ ความเร็วจะเพิ่มขึ้น 0.58 m/S เมื่ออุณหภูมิสูงขึ้น +1C)
// 357.9 m/S ที่อุณหภูมิ +45C (จากการคำนวณผลต่างของอุณหภูมิ ความเร็วจะเพิ่มขึ้น 0.58 m/S เมื่ออุณหภูมิสูงขึ้น +1C)
// 360.8 m/S ที่อุณหภูมิ +50C (จากการคำนวณผลต่างของอุณหภูมิ ความเร็วจะเพิ่มขึ้น 0.58 m/S เมื่ออุณหภูมิสูงขึ้น +1C)
// 363.7 m/S ที่อุณหภูมิ +55C (จากการคำนวณผลต่างของอุณหภูมิ ความเร็วจะเพิ่มขึ้น 0.58 m/S เมื่ออุณหภูมิสูงขึ้น +1C)
// 366.6 m/S ที่อุณหภูมิ +60C (จากการคำนวณผลต่างของอุณหภูมิ ความเร็วจะเพิ่มขึ้น 0.58 m/S เมื่ออุณหภูมิสูงขึ้น +1C)
cm = distance * 0.0343 / 2; //เสียงเดินทางด้วยความเร็ว 346.3 m/S ที่อุณหภูมิ 25c
inch = distance * 0.01362 / 2; //แปลงหน่วยจาก cm. เป็นinch = 0.0346/2.54
if (C - P_04 >= 1000) { // ถ้าค่าของเวลาปัจุบัน (C) - เวลา P_04 มีค่ามากกว่า 1000 mS ถ้าค่าเป็นจริง
P_04 = C; // ให้ค่าเวลาที่ผ่านมา (P_04) = เวลาปัจจุบัน (C)
flag_04 = 1; // เให้ flag_04 มีค่า = 1 (เปลี่ยนสถานะจาก 0 ให้เป็น 1)
if (flag_04 == 1) { // ถ้า flag_04 = 1
flag_04 = 0; // Clear flag_04 = 0
if (state_04 == 1) {
state_04 = 0; // ถ้าค่าของ state_04 = 1 ให้ Clear ค่า state_04 = 0
}
else if (state_04 == 0) {
state_04 = 1; // ถ้าค่าของ state_04 = 0 ให้ Clear ค่า state_04 = 1
}
if (cm < 30) { //ถ้าระยะทางที่อ่านได้มีค่าน้อยกว่า 30 cm.
digitalWrite(led_untarsonic, LOW); //สั่งให้ led_untarsonic ดับ
digitalWrite(led_fulltank, HIGH); //สั่งให้ led full tank ติดค้าง
}
if ((cm > 35) && (cm < 151)) { //ถ้าระดับน้ำอยู่ห่างจาก Sensor มีค่ามากกว่า 35 cm. และน้อยกว่า 151 ให้ปั๊มเริ่มทำงานอีกครั้ง
digitalWrite(led_untarsonic, HIGH); //สั่งให้ led_untarsonic ติด (ปั๊มเริ่มทำงานอีกครั้ง)
digitalWrite(led_fulltank, LOW); //สั่งให้ led_fulltank ดับ (แสดงสถานะว่าน้ำยังไม่เต็มแท็งค์)
}
if (cm > 151) { //ถ้าระดันน้ำอยู่ห่างจาก Sensor เป็นระยะทางมากกว่า 151 cm. (เป็นจริง)
digitalWrite(led_untarsonic, HIGH);
digitalWrite(led_lowtank, HIGH);
tone(pizo, 600, 100); //สั่งให้ pizo ทำงานด้วยความถี่ 600Hz นาน 100mS
digitalWrite(led_lowtank, LOW);
}
Serial.print("Distance : ");
Serial.print(cm);
Serial.println(" cm.");
}
}
}
/***************** Function Pressure Sensor ******************/
void pressure_s1()
{
int analogValue_01 = analogRead(pressure_01);
int spec_sensor = 60; // pressure sensor 30 psi : 4.5 v
//float val_psi;
//float val_bar;
//float val_kcm;
//float val_kpa;
/* pressure sensor (1 psi = 0.0689475729 bar = 0.070307 kg/cm2 = 6.89476 Kpa)
05 psi (0.3447378647 bar) = 0.900 v/psi
15 psi (1.034213594 bar) = 0.300 v/psi
30 psi (2.068427188 bar) = 0.150 v/psi
60 psi (4.1368 bar) = 0.075 v/psi
100 psi (6.8947572932 bar) = 0.045 v/psi
150 psi (10.34213594 bar) = 0.030 v/psi
200 psi (13.789514586 bar) = 0.023 v/psi
300 psi (20.68427188 bar) = 0.015 v/psi
500 psi (34.473786466 bar) = 0.009 v/psi
1000 psi (68.947572932 bar) = 0.0045 v/psi */
if (C - P_05 >= 500) { // ถ้าค่าของเวลาปัจุบัน (C) - เวลา P_05 มีค่ามากกว่า 500 mS ถ้าค่าเป็นจริง
P_05 = C; // ให้ค่าเวลาที่ผ่านมา (P_05) = เวลาปัจจุบัน (C)
flag_05 = 1; // ให้ flag_05 มีค่า = 1 (เปลี่ยนสถานะจาก 0 ให้เป็น 1)
if (flag_05 == 1) { // ถ้า flag_05 = 1
flag_05 = 0; // Clear flag_05 = 0
if (state_05 == 1) {
state_05 = 0; // ถ้าค่าของ state_05 = 1 ให้ Clear ค่า state_05 = 0
}
else if (state_05 == 0) {
state_05 = 1; // ถ้าค่าของ state_05 = 0 ให้ Clear ค่า state_05 = 1
}
val_psi = (analogValue_01 / (1023 / spec_sensor)); //ค่าที่อ่านได้ / (1203 / สเป็คของ Pressure Senson ? psi)
val_bar = (val_psi * 0.0689475729); // 1 psi = 0.0689475729 bar
val_kcm = (val_psi * 0.070307); // 1 psi = 0.070307 Kg/cm2
val_kpa = (val_psi * 6.89476); // 1 psi = 6.89476 Kpa
if (val_psi >= 25) { // ถ้าค่า pressure ที่อ่านได้ มีค่าเท่ากับหรือมากกว่า 25 psi 1.72 bar
/* ถ้าความดันในระบบกรองกรองทราย สูงกว่าค่าที่กำหนด ให้หน่วงเวลาก่อนเปิดระบบ Darin น้ำทิ้ง 10 วินาที */
if (C - P_06 >= 10000) { //ถ้าค่าของเวลาปัจุบัน (C) - เวลา P_06 มีค่ามากกว่า 10000 mS (10 Sec) ถ้าค่าเป็นจริง
P_06 = C; //ให้ค่าเวลาที่ผ่านมา (P_06) = เวลาปัจจุบัน (C)
flag_06 = 1; //ให้ flag_06 มีค่า = 1 (เปลี่ยนสถานะจาก 0 ให้เป็น 1)
if (flag_06 == 1) { //ถ้า flag_06 = 1
flag_06 = 0; //Clear flag_06 = 0
if (state_06 == 1) {
state_06 = 0; //ถ้าค่าของ state_06 = 1 ให้ Clear ค่า state_06 = 0
}
} else if (state_06 == 0) {
state_06 = 1; //ถ้าค่าของ state_06 = 0 ให้ Clear ค่า state_06 = 1
}
digitalWrite(pump1, HIGH); //สั่งให้ Pump1 ทำงาน เพื่อดันน้ำให้ล้าระบบกรอง
digitalWrite(led_darin, HIGH); //สั่งเปิด Solenoid valve เพื่อทำการ Darin น้ำในระบบกรองทรายทิ้ง
}
} else { //มิฉะนั้น
/* ถ้าความดันในระบบกรองกรองทราย ตำ่กว่าค่าที่กำหนด ให้หน่วงเวลาก่อนปิดระบบ Darin น้ำทิ้ง 60 วินาที */
if (C - P_07 >= 30000) { //ถ้าค่าของเวลาปัจุบัน (C) - เวลา P_06 มีค่ามากกว่า 30000 mS (30 Sec) ถ้าค่าเป็นจริง (หน่วงเวลาก่อนปิด Solinoid valve 60 วินาที (1 นาที))
P_07 = C; //ให้ค่าเวลาที่ผ่านมา (P_07) = เวลาปัจจุบัน (C)
flag_07 = 1; //ให้ flag_07 มีค่า = 1 (เปลี่ยนสถานะจาก 0 ให้เป็น 1)
if (flag_07 == 1) { //ถ้า flag_07 = 1
flag_07 = 0; //Clear flag_07 = 0
if (state_07 == 1) {
state_07 = 0; //ถ้าค่าของ state_07 = 1 ให้ Clear ค่า state_07 = 0
}
} else if (state_07 == 0) {
state_07 = 1; //ถ้าค่าของ state_07 = 0 ให้ Clear ค่า state_07 = 1
}
digitalWrite(pump1, LOW); //สั่งให้ Pump 1 หยุดการทำงาน
digitalWrite(led_darin, LOW);
} //สั่งให้ led_darin ดับ
}
}
Serial.print("Pressure : ");
Serial.print(val_psi);
Serial.print(" psi : ");
Serial.print(val_bar);
Serial.print(" bar : ");
Serial.print(val_kcm);
Serial.print(" K/cm2 : ");
Serial.print(val_kpa);
Serial.println(" Kpa");
}
}
/*---------- Function LCD --------*/
void display_01(){
if (C - P_08 >= 500) { // ถ้าค่าของเวลาปัจุบัน (C) - เวลา P_08 มีค่ามากกว่า 500 mS ถ้าค่าเป็นจริง
P_08 = C; // ให้ค่าเวลาที่ผ่านมา (P_08) = เวลาปัจจุบัน (C)
flag_08 = 1; // เให้ flag_08 มีค่า = 1 (เปลี่ยนสถานะจาก 0 ให้เป็น 1)
if (flag_08 == 1) { // ถ้า flag_08 = 1
flag_08 = 0; // Clear flag_08 = 0
if (state_08 == 1) { state_08 = 0; } // ถ้าค่าของ state_08 = 1 ให้ Clear ค่า state_08 = 0
else if (state_08 == 0) { state_08 = 1; } // ถ้าค่าของ state_08 = 0 ให้ Clear ค่า state_08 = 1
lcd.setCursor(0, 0); //Set Cursor ของ LCD ไปยังแถวที่ 1 ตำแหน่งที่ 1
lcd.print(cm); //แสดงผล counter_01
lcd.setCursor(5, 0); //Set Cursor ของ LCD ไปยังแถวที่ 1 ตำแหน่งที่ 1
lcd.print("cm "); //แสดงผล counter_01
lcd.setCursor(9, 0); //Set Cursor ของ LCD ไปยังแถวที่ 1 ตำแหน่งที่ 1
if (cm < 30) {
lcd.print("FULL TANK");
} if ((cm > 35) && (cm < 151)) {
lcd.print("PUMP WORK");
} if (cm > 151){
lcd.print("LOW TANK");
}
lcd.setCursor(0, 1); //Set Cursor ของ LCD ไปยังแถวที่ 2 ตำแหน่งที่ 1
lcd.print("Pressure : "); //แสดงผล counter_01
lcd.setCursor(11, 1); //Set Cursor ของ LCD ไปยังแถวที่ 1 ตำแหน่งที่ 1
lcd.print(val_psi);
lcd.setCursor(17, 1); //Set Cursor ของ LCD ไปยังแถวที่ 1 ตำแหน่งที่ 1
lcd.print("psi");
lcd.setCursor(0, 2); //Set Cursor ของ LCD ไปยังแถวที่ 2 ตำแหน่งที่ 1
lcd.print("Water Temp : "); //แสดงผล counter_01
lcd.setCursor(13, 2); //Set Cursor ของ LCD ไปยังแถวที่ 1 ตำแหน่งที่ 1
lcd.print(celsius);
lcd.setCursor(19, 2); //Set Cursor ของ LCD ไปยังแถวที่ 1 ตำแหน่งที่ 1
lcd.print("C");
}
}
}