เมื่อทำงานครบ10วินาทีแล้วพอผมกดสวิตซ์SW1 แล้วจะเข้าเงื่อนไขในคำสั่งif Sec >=10 ให้รีเลย์Motorทำงาน แต่กว่าจะรีเลย์Motor จะทำงานต้องรอ1วินาทีถึงจะทำงาน
สามารถทำพอกดSW1แล้วสั่งให้รีเลยMotor ทำงานได้ทันทีได้ไหมครับไม่รู้ว่างต้องแก้ตรงไหน
int Motor =9 ;
int Cluth =8;
unsigned long previousMillis = 0;
int Sec = 0;
int M=0;
int sw1=2;
const int analogInPin = A0;
int sensorValue = 0;
int outputValue = 0;
void setup() {
Serial.begin(9600);
pinMode(Motor, OUTPUT);
pinMode(Cluth, OUTPUT);
pinMode(sw1, INPUT_PULLUP);
}
void loop() {
unsigned long currentMillis = millis();
sensorValue = analogRead(analogInPin);
outputValue = map(sensorValue, 0, 1023, 0, 10);
if(currentMillis - previousMillis >= 1000){
Sec++;
if(Sec >= 10){
M++;
Sec=0;
}
if(M >= outputValue){
digitalWrite(Motor, HIGH);
}
else {
digitalWrite(Motor, LOW);
}
previousMillis = currentMillis;
}
if (digitalRead(sw1) == LOW)
{
digitalWrite(Cluth, LOW);
Sec=0;
M = 0;
}
else {
digitalWrite(Cluth,HIGH);
}
Serial.print("Minute = ");Serial.print(M);
Serial.print(" Sec = ");Serial.print(Sec);
Serial.print(" Time lavel = ");
Serial.println(outputValue);
}
ถ้าต้องการให้ทำทันที ลองดูคำสั่ง interrupt ออกแบบมาสำหรับงานนี้โดนเฉพาะ
มีแนะนำในคอร์สสอน Arduino ที่หน้าเว็บด้านบนซ้ายครับ
พอเข้าใจแต่ก็ยังงงๆอยู่ ใน void ของ interrupt สามารถใช้ตัวแปรได้ไหมครับ
if ถ้า A>=10ให้หลอดไฟติดอะไรแบบนี้