Panyakorn
(Panyakorn Sawetbandanchai)
1
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) ครับ
Remy_Martin
(Permpol Thanapunnamas)
2
ไม่ค่อยเข้าใจคำถามเท่าไหร่
ในภาพตรงนี้ผมเข้าใจว่าเราหมายถึง Ref > TempMax
ซึ่งมีในเงื่อนไขแรก แต่ที่วงแดง มันหมายถึง RefTemp > TempMin
ซึ่งมันไม่มีเงื่อนไขในโค้ตที่ให้มา
ตรงนี้ถ้าอ้างอิงจาก RefTemp >TempMax Relay 2 มัน (OFF)
ซึ่งเข้าเงื่อนไขแล้วมัน On ขึ้นมา ถ้าไม่มีอะไรเปลี่ยนแปลงมันดัน OFF ไปก่อนที่จะเกิดเงื่อนไข RefTem <= setTempMin
ผมก็เดาได้ไม่ยากว่า ที่ Relay 2 มัน Off เพราะ ไปเข้าเงื่อนไขนี้แทน
เครื่องหมาย || หมายถึง หรือ นั้นคือ ไม่ว่าจะเข้าเงื่อนไข 1 หรือ 2 Relay 2 จะ OFF
Panyakorn
(Panyakorn Sawetbandanchai)
3
สรุปนะครับ คือความต้องการของผมคือ ถ้า Relay 1,2 (ON/OFF) พร้อมกัน
หรือ Relay 3,2 (ON/OFF) พร้อมกัน หรือ Relay 4,2 (ON/OFF) พร้อมกัน
ซึ่งอสมการของผม มันขัดแย้งกัน
ผมแก้ยังไงก็ไม่หาย
Remy_Martin
(Permpol Thanapunnamas)
4
การแก้ไขไม่ยากเลยครับ prinf ค่าออกมาดูทุกตัวแล้วแทนค่าลงไปใน อสมการ ก็รู้แล้วครับ ว่ารั่วหรือผิดตรงไหน เราไม่แทนค่ามาให้ดูผมก็ ช่วยอะไรไม่ได้
แล้ว ที่วงไว้ให้ ว่าอาจมาจากจุดไหนลองเช็คหรือยังว่าเกี่ยวไหม ไม่งั้นก็ลบออกไปเลย เทสแล้วเอาผลลัพธ์ มาคุยกันครับ คำว่าแก้ไขยังไงก็ไม่หาย ไม่มี มีแต่ยังไม่ได้แก้ นะครับ
Panyakorn
(Panyakorn Sawetbandanchai)
5
ขอบคุณครับ สำหรับคำแนะนำครับ
แก้ได้แล้วครับ คือ สาเหตุ ติดจาก เงื่อนไข หรือ (||) และ (&&) พอแก้ได้ ก็โล่งครับ ด้วยประสบการณ์อันน้อยนิด ต้องขอโทษด้วยครับ
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
Remy_Martin
(Permpol Thanapunnamas)
6
เยี่ยมมาครับ ติดอะไรเข้ามาถามกันได้ตลอดครับ