int Relay=8;
int buttonpin = 2;
unsigned long previousMillis = 0; // will store last time LED was updated
unsigned long procesTime = 0;
int checkPower = -1;
void setup() {
// put your setup code here, to run once:
pinMode (Relay, OUTPUT);
pinMode (buttonpin, INPUT);
Serial.begin(9600);
}
void loop() {
unsigned long currentMillis = millis();
checkPower = digitalRead(buttonpin);
Serial.print("checkPower=");
Serial.println(checkPower);
procesTime = (currentMillis - previousMillis)/1000;
Serial.print("procesTime=");
Serial.println(procesTime);
if ((checkPower == 1) && (procesTime >= 10) ) {//แค่ 10 วิ ยังไม่ตรง ต้องการ 2 นาที
//on
Serial.println("on");
digitalWrite (Relay, LOW); //on Relay,Send Ground to Relay
previousMillis = currentMillis; // Remember the time
}
else if ((checkPower == 0) && (procesTime >= 15)){ค่าที่ต้องการ 10 นาที
//off
Serial.println("shutdown");
digitalWrite (Relay, HIGH);
previousMillis = currentMillis;
}
}//end loop main
เคยใช้ delay(); ยิ่งหนักยิ่งไม่ตรง ช่วยหน่อยครับ
ถ้าต้องการเวลาให้ตรง แนะนำ ใช้โมดูล RTC จะถูกต้องกว่า
หรืออีกวิธีที่แนะนำ ใช้ไลบารีนี้ครับ http://playground.arduino.cc/Code/Scheduler
RTC พอจะมีตัวอย่างนับเวลาไหมครับ เอาแบบผมไม่ต้องใข้สมองมาก คำนวณเวลามาให้ แล้วผม if ได้เลย
ตัวไลบราลี่ตามลิ้งขนาด example ของมัน เอามาคอมไพยัง error
ทำแค่นี้มา 2 เดือนกว่าแล้ว ไม่คืบหน้าเลย จะให้ซื้ออะไรก็ซื้อครับ เริ่มเหนื่อยแล้ว
มีตัวอย่างแบบไม่ต้องใช้สมองมากในหน้าบทความ เช็ค if ได้เลยครับ
ซื้อแล้วนะครับ เลขที่สั่งซื้อ 39509 โอนเงิน วันที่ 7 ก.ย. 2559 เข้ากรุงไทย เวลา 07.54 น. ครับ รอครับ