ช่วยแก้ อสมการให้หน่อยครับ

if ( _button_ma == true){
    if ((RefHumid <= setHumidMin)||(RefTem > setTempMax))
    {
    digitalWrite (Relay2,LOW);
    led2.on();
    }
    
    else if ((RefHumid >= setHumidMax)||(RefTem <= setTempMin))
    {
    digitalWrite (Relay2,HIGH);
    led2.off();
    }
        
    if (RefTem > setTempMax)
    {
    digitalWrite (Relay1,LOW);
    led1.on();
    }
    
    else if (RefTem <= setTempMin)
    {
    digitalWrite (Relay1,HIGH);
    led1.off();
    }

คือว่า อยากให้ Relay 2 ทำงาน เหมือนกับ Relay 1 ผลปรากฏว่า

Ex .

RefTemp > TempMax ==== Relay 1,2 (ON) 

RefTemp <= TempMin ==== Relay 1,2 (OFF)

ผลคือ ในช่วง TempMin < RefTemp >TempMax Relay 2 มัน (OFF) แล้ว ไม่เหมือน Relay 1

อยากให้มันเข้าเงื่อนไข RefTemp <= TempMin ก่อน ค่อย (OFF) ครับ

ไม่ค่อยเข้าใจคำถามเท่าไหร่

ในภาพตรงนี้ผมเข้าใจว่าเราหมายถึง Ref > TempMax ซึ่งมีในเงื่อนไขแรก แต่ที่วงแดง มันหมายถึง RefTemp > TempMin ซึ่งมันไม่มีเงื่อนไขในโค้ตที่ให้มา

ตรงนี้ถ้าอ้างอิงจาก RefTemp >TempMax Relay 2 มัน (OFF) ซึ่งเข้าเงื่อนไขแล้วมัน On ขึ้นมา ถ้าไม่มีอะไรเปลี่ยนแปลงมันดัน OFF ไปก่อนที่จะเกิดเงื่อนไข RefTem <= setTempMin

ผมก็เดาได้ไม่ยากว่า ที่ Relay 2 มัน Off เพราะ ไปเข้าเงื่อนไขนี้แทน

ภาพ

เครื่องหมาย || หมายถึง หรือ นั้นคือ ไม่ว่าจะเข้าเงื่อนไข 1 หรือ 2 Relay 2 จะ OFF

สรุปนะครับ คือความต้องการของผมคือ ถ้า Relay 1,2 (ON/OFF) พร้อมกัน
หรือ Relay 3,2 (ON/OFF) พร้อมกัน หรือ Relay 4,2 (ON/OFF) พร้อมกัน

ซึ่งอสมการของผม มันขัดแย้งกัน

ผมแก้ยังไงก็ไม่หาย

การแก้ไขไม่ยากเลยครับ prinf ค่าออกมาดูทุกตัวแล้วแทนค่าลงไปใน อสมการ ก็รู้แล้วครับ ว่ารั่วหรือผิดตรงไหน เราไม่แทนค่ามาให้ดูผมก็ ช่วยอะไรไม่ได้

แล้ว ที่วงไว้ให้ ว่าอาจมาจากจุดไหนลองเช็คหรือยังว่าเกี่ยวไหม ไม่งั้นก็ลบออกไปเลย เทสแล้วเอาผลลัพธ์ มาคุยกันครับ คำว่าแก้ไขยังไงก็ไม่หาย ไม่มี มีแต่ยังไม่ได้แก้ นะครับ

ขอบคุณครับ สำหรับคำแนะนำครับ

แก้ได้แล้วครับ คือ สาเหตุ ติดจาก เงื่อนไข หรือ (||) และ (&&) พอแก้ได้ ก็โล่งครับ ด้วยประสบการณ์อันน้อยนิด ต้องขอโทษด้วยครับ

if ( _button_ma == true){
    if ((RefTem >= setTempMax)||(RefHumid <= setHumidMin))
    {
    digitalWrite (Relay2,LOW);
    led2.on();
    }
    
    else if ((RefTem <= setTempMin)&&(RefHumid >= setHumidMax)||(RefTem >= setTempMax)&&(RefHumid >= setHumidMax))
    {
    digitalWrite (Relay2,HIGH);
    led2.off();
    }
        
    if (RefTem >= setTempMax)
    {
    digitalWrite (Relay1,LOW);
    led1.on();
    }
    
    else if (RefTem <= setTempMin)
    {
    digitalWrite (Relay1,HIGH);
    led1.off();
    }
    
    if (RefTem <= setTempMin-2 )
    {
    digitalWrite (Relay4,LOW);
    digitalWrite (Ledin,HIGH);
    led4.on();
    }
    
    else if (RefTem >= setTempMax-2)
    {
    digitalWrite (Relay4,HIGH);
    digitalWrite (Ledin,LOW);
    led4.off();
    }
    
   if (RefHumid <= setHumidMin)
  {
    digitalWrite (Relay3,LOW);
    led3.on();
  }
  
  else if (RefHumid >= setHumidMax)
  {

    digitalWrite (Relay3,HIGH);
    led3.off();
  }
1 Likes

เยี่ยมมาครับ ติดอะไรเข้ามาถามกันได้ตลอดครับ

Happy Kung Fu GIF by DreamWorks Animation