ทำเครื่องรดน้ำต้นไม้อัตโนมัติ แต่อยากเปลี่ยนให้กำหนดค่าสูงสุดต่ำสุด ควรเพิ่มโค้ดตรงไหนครับ

พอดีทำเครื่องรดน้ำต้นไม้แล้ว มันรดน้ำตลอดจะหยุดก็ต่อเมื่อค่ามากกว่าหรือเท่ากับ 65 อ.เลยแนะนำว่าควรเพิ่มค่าสูงสุดต่ำสุดในการรดน้ำไป ควรแก้ไขโค้ดตรงไหนครับ
#include "DHT.h"
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); // scl = D1 , SCA = D2 ของจอlcd
#define DHTPIN D6 // ขา dht
#define DHTTYPE DHT22 //ชนิด dht
DHT dht(DHTPIN, DHTTYPE);  
int sense_Pin = 0; // ขาเซ็นเซอร์ดิน
float value = 0; // ค่าเริ่มต้น
float T   = 0 ; // ค่าที่ตั้งเริ่มต้นเท่ากับ 0
int SW1   = D7 ; // ขาสวิตซ์1
int SW2   = D8 ; // ขาสวิตซ์2
/////////ลูปเริ่มต้น////////////////////
void setup()
{
  dht.begin();
  pinMode(D3,OUTPUT) ;  // ปั๊ม
  pinMode(D4,OUTPUT) ;  // พัดลม
  pinMode(D5,OUTPUT) ;  // ไฟแสดงสถานะ
  byte tempIcon[8] = // ไอคอนปรอทอุณหภูมิ
  {
    0b00100,
    0b01010,
    0b01010,
    0b01110,
    0b01110,
    0b11111,
    0b11111,
    0b01110
  } ;
  byte humiIcon[8] = // ไอคอนหยดน้ำ
  {
    0b00100,
    0b00100,
    0b01010,
    0b01010,
    0b10001,
    0b10001,
    0b10001,  
    0b01110
  } ;
  byte gIcon[8] = // ไอคอนต้นไม้
  {
    0b01110,
    0b11111,
    0b01110,
    0b11111,
    0b01110,
    0b00100,
    0b00100,  
    0b01110
  } ;
  byte sIcon[8] = //ไอคอนลูกศร
  {
    0b00000,
    0b00100,
    0b00110,
    0b11111,
    0b00110,
    0b00100,
    0b00000,  
    0b00000
  } ;
   pinMode(SW1,INPUT) ;
   pinMode(SW2,INPUT) ;
   lcd.begin();
   lcd.createChar(1,tempIcon) ; lcd.createChar(2,humiIcon) ; lcd.createChar(3,gIcon) ; lcd.createChar(4,sIcon) ;
   /////////// หน้าเริ่มต้น /////////////
  lcd.setCursor(4,0); lcd.print("Welcome");
  lcd.setCursor(1,1); lcd.print("Soil & Weather");
  delay(4000);
  lcd.clear();
  //////////// หน้าโหลด ////////////
  lcd.setCursor(0,0); lcd.print(" LOADING... ");
  lcd.setCursor(0,1);
  for( int i=0 ; i<20 ; i++ )
   {
     lcd.print(">");
     delay(200);
   }
  lcd.clear();
  /////////////////////////////////////////////////////////////
   lcd.setCursor(0, 0);lcd.write(1) ; lcd.setCursor(6, 0);lcd.print("'C");
   lcd.setCursor(9, 0);lcd.write(2) ; lcd.setCursor(15 , 0);lcd.print("%");
   lcd.setCursor(0, 1);lcd.write(3);  
   lcd.setCursor(7, 1);lcd.write(3);lcd.setCursor(8, 1);lcd.write(4);lcd.setCursor(9, 1);lcd.print(T);
}
///////////// ฟังก์ชั่นเพิ่ม/ลด ////////////////
void upvalue()//---------------------------เข้าฟังก์ชั่นกดเพิ่ม
  {
    T=T+1; //เพิ่มทีละ1
    if(T>=100) {T=100;}
  }
void downvalue()//---------------------------เข้าฟังก์ชั่นกดลด
  {
    T=T-1; // ลดทีละ1
    if(T<=0) {T=0;}
  }
////////////////สวิตซ์////////////////////////
void swmanual()
{
  int settoup ;
  int settodown ;
  settoup = digitalRead(SW2) ;
  if(settoup == HIGH)  // ถ้าสวิตซ์ 2 ถูกกด
  {
    //delay(300) ;
    upvalue() ; // ไปที่ฟังก์ชั่นกดเพิ่ม
    lcd.setCursor(9, 1);lcd.print(T); // แสดงค่าที่เพิ่ม
  }
  settodown = digitalRead(SW1) ;
  if(settodown == HIGH) // ถ้าสวิตซ์ 1 ถูกกด
  {
    //delay(300) ;
    downvalue() ; // ไปที่ฟังก์ชั่นกดลด
    lcd.setCursor(9, 1);lcd.print(T); // แสดงค่าที่ลด
  }
}
//--------------------------------------------------------
/////////ลูปหลัก/////////////////////
void loop()
{
  float b = dht.readHumidity();
  float a = dht.readTemperature();
  value= analogRead(sense_Pin);
  value = map(value, 0, 1023, 0, 100);  // กำหนดให้ค่าอยู่ 0 - 100
  lcd.setCursor(1, 1);lcd.print(value); // แสดงค่าที่อ่านจากเซ็นเซอร์ดิน
  lcd.setCursor(1,0); lcd.print(a) ;    // แสดงค่าอุณหถูมิที่อ่านจากเซ็นเซอร์dht
  lcd.setCursor(10,0); lcd.print(b) ;   // แสดงค่าความชื้นที่อ่านจากเซ็นเซอร์dht
  delay(300);
  swmanual() ; // ให้ฟังก์ชั่นสวิตซ์ทำงานวนลูปหลัก
  if(value<T-3) // ค่าเซ็นเซอร์น้อยกว่าค่าที่ตั้ง - 3
  {
    digitalWrite(D3,HIGH) ; // ปั๊มไม่ทำงาน
    digitalWrite(D4,LOW) ; // พัดลมทำงาน
    digitalWrite(D5,HIGH) ; //ไฟสถานะกระพริบ
    delay(500) ;           //
    digitalWrite(D5,LOW) ; //
  }
   if(value>T+3) // ค่าเซ็นเซอร์มากกว่าค่าที่ตั้ง + 3
  {
    digitalWrite(D3,LOW) ; // ปั๊มทำงาน
    digitalWrite(D4,HIGH) ; // พัดลมไม่ทำงาน
    if(value>T)
    {
    digitalWrite(D5,HIGH) ;//ไฟสถานะกระพริบ
    delay(500) ;           //
    digitalWrite(D5,LOW) ;  //
    }
  
  }
  if(value==T) // ค่าเซ็นเซอร์เท่ากับค่าที่ตั้ง
  {
    digitalWrite(D3,HIGH) ; // ปั๊มไม่ทำงาน
    digitalWrite(D4,HIGH) ; // พัดลมไม่ทำงาน
    digitalWrite(D5,HIGH) ; // ไฟสถานะติดค้าง
  }

}
คำตอบที่ได้รับเลือกจากเจ้าของกระทู้
ความคิดเห็นที่ 1
หรือแบบตั้งเวลาก็ได้ครับ
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่